AriWeissman
Director of UX
Director of UX

Managing Publishing Settings

Overview

This article will cover how to manage publishing settings. The features to do this can be accessed by clicking on the Settings app in the app panel, and then Publishing.
Screen Shot 2022-04-15 at 1.02.29 PM.png

SFTP and FTPS Exporters

Listing Page

Screen Shot 2022-04-18 at 3.01.46 PM.png

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:

  1. See and edit the detail for a particular exporter by clicking on the exporter name
  2. 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

Screen Shot 2022-04-19 at 10.18.24 AM.png

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 SettingsFTP 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 ServerAdd 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:
  • AES256
  • aws:kms
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 StorageScreen Shot 2022-05-18 at 1.07.53 PM.png

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.

publishing-package-utf8.JPG

Webhooks and HTTP Exporters

Add HTTP ServerAdd 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:
  • GET
  • POST
Result Encoding Pick from one of the supported values:
  • Ignore:
  • XML fields:
  • URL encoded:
  • http_result field:

Publishing Package

Package Listing View

Screen Shot 2022-04-19 at 3.09.12 PM.png

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

Screen Shot 2022-04-15 at 2.11.47 PM.png

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 PackageExample 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.

Labels (1)

Have an idea

Have an idea to improve DXM?

Let us know !

Submit an idea

Can't find what you are looking for?

Find Answers

Search our DXM Forum to find answers to questions asked by other DXM users.

Ask a Question

No luck? Ask a question. Our Product and Support teams are monitoring the Forum and typically respond within 48 hours.

Ask a Question