Skip to main content

GlobalLink Connect Cloud for CoreMedia Content Cloud v2506.0.1-1

Approving the GlobalLink Connect Cloud integration for CoreMedia Content Cloud v12.2506.0.1 along with a new feature for increasing polling frequency in initial stages of GlobalLink submissions to get updates like a (Project Director) submission ID early in the Workflow App.

Summary ๐Ÿ“‹โ€‹

  • Adapted the connector to CoreMedia Content Cloud v12.2506.0.1.

    This includes especially a migration to the new React based Workflow App in Studio-Client.

  • Settings Adjustments

    • Fixed deep merges for settings from different sources.
    • New configuration option downloadTranslationEarlyRetryDelay to increase polling frequency in early stages of a submission.
    • Retry delays can now be specified in a human-readable format (like 30m instead of 1800).

Upgrade Information ๐Ÿ†™โ€‹

  • Migration to React based Workflow App Required

    If you are upgrading from a CMCC version prior to v12.2506.0.1, please ensure that you have followed the instructions in the release note Custom Workflow API Changes (CMS-24826) to adapt your custom workflow configurations.

  • Settings instead of Map<String, Object>

    The previous representation of GlobalLink settings as Map<String, Object> has been replaced by a new interface Settings for convenient access across settings paths. Most notably, implementations of these methods require to be adapted:

    • com.coremedia.labs.translation.gcc.facade.GCExchangeFacadeProvider.getFacade
    • com.coremedia.labs.translation.gcc.facade.GCExchangeFacadeSessionProvider.openSession

    Along with typical constructors of implementations of com.coremedia.labs.translation.gcc.facade.GCExchangeFacade.

  • Settings Adjustments

    You may want to review your settings for the connector. For production use, though, all parsing is compatible to previous versions. You may want to consider using downloadTranslationEarlyRetryDelay and switching to human-readable retry delays (like 30m instead of 1800).

    Mock Settings: In case you relied on the mock connector for testing and demonstration of features, you should be aware that we dropped support for:

    • mock.error: This has been replaced by mock.scenario.

    • mock.submissionStates: This has been replaced by mock.scenario.

      If the prefabricated scenarios do not fit your needs, you need to implement your own *Scenario classes now, as the behavior configuration moved to Java classes.

Improvements โœจโ€‹

Studio-Client: Adapted to v12.2506.0.1 React Workflow Appโ€‹

Aligned the GCC integration with the replacement of the Workflow App based on ExtJS with a React based app in CMCC v12.2506.0.1.

This incorporates the changes outlined in the release note Custom Workflow API Changes (CMS-24826)

Human-Readable Retry Delaysโ€‹

Using Spring's DurationFormatterUtils for parsing retry delays, you can now use duration such as 30m instead of 1800 (interpreted as seconds) at all configuration locations. The example gcc-workflow.properties now use the new syntax.

Fix Settings Overridesโ€‹

You may know, that settings for the GlobalLink connector can come from different sources:

  • the Spring Application Context,
  • Global Settings (backed by a content item)
  • Site-Specific Settings (backed by a content item)

For custom properties that make use of nested hierarchies, the merge algorithm did not work as expected. With v2506.0.0-1 this has been fixed, so that so-called deep merges are now performed.

New Configuration downloadTranslationEarlyRetryDelayโ€‹

The new (optional) configuration option allows to increase the polling frequency for submissions in early stages (thus, prior to reaching Translate state). Its main purpose is to provide so-called Project Director Submission IDs early, which may be relevant for editors to communicate with the translation agency.

Related API Changes:

  • New Overridable Method GlobalLinkAction.adaptDelayForGeneralRetry

    The method gets information to dynamically adjust the retry delay in normal retry scenarios (thus, it is not applied on escalations). It may consider the GlobalLink settings, action parameters, the result (like a missing PD ID for DownloadFromGlobalLinkAction) or issues.

  • New API GlobalLinkAction.findRetryDelay

    For implementing adjusted retry delays in adaptDelayForGeneralRetry based on settings, a new method findRetryDelay(settings: Settings, key: String):Optional<RetryDelay> can be used.

  • New Settings API

    New classes (Settings and SettingsSource) provide consistent access to settings from merged sources (context, global settings, site-specific settings). Methods in GlobalLinkAction that previously either calculated settings on their own or received a raw Map<String, Object> map got adapted to now use this wrapper class.

  • DownloadFromGlobalLinkAction overrides adaptDelayForGeneralRetry

    The implementation makes some best guess, if more frequent polling is desirable (only if downloadTranslationEarlyRetryDelay is set).

Automatically Adapting DefaultGCExchangeFacadeContractTestโ€‹

The DefaultGCExchangeFacadeContractTest is used by CoreMedia to verify that the connector works with a given GCC version. Prior to this version, the test had hard requirements on the so-called sandboxes set up by GlobalLink, like, for example, requiring the locales en-US and de-DE to exist.

The test has been adapted to automatically adjust (as far as possible) to the available sandboxes by reading the corresponding connector configuration.

As such, you should be able to also use this test outside CoreMedia's infrastructure (for example, when approving a new GCC version or validating new connector URLs you received).

For details how to use and set up the test, please refer to the contributors section of the documentation.

The adapted test also provides options to run with different "profiles", i.e., by default it will use connection settings from .gcc.properties but also .gcc.cancelation.properties can be used to test cancelation scenarios. This is controlled via an optional parameter to annotation @GccCredentials.

Third-Party Updatesโ€‹

Maven Ecosystemโ€‹

  • Awaitility updated to 4.3.0
  • Added test-scope dependency io.github.classgraph:classgraph for scenario tests.

Minor Changes ๐Ÿงนโ€‹

Fix Conflicting Management of @jangaroo/publishโ€‹

Localize Due Date Displayโ€‹

The due date as shown in the Workflow App is now localized according to the user's locale.

Deprecation Checksโ€‹

Building the workspace will now (by default) check for deprecated API usage. To skip the check, path -DskipChecks when building. Fixed already existing deprecated API usages along the way.

Fixed Unintended Site-Specific Settings Sourceโ€‹

While the intended location for site-specific settings is Options/Settings/Translation Services relative to your site's root folder, also a path Settings/Options/Settings/Translation Services got probed. The latter was and is just meant for the global settings /Settings/Options/Settings/Translation Services. Removed the latter option as path for site-specific settings.

Adapted DefaultGCExchangeFacadeContractTestโ€‹

Enhanced the test (especially used when approving new GCC versions) to fail early on unexpected failures when trying to trigger a cancellation.

Also, adapted the test to be reusable for connector configurations that are not the same as used at the sandbox provided to CoreMedia (like different locales configured, different file types). Thus, the test should now also work outside of CoreMedia to validate the general expected API contracts the CoreMedia GlobalLink Connect integration relies on.

Key changes:

  • Introduces dynamic connector configuration awareness through ConnectorsConfig wrapper
  • Replaces hardcoded test values with configuration-driven approaches using XliffFixture
  • Adds profile-based configuration support for test-specific overrides (e.g., cancellation testing)

Behind the Scenes โš™โ€‹

Introducing Mock Scenariosโ€‹

In previous versions, the behavior of the mock facade provided a fine-grained yet complex configuration via properties like mock.error and mock.submissionStates. This has been replaced by so-called scenarios that implement specific behaviors.

Prefabricated scenarios are provided for common use cases, but you can also implement your own scenarios by implementing the Scenario interface. Find a list of ready-to-use scenarios, for example, within the default GlobalLink settings documented imported from GlobalLink.xml.

Dropped Support for Per-Workflow Mock Behaviorโ€‹

As unused during CoreMedia's regular QA and approval process, we dropped support for configuring the mock behavior per workflow process via magic string states: in workflow subjects.

If you require this behavior, you may reintroduce it by implementing a custom scenario (thus, implementing the new Scenario interface).

New Branch Modelโ€‹

Starting with v2506.0.0-1 we switched from previous Gitflow workflow using, for example, a develop/ branch to a new model, that is better aligned with maintaining multiple CMCC releases in parallel.

All release-tags will now reference commits on maintenance/* branches (unless they are eventually archived). The main branch may now contain a state that is not yet aligned with any specific CMCC version (most likely targeting the next to-be-approved version).

Introduce new GitHub Pagesโ€‹

  • GitHub Pages are deployed as static HTML pages

    We use Docusaurus to deploy our new homepage. Sources for deploying the homepage are located in folder website/. It contains the (adapted) documentation that was originally at docs/.

    For a specific version's documentation it is best to run pnpm start locally for a given tag.

  • New Section Contributors

    We separated the regular documentation for how to use or configure the connector from documentation that is relevant especially for contributors applying changes within this repository.

Enabled Dependabotโ€‹

Dependabot will now suggest updates for third-party dependencies in website/ (pnpm), .github/ (GitHub actions) and in Maven dependencies (excluding com.coremedia.* dependencies).