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
downloadTranslationEarlyRetryDelayto increase polling frequency in early stages of a submission. - Retry delays can now be specified in a human-readable format
(like
30minstead of1800).
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 interfaceSettingsfor convenient access across settings paths. Most notably, implementations of these methods require to be adapted:com.coremedia.labs.translation.gcc.facade.GCExchangeFacadeProvider.getFacadecom.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
downloadTranslationEarlyRetryDelayand switching to human-readable retry delays (like30minstead of1800).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 bymock.scenario. -
mock.submissionStates: This has been replaced bymock.scenario.If the prefabricated scenarios do not fit your needs, you need to implement your own
*Scenarioclasses 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.adaptDelayForGeneralRetryThe 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.findRetryDelayFor implementing adjusted retry delays in
adaptDelayForGeneralRetrybased on settings, a new methodfindRetryDelay(settings: Settings, key: String):Optional<RetryDelay>can be used. -
New
SettingsAPINew classes (
SettingsandSettingsSource) provide consistent access to settings from merged sources (context, global settings, site-specific settings). Methods inGlobalLinkActionthat previously either calculated settings on their own or received a rawMap<String, Object>map got adapted to now use this wrapper class. -
DownloadFromGlobalLinkActionoverridesadaptDelayForGeneralRetryThe implementation makes some best guess, if more frequent polling is desirable (only if
downloadTranslationEarlyRetryDelayis 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:classgraphfor scenario tests.
Minor Changes ๐งนโ
Fix Conflicting Management of @jangaroo/publishโ
-
@jangaroo/publishremoved asdevDependencyAlready when switching to CMCC v12.2412.0.0 we could have removed the dependency to
@jangaroo/publishas described in the release note: 2412.0 Release Notes / Switched to pnpm workspace protocol.Removed the dependency now.
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
ConnectorsConfigwrapper - 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 atdocs/.For a specific version's documentation it is best to run
pnpm startlocally 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).