SFTP and FTPS Exporters
Listing Page
Navigating to Settings> Publishing > Export Publishing Servers will show you the exporters landing page where you can see a list of all the defined file transfer exporters and key information on each one, in particular the hostname.
You can:
- See and edit the detail for a particular exporter by clicking on the exporter name
- Add a new exporter by clicking the "Add SFTP Server" button
DXM supports the following:
- S3 (Amazon Simple Storage Service)
- SFTP (file transfer over SSH)
- Google Cloud Storage
|
Detail Page
Field |
Description |
Name |
A descriptive name or label for this server. |
Hostname |
The hostname or IP address of the server. |
Username |
The username to authenticate with the server. |
Password |
The password associated with the username. |
Root Path |
The directory to change to once the connection has been established. |
Use SFTP |
If this checkbox is ticked, an SFTP connection will be established and used for file transfer. If this checkbox is not ticked, an FTP connection will be used. NOTE: FTP connections are no longer supported by DXM as our secure network infrastructure does not allow FTP traffic to exit our VPC. |
Active Mode |
This feature is no longer used. |
Safe Write |
This feature is no longer used. |
Display trace information |
If checked, detailed trace information will be shown when you use the Test Connection feature |
Certificate |
Choose one from a list of pre-registered, SSH keys (certificate) to use for authentication with the server. |
Test Connection |
Launches a test of the connection setup covering all of the features and permissions that the CMS will need. |
FTPS Support
If you need to use FTPS are the transfer mechanism, y ou will need to configure the server as follows:
- Hostname: prefix the hostname or IP address with ftps://
- Use SFTP: unchecked
SFTP Imports
Read more about Setting up SFTP Imports.
FTP Mounts
FTP Mounts Settings
The FTP Mounts view is a tool that allows you to choose one of the pre-configured SFTP/FTPS exporter configurations, and be presented with a navigable view of the target server starting from the root folder defined in the exporter configuration.
Possible actions:
- Navigate into directories by clicking on their label
- Navigate to a parent directory by clicking on the breadcrumbs at the fop of the file listing
- Right-click on individual files to access an option to download the file to your local computer
S3 Exporter
Add an S3 Server
Similar to the SFTP exporter configuration views, you can view a listing page of S3 connectors and access a view to edit or add a new S3 exporter. Although there are services that support the S3 protocol, you can only add AWS S3 configurations.
Field |
Description |
Name |
A descriptive name or label for this server. |
Region |
Select one of the known AWS regions. |
Access Key |
The access key that AWS provide you with for connection to the bucket. |
Secret Key |
The secret key associated with the access key you provide. |
Root Path |
The file prefix that will be used for content uploaded to S3. S3 does not support the notion of directories per se, but you can set S3 up so that it recognises key name prefixes and delimiters as a naming fragment. |
Bucket Name |
S3 bucket name. |
Server Side Encryption |
Pick from one of the server-side encryption options:
|
Storage Class |
Pick from one of the storage classes:
- Standard
- Standard Infrequent Access
- Reduced Redundancy
|
Test Connection |
Launches a test of the connection setup covering all of the features and permissions that the CMS will need.
|
Google Cloud Storage
Field |
Description |
Name |
Name of the Google Cloud Storage configuration in DXM. This is the only value not provided by Google Cloud. |
Bucket Name |
Name of the Google Cloud Storage bucket. |
Root Path |
Root path of Google Cloud Storage server. |
Google Account Type |
Type of Google Account authentication. |
Project Id |
Unique identifier of the project. |
Private Key Id |
Unique identifier for the private key. |
Private Key |
Used to compute a digital signature that may be verified by the corresponding public key. |
Client Email |
Email account associated with the client. |
Client Id |
A unique identifier for a browser-device pair that helps Google Analytics link user actions on a site.
|
Auth Uri |
Authentication URI.
|
Token Uri |
The URI of the access token from the Google Authorization Server.
|
Auth Provider X509 Cert Url |
The URL of the public x509 certificate, user to verify JWTs signed by the auth provider.
|
Client X509 Cert Url |
The URL of the public x509 certificate, used to verify JWTs signed by the client.
|
UTF-8 Encoding for Publishing Packages
Publishing packages allow for UTF-8 encoding for published files. If you used unicode in the asset content in the past, we previously encoded it with HTML Entities that would then make it very difficult to search for the asset, among other actions. By selecting the "UTF8 Encoding" option in the "Settings / Publishing / Packages" area, assets are no longer published with HTML Entities and and utilize UTF-8 characters instead. You may need to add a meta tag to the HTML activate this. Please note: this is per package.
Webhooks and HTTP Exporters
Add HTTP Server
The CMS does provide for an "exporter" based on HTTP. However, unlike the SFTP/FTPS and S3 exporters, the HTTP exporter does not actual transfer files. Instead, the HTTP exporter is a way to send an HTTP request to an endpoint that you provide. This is commonly referred to as a webhook.
In the Export HTTP views, you can see the list of configured webhooks and add or edit new webhooks.
This feature does not support HTTPS at the moment.
|
Field |
Description |
Name |
A descriptive name or label for this exporter. |
URL |
The full URL to the webhook you want to make a request to. |
Username |
The BasicAuth username to use for authentication. |
Password |
The BasicAuth password for the user above. |
Cookie |
A list of cookie values as they would be provided by a browser using the COOKIE header. Multiple values can be specified, separated by a semi-colon: name=value; name2=value2; name3=value3 for example. |
Timeout |
A duration in seconds to wait for a response from the webhook. |
Method |
Pick from one of the supported HTTP request methods:
|
Result Encoding |
Pick from one of the supported values:
- Ignore:
- XML fields:
- URL encoded:
- http_result field:
|
Publishing Package
Package Listing View
The packages listing view shows you all of the configured publishing packages and allows you to edit existing packages and create new ones. Note: you can clone an existing package by hovering over the package name to reveal the action buttons on the right side.
Package detail view
The publishing package detail view brings together a number of publishing configurations items, such as exporters and connectors. This means that the configuration items can be shared between packages, commonly the case with SFTP/FTPS exporters.
It is strongly recommended that Search G2 connectors are not shared.
|
One of the key configuration elements is setting up the publishing event listeners. We will cover this in the next section. The other fields are:
Field |
Description |
Name |
A descriptive name or label for this package. |
Enabled |
Use this checkbox to specify whether the package should be used or not. |
UTF-8 Encoding |
Check this box to ensure content and filenames are provided in UTF-8. |
Include in Analytics |
Check this box to indicate that this package (and therefore host domain) should be included in Crownpeak Analytics dashboards. Checking this box will result in additional tracking code being inserted into published content to support this feature. |
Hostname |
The hostname that content published using this package can be accessed using. This is the hostname that will appear in the default asset URLs when using the Asset.GetLink method. |
HTTPS Domain |
Check this box to indicate that full URLs for content published using this package will be HTTPS-based rather than HTTP. |
Additional Hostname |
A list of additional hostnames that the published content may be accessed from. This information is only used for Crownpeak Analytics dashboards to ensure events are attributed correctly. See Include in Analytics above. |
File Path |
Any additional path information that will be appended to the root path provided by the SFTP/FTPS exporters. |
Add New Publishing Server |
A list of SFTP, FTPS and S3 exporters that the package will use to deliver files. If you are delivering content to a cluster of servers under a single domain, a common load-balanced configuration, you should specify each server in the cluster here. |
DQM Connector |
Pick from one of the pre-configured DQM connector configurations. You will also need to supply the DQM Website ID. |
DQM Website ID |
The unique website ID. You can find this ID in the DQM portal under Admin > System Management. |
HTTP Server |
Select ONE webhook (HTTP exporter) that will be triggered for each file published. |
Search G2 Server |
Select ONE of the pre-configurated Search G2 connectors. |
Publishing Package and Workflow Steps
Publishing is triggered as a result of changes in the workflow step associated with an asset, i.e draft to stage, stage to live, and even live to live. If the workflow step is marked as being a "publishing state", then on entry to the workflow step, publishing events are generated and delivered to each package listed in the asset's publishing properties.
When the publishing package receives the publishing event, it will look at the package configuration to determine whether to trigger:
- publishing: output generation and subsequent delivery of the output to the listed exporters
- unpublishing: removal of resources previously published by the package.
This determination depends on whether the package has the workflow and workflow step listed or not. Here is an example of a DEV publishing package:
Example DEV Publishing Package
Why does the package list multiple workflow steps? In particular, why would the package responsible for publishing to the dev environment list workflow steps for stage and live?
The key to understanding this is recognizing that the workflow and workflow step being listed results in publishing; the absence of the workflow and workflow step results in unpublishing.
Example 1
Let 's consider an example where we have three packages, and each is configured to only publish to the corresponding workflow state:
Package |
Workflow |
Workflow Step |
Publishing State |
site-dev |
Basic Workflow |
Dev |
Dev |
site-stage |
Basic Workflow |
Stage |
Stage |
site-live |
Basic Workflow |
Live |
Live |
Workflow Step |
Draft |
Dev |
Stage |
Live |
Retired |
Publishing step? |
Y |
Y |
Y |
Y |
Y |
Publishing action for each package: |
site-dev |
╳ |
⇧ |
╳ |
╳ |
╳ |
site-stage |
╳ |
╳ |
⇧ |
╳ |
╳ |
site-live |
╳ |
╳ |
╳ |
⇧ |
╳ |
⇧ = publish; ╳ = unpublish |
In this scenario, content appears to move from one environment to the next. However, one significant problem with this set up is that the environments before Live don't have or keep a copy of the content.
Example 2
In this example we set up each package to also publish if content enters a later workflow step.
Package |
Workflow |
Workflow Step |
Publishing State |
site-dev |
Basic Workflow |
Dev |
Dev |
Basic Workflow |
Stage |
Dev |
Basic Workflow |
Live |
Dev |
site-stage |
Basic Workflow |
Stage |
Stage |
Basic Workflow |
Live |
Stage |
site-live |
Basic Workflow |
Live |
Live |
Workflow Step |
Draft |
Dev |
Stage |
Live |
Retired |
Publishing step? |
Y |
Y |
Y |
Y |
Y |
Publishing action for each package: |
site-dev |
╳ |
⇧ |
⇧ |
⇧ |
╳ |
site-stage |
╳ |
╳ |
⇧ |
⇧ |
╳ |
site-live |
╳ |
╳ |
╳ |
⇧ |
╳ |
⇧ = publish; ╳ = unpublish |
In this scenario, content appears to be copied from one environment to the next. When content is in the Live workflow step, the same content can be viewed in the Dev and Stage environments too.
This does introduce another problem: what if there is template code that looks at the workflow state to determine which site configuration to use? When the site-dev package determines that it should publish content when content enters the Live workflow step, it shouldn't use the Live configuration.
To resolve this, the publishing package configuration provides the publish state property that can be set for each workflow step configuration. This is the value that will be provided in the template code as the property OutputContext.PublishingStatus. This property should be used if you need to make any output decisions based on workflow / publishing status.