Upgrading to 2024.2

If you have upgraded to version 2024.2, please check this page : https://crossmedia.atlassian.net/wiki/x/FAABuQ

2024.2 patches

Those 2 plugins must be restored on the application instead of the one provided in the NAR.

 

 

Analytics events

For events logged by the /api/wedia/analytics/log/event API, it is now necessary to register the configuration name in the logEventConfiguratioNamesAuthorized parameter of the WXM_BO_Options plugin.

Importing metadata value lists into wedia-config

This version includes a new feature that lets you import lists of values via Excel files.

This feature is currently only supported for :

  • lists (no tree or thesaurus)

  • structures without relational fields (child, childmultiple, collections...)

The basic principle is to use a template that can be exported, modified in Excel and imported. This template must be respected so that the file is not rejected::

  • fields required by the structure are always considered mandatory

  • by default, all columns present in the template must be present during import.

  • you can enable the import of non-mandatory field columns

    • through the WXM_RESTAPI plugin parameter metadataImportRequiresAllFields

    • the import_metadata_not_all_mandatory tag (structure), which indicates that you don't want all fields to be mandatory, despite the plugin parameter

    • by tag (structure) import_metadata_all_mandatory which indicates that you want all fields to be mandatory despite the plugin parameter

  • column selection is based on these rules :

    • if the field is editable

    • some field types are excluded (technical fields, non-importable types, etc.)

    • if the field is not editable, it can still be included using the import_metadata_include tag

    • if the field is editable, it can be excluded using the import_metadata_exclude tag
      If the field is mandatory, the list will not be considered importable.

  • file acceptance supports a certain degree of flexibility

    • the first line containing data is always considered the header line

    • the position of columns in the file can be modified, as long as the header labels are respected
      the labels are exported in the active language of the requester

    • columns can be added, as long as the title does not correspond to a column exported in the template

Integration of DeepL into the engine

Enabled and configure the translation function DeepL in the engine parameters.

image-20240425-081352.png
  • Deepl Translation is not activated by default (in WXM_BO_Options), please reach out to your account manager to activate it.

  • Enter an API key only if you are not using the WEDIA key

  • If you activate the use of a glossary, the default name used is the company name configured above. You can specify a different name, using the same syntax as the WXM_DEEPL plugin.

Strict and flexible modes

Translation DeepL is controlled by language code (ISO-639-1 alpha2, possibly extended by country variant ISO-3166-1 alpha2). The integration adapts the case and separator (either a dash - or an underlined blank _). We also convert codes in query parameters to codes accepted by DeepL whenever possible. For example :

The conversion rules are simple:

  • in general, we just take the language code ( for fr_CA, so fr )

  • except for the following target languages

    • en_GB, converted to EN-GB

    • en_xx and en, converted to EN-US

    • pt_BR, to be converted into PT-BR

    • pt_xx and pt to PT-PT

When requesting a translation, we check whether the source language (text language to be translated) and target languages (languages to be translated into) are supported by DeepL. If one of the language codes is not supported, we don't call on DeepL.

There are two test modes (configurable in motor parameters).

  1. Strict mode: the code parameter of the translation request is directly tested

    • for example, if we request a translation in fr_CA, as this code is not managed by DeepL, the translation request is not sent to DeepL

    • for example, if you request a translation in fr, this code being managed by DeepL, the request is sent to DeepL

    • A hard rule has been added: for a translation into EN code, the request is still sent to DeepL, despite the fact that this code is not supported by DeepL, by converting it into EN-US, as it is common practice to manage the English language using the en code, without varying the country.

  2. Flexible mode: the code in parameter to the translation request is first converted before being tested

    • for example, if you request a translation in fr_CA, the code is converted to FR, a code supported by DeepL, so the request goes through DeepL (even though it doesn't support fr_CA).

    • for example, if you request a translation in en_NZ (New Zealand English), the code is converted to EN-US (see rules above), so this translation request is sent to DeepL anyway (although DeepL doesn't support New Zealand English).

 

Portal

 

cf: https://crossmedia.atlassian.net/browse/WXM-15988

The links can be added in menu via configuration to give an access point to wanted feature and pages.

See Main Menu | Adding links in the sidebar menu for more details.

 

Structures changes

collaborativespace

Fields changes

  • itemsapprovals (added) // allows to save last used approval sequence in a collaborative space

    • Type: text

    • Nature:

    • Label:

    • Default value:

    • Order: 1800

    • Remote name:

    • Max size: 0

    • Attachment:

    • In list:

    • Editable: false

    • Viewable: false

    • Mandatory: false

    • Null if empty: false

    • Auto carriage return: false

    • Index: Not indexed

    • i18n: false

    • i18n for:

    • Tags: json, rest_api_exclude

Tags

Removed

  • rest_api_etag // The tag created data inconsistency issues


massimportitem

Fields changes

  • blurhash

    • Tags:

      • Added: rest_api_include/massimport // make the content of this field available in REST endpoints

  • approvers (added) // Allows to store users for which we are waiting for approval

    • Type: childmultilngdb

    • Nature: user

    • Label:

    • Default value:

    • Order: 6700

    • Remote name:

    • Max size: 0

    • Attachment:

    • In list:

    • Editable: false

    • Viewable: false

    • Mandatory: false

    • Null if empty: false

    • Auto carriage return: false

    • Index: Not indexed

    • i18n: false

    • i18n for:

    • Tags: rest_api_create_not_required, rest_api_include/massimport

  • approvalstate (added) // Allows to store the current state of an approval

    • Type: text

    • Nature:

    • Label:

    • Default value:

    • Order: 6800

    • Remote name:

    • Max size: 0

    • Attachment:

    • In list:

    • Editable: false

    • Viewable: false

    • Mandatory: false

    • Null if empty: false

    • Auto carriage return: false

    • Index: Not indexed

    • i18n: false

    • i18n for:

    • Tags: json, rest_api_dam_readonly, rest_api_include/massimport, restapi_json

  • approvalhash (added) // Allows to quickly identify assets that are sharing the same process

    • Type: data

    • Nature:

    • Label:

    • Default value:

    • Order: 6900

    • Remote name:

    • Max size: 0

    • Attachment:

    • In list:

    • Editable: false

    • Viewable: false

    • Mandatory: false

    • Null if empty: false

    • Auto carriage return: false

    • Index: Not indexed

    • i18n: false

    • i18n for:

    • Tags:


userregistration

Fields changes

  • owner

    • Nature:
      userregistration --> user // BUGFIX


activated

Tags

Added

  • pkg/security/secugroup/view // Allows to easily add child activated filters in BO without security issues

 

Instances changes

pkgroletemplate

pkgroletemplate/997

  • Added view rights on objectdata/activated

  • Added retrievecaption rights on objectdata/role

  • Added retrievecaption rights on objectdata/user

{ "objectdata": { // ... "activated": { // ← ADDED "view": { "custom": false, "enabled": false, "permissions": [ "$anystatus/$anyowner" ] } }, // ... "role": { // ... "retrievecaption": { // ← ADDED "custom": false, "enabled": false, "permissions": [ "$anystatus/$anyowner" ] } }, // ... "user": { "retrievecaption": { // ← ADDED "custom": false, "enabled": false, "permissions": [ "$anystatus/$anyowner" ] }, } } }

pkgroletemplate/998

  • Added view rights on objectdata/activated

  • Added retrievecaption rights on objectdata/role

  • Added retrievecaption rights on objectdata/user

  • Added update permissions on objects of family dam.import implementing wkfmassimportitem workflow (massimportitem in other words)

{ "objectdata": { // ... "activated": { // ← ADDED "view": { "custom": false, "enabled": false, "permissions": [ "$anystatus/$anyowner" ] } }, "role": { // ... "retrievecaption": { // ← ADDED "custom": false, "enabled": false, "permissions": [ "$anystatus/$anyowner" ] } }, // ... "user": { "retrievecaption": { // ← ADDED "custom": false, "enabled": false, "permissions": [ "$anystatus/$anyowner" ] }, } "@dam.import~wkfmassimportitem": { // ... "update": { "custom": false, "enabled": true, "permissions": [ "$anystatus/$selfowner", "$anystatus/$teamleader", "$anystatus/$teammember" // ← ADDED ] } }, "@dam.import~wkfmassimportjob": { "update": { "custom": false, "enabled": true, "permissions": [ "$anystatus/$selfowner", "$anystatus/$teamleader", "$anystatus/$teammember" // ← ADDED ] } } } }

pkgroletemplate/999

  • Added view rights on objectdata/activated

  • Added retrievecaption rights on objectdata/role

  • Added retrievecaption rights on objectdata/user

{ "objectdata": { // ... "activated": { // ← ADDED "view": { "custom": false, "enabled": false, "permissions": [ "$anystatus/$anyowner" ] } }, // ... "role": { // ← ADDED "retrievecaption": { "custom": false, "enabled": false, "permissions": [ "$anystatus/$anyowner" ] } }, // ... "user": { "retrievecaption": { // ← ADDED "custom": false, "enabled": false, "permissions": [ "$anystatus/$anyowner" ] }, } } }