Mosaic products documentation: Concepts, API Reference, Technical articles, How-to, Downloads and tools

Release Notes

The list below shows the latest releases and the respective features/improvements to Axinom Mosaic.

R71 (May 23, 2023)

This release contains the following changes:

General

  • With this release we upgraded the media-template to the latest LTS version of Node.js (version 18) and upgraded several other dependencies to newer versions, including the piral packages. (see this PR for more details)

  • We rolled back our usage of the importmaps feature, as we were experiencing some issues with the way it is handling peerDependencies. We will re-introduce it in the future when the issues are resolved. For now we recommend to not make use of this feature in your own Pilets.

Managed Services

  • deleted${EntityName}NodeId fields are deprecated from Delete${EntityName}Payload` graphql schema types for most Managed Mosaic services. They were always returning null before and not used. These fields will be completely dropped in the future.

  • Encoding Service: Added a mute button for the video player on the cue point management station. Also improving the error messages in case the playback fails because of invalid DRM configurations.

  • Channel Service: Improved error messaging when adding invalid program entities to a playlist.

Libraries

  • @axinom/mosaic-ui:

    • Added a new optional property horizontalColumnAlign?: 'left' | 'center' | 'right' to the Column definitions used in List and Explorer components now allows for defining varying alignment options for each column.

    • The result argument of createUpdateGQLFragmentGenerator does now also support querying of nested fields.

    • We upgraded our Storybook to the latest version of Storybook. The stories now include more control options, making stories even more interactive. They now also display the TypeScript type annotations of the component props giving more information about the components directly inside Storybook.

    • Better disabled styles and focus indicators for different form elements.

    • Fixed an issue where station message bodies were displayed below the station content.

  • @axinom/mosaic-portal:

    • Extended the PiletApi with a new method: getDataHelper. It helps to retrieve data from Portal data store set by other pilets/workflows using setData. Unlike the already existing getData, this method waits for the data to be set if not available immediately and then executes the callback passing in the data as argument. It’s a wrapper around the getData method that makes it easier to avoid race conditions when using setData and getData in different workflows.

  • @axinom/mosaic-e2e-page-model:

    • Selectors to support e2e tests for toast notifications added. Toast message selectors are available in page model under uiShell.notifications` property.

R69 (April 26, 2023)

Among various small improvements and fixes, this release brings the following note-worthy changes:

General

  • With this release we upgraded Piral to version 0.15.8.

    This change is backward compatible for Pilets built with older versions of Piral.

    However with the upgrade we also started to make use of importmaps for our managed Pilets to allow for quicker loading times of the management systems. Because of this change, the managed pilets will make them stop working when using older versions of @axinom/mosaic-portal as emulator during development time.

    No worries, this is only affecting the development time. When the Pilet is published through the Micro Frontend Service it will always run using the latest version of mosaic-portal.

    To make the managed workflows working again on development time, please update the devDependencies for @axinom/mosaic-portal in your workflow(s) to the latest version.

    Note
    It is recommended to always update the version of @axinom/mosaic-portal frequently to minimize differences between development- and production-runtime.
    From now on, the @axinom/mosaic-portal will also warn you during development time if you’re using an old version of the emulator.
  • Added the helmet middleware to all services for increased security.

    We don’t expect any impact on applications caused by these changes. If you still encounter some issues, please let us know.

Managed Services

  • User Service: When you update to the latest version of @axinom/mosaic-user-auth library, it will be possible to receive more granular response codes than before during Sign In errors, so that your FE application can provide more meaningful error messages.

  • Encoding Service: Adding support for PerScene encoding mode, for smaller video output file sizes while maintaining quality.

  • Channel Service: Many fixes and smaller improvements on the channel management workflows.

Libraries

  • @axinom/mosaic-ui:

    • Introducing a new filter type: FilterTypes.SearcheableOptions. This filter consist of a text input where a user can enter search values and a list of options that match the query.This can be used to make filters with many options (potentially asynchronously loaded) more user friendly.

    • Visual improvements for SelectionExplorer.

    • Some fixes for better support of Safari browsers.

R68 (April 10, 2023)

Among various small improvements and fixes, this release brings the following note-worthy changes:

Introducing Channel Service

With this release we’re introducing the latest addition to our managed Service - the Channel Service.

This service is designed to give you the ability to create and manage your own channels and curate playlists for these channels. You can add your existing VOD entities from e.g. your media service to the playlists, optionally define ad breaks using the cue-points and publish them to allow them to be consumed by services that will power e.g. a Free ad-based streaming TV (FAST) experience for your end users.

R68 channel playlist

More information about the service can be found in the Channel Service documentation.

Managed Services

  • Added a toggle to the admin portal settings of the Encoding Service to enable or disable the Video Preview for Cue Points feature. This feature is enabled by default but it allows to opt-out from the feature in case video playback management system is not possible or intended in your use case.

  • Fixed a bug in Hosting Service where the RabbitMQ Connection details station in the Admin Portal would show incorrect hostname. The correct values are displayed now.

Media Template

  • Added a main video filter for Movie/Episode Explorers, allowing to filter out entities that do not have a main video assigned. (#54)

  • Added a DEMO_MODE to the encoding service, which allows to skip the webhook secret validation. This is useful for demo purposes and is not recommended for production use. (#50)

  • Improved the speed of the test:reset:dbs scripts (#48)

Libraries

  • Added a CSS class with the environmentId prefixed with env- to the management portal body element, allowing environment-specific CSS rules. This is useful to make the portal look different for different environments, e.g. to make it more obvious that you are (not) in production.

  • Added a new extension to the Management Portal shell to allow the registration and usage of RouteResolvers. Workflows can register resolvers for specific routes that other workflows can then use to resolve the route. This is useful for workflows that need to navigate to a route that is not known to them, but is known to another workflow. This is for example used on the new Channel Service to create the links to the detail pages of the entities inside a playlist which are not known to the playlist workflow but are provided by the media workflows. The new methods allow to registerRouteResolver, getAllRouteResolvers or invoke a certain resolver by using resolveRoute.

  • Bulk actions triggered by an Explorer component will now trigger a toast notification when the action is started and another one in case that the backend returns an error. This will help the user to understand if the action was successful or not.

  • Fixed a bug in @axinom/lib-id-guard where the JWKS caches were not always used. This would result in making more calls than needed to fetch the public RSA keys when executing GQL requests.

Frontend Samples

  • We’ve added more scenarios for the Mosaic FE Samples application. These new scenarios will showcase how to use the Mosaic Billing Service with the Stripe payment connector.

    You can checkout the source over here or play around with the live demo over here.

Stripe Payment Connector

  • The payment connector service will no longer use ENV vars for supplying redirect URLs that are used during the payment flows, and instead will use those that are configured in your Billing Service admin area.

    You can see the change over here.

R67 (March 21, 2023)

Among various small improvements and fixes, this release brings the following note-worthy changes:

Managed Services

  • We added a video player to the cue point management station of our Encoding Service, to allow editing cue points very conveniently by picking the timing directly from the video itself.

    R67 cuepoint video player

    This feature will work out of the box for non-DRM protected videos, which are stored on a publicly accessible storage.

    If your videos are DRM protected or the manifest is not accessible directly through the storage URL, you can use the Admin Portal to configure the “Manifest” and “Entitlement” Webhooks we introduced in R65.

    The Manifest webhook can be used to instruct the Management System the correct URL that should be used to playback the video.

    The Management System uses the Entitlement webhook whenever a DRM protected video should be played. The webhook should validate the request and return an entitlement token if the playback is permitted.

    The Entitlement Service on our Media Template is already implementing both webhooks, so you can take that implementation as inspiration - or even configure your version of the entitlement service as target for these Webhooks.

  • We added the option to change and delete existing webhook configurations on our Encoding Service.

  • Fixed a bug which allowed to create a New IDP Connection in User Service for AxAuth, when the AxAuth User Store did not have a valid OAuth Client. Now there will be an exception to stop this.

Media Template

  • The entitlement message included also empty DRM keyIds when some streams were not DRM protected (e.g. subtitle or closed-caption streams). Empty keyId values are now excluded.

Frontend Samples

  • We’ve added more scenarios for the Mosaic FE Samples application.

    These new scenarios will showcase how to use the Mosaic Billing Service for managing your End User subscriptions

    You can checkout the source over here.

R65 (March 08, 2023)

Among various small improvements and fixes, this release brings the following note-worthy changes:

General

  • We added the capability to raise toast notifications to the @axinom/mosaic-portal. There are now three new methods to showNotification, updateNotification and dismissNotification which can be used to trigger toast notifications inside your workflows.

    We plan to add more usage of these (and other APIs) inside also the components coming from @axinom/mosaic-ui. So make sure you add a call to initializeUi, passing over the app object (like this), to allow the components to also leverage these features on the shell application to e.g. automatically raise toast notifications in relevant situations.

  • The RabbitMQ vhosts that are used by the customizable-services are now created with following limits. We don’t expect this to affect any of your currently running customized-services as the limits are fairly generous.

    Please contact Axinom Support if you have any special requirements in this regard.

    • max-connections = 10

    • max-queues = 150

  • Due to a change in how Postgraphile subscription lifecycle methods are executed, we’ve now updated all Postgraphile and related libraries to the latest minor version, and also released a new version of @axinom/mosaic-id-guard to handle the new approach of subscription authorization.

    The following combinations of libraries should play well together when it comes to authorizing GQL subscriptions:

    • graphile-build@4.12.2, graphile-build-pg@4.12.2, graphile-utils@4.12.2, postgraphile@4.12.4 + mosaic-id-guard@0.17.0

    • graphile-build@4.13.0, graphile-build-pg@4.13.0, graphile-utils@4.13.0, postgraphile@4.13.0 + mosaic-id-guard@0.18.0

    Action Points:

    • If you are on postgraphile@4.12.4 or below, and do not intend to upgrade it - no change is required, the existing mosaic-id-guard@0.17.0 or below would work fine with it.

    • If you are expecting to upgrade to postgraphile@4.13.0 or later, then the mosaic-id-guard library would need to be upgraded along with it to match as mentioned above.

      • You can find details about the needed change in this PR.

  • We improved the performance of row-level-security database permission checks.

    The corresponding changes on the media template were added in this PR. To manually upgrade an existing customized version based on the media template please upgrade the mosaic libraries to the latest version. Then call the util:define-func-migration scripts in all the projects to get the latest ax_define functions into the databases of each service. Then include a call to the define_authentication function into a new database migration for every protected table like: SELECT ax_define.define_authentication('<your view permissions>', '<your edit permissions>', '<table name>', 'app_public');

Managed Services

  • The Image and Encoding Service will now send an error message in case a image type or cue point type is already registered by another service. Services can now subscribe to the error message and handle it accordingly.

  • The Encoding Service now allows the configuration of two new webhooks. A Manifest webhook that should return a manifest URL to use for the video playback and an entitlement endpoint that grants an entitlement message to play back a DRM protected video. These are preparations for new features that will be released in the future, and will allow the management System to playback videos. The webhooks can be configured in the 'Encoding Service' settings inside the Admin Portal.

  • Fixed an issue in Encoding Service where the source video file extension was always set as .mp4 even for other source video file types.

  • We have improved the integration of AxAuth Service and User Service. This will now make it straightforward to pick the “User Store” you want to use from AxAuth Service when configuring the AxAuth IDP in the User Service.

    Please read more details about it here.

  • We have fixed a bug in the User Service which resulted in an exception during 'Sign In with Credentials' if the 'Allowed Proxy URLs' were not configured under User Service configuration.

  • The Billing Service exposes now the PayPal related (non-secret) settings as part fo the GraphQL API. Consuming applications can now use those values and don’t need to configure them in every application.

  • When a user subscribed to a subscription plan using the Billing Service he is redirected back from e.g. PayPal to the webpage from where he started the subscription workflow. The corresponding URLs are configured in the admin portal. When those URLs contained a GET parameter, the parameter was missing when redirecting the subscriber. This is now fixed to retain all GET parameters.

  • Fixed a bug on Hosting Service where in some intermittent situations, you receive an error 'Database already exists' when attempting to deploy a service that was previously deployed, and then undeployed.

  • We have added new scenarios to Mosaic Frontend Samples that demonstrates how to use the Image Service as well as how to subscribe to a subscription plan using the Billing & Monetization Services.

Libraries

  • The PostgraphileOptionsBuilder from @axinom/mosaic-service-common got updated:

    • the constructor parameters were moved to a dedicated function setDefaultSettings

    • the setDevProperties was dropped and replaced with setConditionalProperties to be more flexible on when to use specific properties

    • the function addConditionalPlugins was added to enable fine granular decisions which plugins should be added e.g. in a development, testing, or production area and similar. The addDevPlugins function was removed.

  • Improved the validateWebhookRequest method to support both, the raw request body and an already parsed JSON object for the webhook validation.

R63 (February 09, 2023)

This is the 1st release we’re making for the year 2023, and we’re bringing some goodies your way to make up for the long wait!

  • Revamped navigation with the new Navigation Panel

    • We’ve introduced a new Navigation Panel into the Management System that will make it faster to find what you’re looking for in less steps.

    • You can read more details about the Navigation Panel over here.

  • Deploy Mosaic Media Template via the Hosting Service

    • We’ve extended the Hosting Service to be capable of provisioning necessary infrastructure and deploying customizable services from Mosaic Media Template to your environments.

    • You can read more details about deploying customizable services over here.

R60 (December 16, 2022)

  • With this release we remove the support for the deprecated messages mentioned in R55. If you didn’t update your solution yet, please find the instructions below.

  • The VideoStream data type on the encoding service was added to describe all the video, audio, subtitle, and closed caption streams within a video. These stream objects are providing detailed information about the different representations of the encoded video. Please note that these values may only get filled for newly encoded videos.

  • Introducing an improved breadcrumb in the management system as well as the admin portal, making better use of the available space and also visually more light-weight:

    R60 new breadcrumb
  • We reduced the bundle size of @axinom/mosaic-ui by ~35% which should result in better loading times of the management system. We will continue looking into improving loading times in future releases.

  • Various other improvements, fixes and preparations for future features.

  • Release 60 of Mosaic Media Template

R58 (November 28, 2022)

  • Various improvements, fixes and preparations for future features.

  • Release 58 of Mosaic Media Template.

R56 (October 25, 2022)

  • Introducing improved ways to handle errors in Mosaic services. More details can be found at Error Handling Development Guide (Basic).

  • Adding three new configuration options for Processing Profiles on Encoding Service.

    R56 new encoding processing settings

    More information about the features can be found on the information text on the station or in the Content Processing documentation.

  • The Mosaic Media Template is now available on Github

  • Various other improvements and fixes.

  • Release 56 of Mosaic Media Template.

R55 (October 12, 2022)

Action Required

With this release we aligned the names of event and command messages that are sent via the RabbitMQ message bus. We use now consistently a naming pattern of entity/task + actionable verb for commands and entity/task + past tense verb for events in all places.

Our services will be compatible with both, the old and the new event and command messages until November 14th 2022. After that date we’re planning to stop supporting messages using the old names. Please make sure to update your solution as described below until that date or let us know if this is not feasible for you.

To update your solution, please update the @axinom/mosaic-messages package to the latest version, then execute yarn and yarn build from the solution root. If this does result in some errors in your messaging implementation please adjust the following types:

Service Old Message Name New Message Name Old Settings Name New Settings Name

ID Service

SynchronizePermissionsStartCommand

SynchronizePermissionsCommand

SynchronizePermissionsStart

SynchronizePermissions

Encoding Service

EnsureVideoExistsStartCommand

EnsureVideoExistsCommand

EnsureVideoExistsStart

EnsureVideoExists

Encoding Service

ArchiveVideosStartCommand

ArchiveVideosCommand

ArchiveVideosStart

ArchiveVideos

Image Service

EnsureImageExistsStartCommand

EnsureImageExistsCommand

EnsureImageExistsStart

EnsureImageExists

Image Service

ImagesArchivedEvent

ArchiveImagesFinishedEvent

ImagesArchived

ArchiveImagesFinished

Monetization Grants Service

SynchronizeClaimDefinitionsStartCommand

SynchronizePermissionsCommand

SynchronizeClaimDefinitionsStart

SynchronizeClaimDefinitions

Commands are accepted in a backward-compatible way and the queues to handle the commands are within our managed services. So no adjustment is required.

Events are also sent in a backward-compatible way. Some target queues were renamed to follow a consistent naming schema. Once you are done with your migration you can delete the following queues - they only exist if you subscribed to the corresponding events:

  • ID Service based event queues:

    • synchronize_permissions.finished

    • synchronize_permissions.failed

    • user.deleted

    • user_role.deleted

  • Encoding Service based event queues:

    • ensure_video_exists.start

    • archive_videos.start

    • ensure_video_exists.already_existed

    • ensure_video_exists.creation_started

    • ensure_video_exists.failed

    • archive_videos.finish

  • Image Service based event queues:

    • ensure_image_exists.start

    • image.archive

    • ensure_image_exists.already_existed

    • ensure_image_exists.image_created

    • ensure_image_exists.failed

    • images.archived

  • Monetization Grants Service based event queues:

    • synchronize_claim_definitions.start

    • synchronize_claim_definitions.finished

    • synchronize_claim_definitions.failed

R54 (September 22, 2022)

  • Mosaic Media Template R54 is published

  • The Encoding Service was upgraded to support Cue point management, including a first simple management workflow.

R53 (September 06, 2022)

  • Mosaic Media Template R53 is published

  • The Hosting Service receives the alpha version of service-deployment support for early adopters.

R52 (August 24, 2022)

  • Mosaic Media Template R52 is published

  • We have now published a new open-source repository that will give best practices for FE developers who plan on integrating with Mosaic Services. More details of the Mosaic Frontend Samples can be found here

R51 (August 11, 2022)

  • Mosaic Media Template R51 is published

  • The mosaic-ui library was updated to provide support for Explorer stations to use GraphQL Subscriptions for identifying dirty states. Now when you are viewing data on an Explorer station, and if some of that displayed data is mutated by another user, the Explorer station will show a notification to the user indicating the displayed data maybe stale and a refresh maybe required.

    • This logic is currently implemented on Image & Video explorers.

R50 (August 01, 2022)

  • Mosaic Media Template R50 is published

  • The Encoding Service now has the ability to configure content acquisition and publishing profiles with AWS S3 as well. Earlier it only supported Azure storage accounts.

  • Similar to above feature, the Image Service also now supports configuring acquisition profiles with AWS S3.

R48 (July 19, 2022)

  • Mosaic Media Template R48 is published

  • Improved loading times of the Management System by distributing the micro-frontend Pilets to be served via object-storages rather than by the service. This should significantly improve the waiting time of the CMS initial load.

R47 (June 20, 2022)

  • Mosaic Media Template R47 is published

  • Preliminary support to use the User Service on native devices (i.e. Android) was added. Current mosaic-user-auth was updated to work with React Native to offer this compatibility.

R46 (June 06, 2022)

  • Mosaic Media Template R46 is published

  • The Hosting Service is now promoted as a core-service. What this means is, it will always be enabled for every environment created via the Admin-Portal, and it cannot be disabled. This service will be also responsible for generating the Rabbit MQ Connections required for the customizable services, and the corresponding stations to configure them are moved under Hosting Service.

R45 (May 23, 2022)

  • Mosaic Media Template R45 is published

  • Several improvements and bug-fixes to the managed workflows were made.

    • User Role Permissions station now applies correct filters.

    • Video details station now has a re-encode action in the UI.

R44 (May 16, 2022)

  • Mosaic Media Template R44 is published

  • The Billing Service is now ready for Production usage. It supports the PayPal provider out-of-the-box, with both redirect & pop-up based flows.

  • An improvement was made for the Micro-FE Service to support publishing pilets with dynamic target URLs (build-once & deploy anywhere). This will significantly streamline build pipelines of the customized workflows, and now you do not need to rebuild the same workflow with different deployment target URLs.

R43 (April 26, 2022)

R42 (April 12, 2022)

R41 (March 29, 2022)

R40 (March 10, 2022)

  • Mosaic Media Template R40 is published

  • The Google Identity Provider used for the Management System now supports to be configured in one-click via the 'Use Built-In IDP' setting in the admin-portal.

  • The Management System received an update with new workflow stations to browse and manage End-Users created via the User Service.

R39 (February 24, 2022)

R38 (February 15, 2022)

R37 (December 17, 2021)

R33 (December 6, 2021)

R32 (November 30, 2021)

  • Mosaic Media Template R32 is published

  • User Service is available in the initial scope

  • GraphQL Subscriptions now support authentication & authorization. This support is added via the mosaic-id-guard library.