Creating a release candidate procedure

The syndication server, Atomio, can clone a syndication feed and keep a static copy.

Timing of this snapshot must be coordinated with all the affected content owners/approvers for the Authoring server to ensure they are not part way through setting syndication status on resources – i.e. their current syndicated resources on the Authoring server represent a stable state.

Prerequisites

The following prerequisites are required

  1. The syndication server must have network connectivity to the Authoring server’s syndication endpoint
  2. The syndication server must have a configured set of client credentials enabling it to read the Authoring server’s syndication endpoint, refer to Configure the syndication server to create release candidates. If FHIR security labels are in use on the Authoring server, it is necessary to grant these credentials read access to all security labels in use on resources that should be included in the snapshot.
  3. A set of client credentials with write access to the syndication server

Procedure

This process is intended for Administrators, and can be automated. Presently there is no user interface for this feature, therefore if performed manually a tool such as Postman could be used. The documentation below describes the necessary requests using cURL, which can be imported into Postman.

Get a bearer token

The following cURL command gets a bearer token from the authorisation server.cURL command to get a bearer token

curl --location --request POST 'https://authorisation-server/auth/realms/realm-name/protocol/openid-connect/token' \  --header 'Content-Type: application/x-www-form-urlencoded' \  --data-urlencode 'grant_type=client_credentials' \  --data-urlencode 'client_id=XXX' \  --data-urlencode 'client_secret=YYY'

where the following placeholders require completion for the specific installation

authorisation-server host name of the authorisation server for the solution
realm-name realm id for the solution
XXX client_id for the client credentials with appropriate access to the syndication server
YYY client_secret for the client credentials with appropriate access to the syndication server

The response will include a JSON payload similar to the followingToken response

{    "access_token": "AAA",    "expires_in": 3600,    "refresh_expires_in": 1800,    "refresh_token": "BBB",    "token_type": "bearer",    "not-before-policy": 1601356578,    "session_state": "12bd48fc-5373-410b-a016-f208fc827095",    "scope": ""}

Where “AAA” will be a long string of characters. This is the bearer token required in the next step.

Clone the Authoring server feed

The syndication server exposes a REST API call used to clone a syndication feed. This can be used to create a snapshot of the Authoring server’s syndication feed representing the approved content state in the server.

Inputs to this request are

  • the URL of the syndication feed to clone
  • the name to use to identify the new clone on the syndication server

The URL of the syndication feed to clone is the URL of the Authoring server’s syndication feed. The name used to identify the new cloned feed on the syndication server can be any name unique (not yet used) on the server. However it is useful to establish a convention which will help easily identify the release candidate feeds. A naming convention of “release-candidate-YYYYMMDDThhmm” is recommended, so for example “release-candidate-20200815T1300” to indicate a release candidate taken at 1pm on the 15th of August 2020.

Below is an example of the REST call required to create a release candidate snapshotRelease candidate creation REST request

curl --location --request POST 'https://syndication-server/feed/$clone?name=release-candidate-20200815T1300&url=https://authoring-server/synd/syndication.xml' \  --header 'Authorization: Bearer AAA

where the following placeholders require completion for the specific installation

Placeholder Required value
syndication-server host name of the syndication server
authoring-server host name of the Authoring terminology server to clone the feed from
AAA the bearer token taken from the earlier step

Release candidate creation repsonse

{  "name": "release-candidate-20200815T1300",  "url": "https://syndication-server/feed/release-candidate-20200815T1300/syndication.xml"}