Contact usRequest a demo

Migrating to Unblu Spark 8

In addition to the new features introduced with Unblu Spark 8, there are several changes that you need to be aware of when migrating from Unblu 7.

No direct migration from Unblu 6 to Unblu Spark 8

Because of the changes made to the configuration system, it isn’t possible to migrate directly from Unblu 6 to Unblu Spark 8. You must migrate to Unblu 7 first.

Search database requirement

Unblu Spark 8 requires a search database such as OpenSearch or Elasticsearch. Refer to the unblu-kubernetes-base migration checklist for information on available templates and documentation.

Support for enterprise snippet removed

Earlier versions of Unblu provided an entry point to deliver JavaScript code, referred to as the "enterprise snippet", that initialized Unblu. This entry point was primarily intended for customers with on-premises application server deployments that used the SecureFlow Manager (SFM).

The enterprise snippet and the corresponding entry point have been removed in Unblu Spark 8. Customers that still use the entry point must adapt the configuration of the SecureFlow Manager to point to the URL of the Unblu visitor.js or visitor.min.js file instead.

No support for version 3 of the Unblu mobile SDKs

Unblu Spark 8 drops support for version 3 of the Android and iOS mobile SDKs.

No support for deployment on an application server

Earlier versions of the Unblu Collaboration Server could be deployed on-premises in two different ways:

Unblu Spark 8 no longer supports deployment on a Java application server. If you want to run Unblu on-premises, you must deploy it in a cluster.

Java 21 required

Running Unblu Spark 8 in standalone mode now requires Java 21.

Changes to supported database versions

The database versions Unblu Spark 8 runs on are different from those supported by Unblu 7. Review the list of supported database versions in Compatible databases before you start migrating.

MariaDB is no longer supported.

Changes to the Floating and Embedded JavaScript APIs

There have been a number of changes to the Floating and Embedded JS APIs. Some of these changes affect how the JavaScript APIs are imported and accessed, that is, the global entry point. Others affect elements of the APIs themselves.

Changes to JavaScript imports

This change only affects you if you import the Unblu JavaScript APIs directly. If you integrate the APIs through npm, you aren’t affected by this change.

The paths to the JavaScript APIs changed in Unblu 7.37.2. However, the old paths still worked thanks to redirects.

In Unblu Spark 8, the legacy paths to the JavaScript APIs no longer work. You must update the paths to the JavaScript APIs:

  • For the Floating JS API, the new path is <unblu-server>/unblu/js-api/v8/floating/floating-api.min.js.

  • For the Embedded JS API, the new path is <unblu-server>/unblu/js-api/v8/floating/embedded-app-component.min.js.

Changes to the global object reference

The global object reference for the Floating JavaScript API has changed to window.unblu.floating.api. In Unblu 7, it was window.unblu.api.

The old object reference does not work with Unblu Spark 8.

Changes to JavaScript API elements

  • Some elements have changed, for example the ConversationInfo interface.

  • Some elements have been removed, for example the Invitation interface.

  • There are also new components that provide support for Unblu Spark 8 features.

You should review your use of the Unblu JavaScript APIs and make sure it’s compatible with version available in Unblu Spark 8.

Refer to the references of the Floating JS API and Embedded JS API for more detailed information.

Changes to redirect validation

Validating the URLs users are redirected to is an important feature that provides a minimum level of security when using Unblu. You can specify patterns to filter permissible redirect URLs with the configuration properties com.unblu.redirectFilter.black and com.unblu.redirectFilter.white. The order in which the lists are evaluated is specified in com.unblu.redirectFilter.order.

In Unblu Spark 8, the default order in which URLs are evaluated against the patterns has been reversed. The default value of com.unblu.redirectFilter.order is now WHITE_BLACK: the URL is first compared to the whitelist, then to the blacklist. URLs that pass the whitelist filter can thus still be blocked by the blacklist.

If you relied on the default value of com.unblu.redirectFilter.order for redirect validation, you must now explicitly set the property to BLACK_WHITE.

For more information, refer to Managing redirects in Unblu.

Node migration improvements

In version 7 of Unblu, onboarding, reboarding, and offboarding processes weren’t migrated if the conversation they were related to had to be migrated to a different cluster node. If a participant was in the middle of a process when their conversation was migrated to a different node, they had to restart the process. This was particularly annoying for lengthy boarding processes, possibly involving multiple bots.

In Unblu Spark 8, boarding process are migrated along with the conversation they’re related to. As a result, the following text and configuration properties are no longer needed and have been removed from the product:

  • com.unblu.conversation.lifecycle.conversationBoardingMigrationAckMessageTime

  • com.unblu.conversation.message.boardingProcessImminentMigrationAcknowledgeMessage

  • com.unblu.conversation.message.boardingProcessImminentMigrationAcknowledgeButton

Outbound request web API for dialog bots, external messengers, custom actions, and message interceptors

With the introduction of version 4 of the Unblu web API, dialog bots, external messengers, custom actions, and message interceptors use the outbound request mechanism (ORM) instead of webhooks.

Each request type has its own response type or types, depending on the outcome of the request. For more information, refer to the schema descriptions in the Unblu web API reference.

In the case of dialog bots, only the response type for offer events, BotBoardingOfferResponse, has a well-defined body. You can respond to all other bot dialog events with an empty JSON object {}. For more information, refer to Dialog bots.

For more information on the outbound request mechanism, refer to The outbound request mechanism (ORM).

You can still use version 3 of the Unblu web API. If you do, only chat suggestions use the outbound request mechanism.

Changes to conversation configuration inheritance

In earlier versions of Unblu, conversations received a copy of the configuration and text properties of the conversation template they were created from.

In Unblu Spark 8, you can specify whether conversations should inherit changes made to the configuration and text properties of the template they’re based on after the conversation was created.

During migration, this feature is enabled for all conversation templates. However, the feature is only applied to conversations created after migration. Conversations created before the migration aren’t affected. They retain the configuration and text properties that were copied from the template when they were created.

For more information, refer to Conversation configuration inheritance.

Migration to new configuration entities

Unblu Spark 8 introduces new configuration entities for configuration and text properties. These configuration entities are then referenced by the entities that use the configuration. If two entities have the same configuration, they can reference the same configuration entity.

When you migrate from Unblu 7 to Unblu Spark 8, the new configuration entities are migrated and created dynamically in the background. There’s no additional step in the migration.

For more information, refer to New configuration entities.

Changes to file uploads

Unblu 7 uploaded files with the content type multiform/data. Unblu 8 uses the content type application/octetstream instead.

If you have a web application firewall (WAF) rule in place to divert file uploads to another application, such as an antivirus scanner, that rule will no longer work with Unblu 8. Instead, you must implement and configure a file interceptor to process the uploaded file and return the result to Unblu Spark.

For more information on file interceptors, refer to File interceptors.

Changes to configuration and text properties

To log how the configuration properties are migrated, set com.unblu.logging.level.com.unblu.core.server.core.storage.configuration.ConfigurationObjectServiceHelper to TRACE.

Changes to SMTP defaults

In Unblu Spark 8, the default values for configuration properties related to SMTP have changed:

These changes have been put in place to make sure that the default values don’t make it impossible for Unblu to send outgoing emails. Most SMTP providers implement the following concept:

Renamed enum values

The following enum values have changed:

  • The invitation type CONVERSATION_REQUEST is now called ASSIGNMENT_REQUEST.

  • The activity category LAYERS_COLLABORATION is now called COLLABORATION_ON_LAYER.

Changes to the web API client

  • The client generated by Unblu is now based on Jersey version 3.x. Unblu 8 no longer supports Jersey 2.x.

  • The type of the expand parameter is now List<ExpandFields>, not String.

Changes to web API endpoints

Unblu Spark 8 includes version 4 of the Unblu web API.

You can continue to use version 3 of the web API with Unblu Spark 8. The changes described here are relevant when you choose to migrate to version 4 of the Unblu web API.

Compared to version 3, a number of endpoints have changed. The following version 3 endpoints have been removed from version 4 of the web API:

  • /accounts/isAccountNameAvailable

  • /addresses/* (all endpoints in the /addresses path have been removed)

  • /authenticator/changePassword

  • /authenticator/changePasswordAgainstPolicy

  • /authenticator/checkSuperAdminPasswordFile

  • /authenticator/getAuthenticatedUserDisplayName

  • /authenticator/getAuthenticatedUserName

  • /authenticator/getCompactUser

  • /authenticator/getUserId

  • /authenticator/getUserPermissions

  • /authenticator/getUserRole

  • /authenticator/isAuthenticated

  • /authenticator/isRegisteredUser

  • /authenticator/isSUperAdmin

  • /authenticator/sendPasswordResetMail

  • /authenticator/setNewPassword

  • /availability/isAgentAvailable

  • /avatars/create

  • /bots/acceptDialogOffer

  • /bots/declineDialogOffer

  • /cannedresponses/getCannedResponsesAvailableForChat

  • /cannedresponses/getWritableConfigurationScopes

  • /cannedresponses/getWritableConfigurationScopesAvailableForChat

  • /contacts/* (all endpoints in the /contacts path have been removed)

  • /conversationhistory/searchMessages

  • /domains/getAccountDomainsAsString

  • /fileinterceptors/validateMimeTypeRegex

  • /messageinterceptors/approveMessage

  • /messageinterceptors/rejectMessage

  • /services/* (all endpoints in the /services path have been removed)

  • /teams/getByParentId

  • /teams/getChildTeamIds

  • /teams/getTeamOfCurrentUser

  • /teams/teamIsChildOfOtherTeam

  • /users/doesUserLoginExist

  • /users/isSuperUser

  • /users/isUsernameAvailable

  • /users/updateWithPassword

  • /webhookcalllogs/* (all endpoints in the /webhookcalllogs path have been removed)

The following version 3 endpoints have been replaced in version 4 of the web API:

  • /accountsecrets/getCurrentAccountSecret has been replaced by /accounts/{accountId}/getAccountSecret.

  • /apikeys/getDefaultForAccountId has been replaced by /apikeys/getDefault.

  • /call/ endpoints have been replaced by endpoints with the same name in the /calls/ path.

  • /conversationhistory/getRecordedMinutes has been replaced by /accounts/getRecordedMinutes and /global/getRecordedMinutes.

  • /externalmessengers/pingCustomChannel has been replaced by /externalmessengers/sendPing.

  • /persons/searchByState has been replaced by /persons/searchAgentsByState and /persons/searchVisitorsByState

  • /suggestionsources/pingOutboundEndpoint has been replaced by /suggestionsources/{suggestionSourceId}/sendPing.

  • /users/createUserWithRandomPassword has been replaced by /users/createWithRandomPassword.

    The password generated is no longer part of the response.

  • /users/userHasPassword has been replaced by /users/{userId}/hasPassword.

  • /users/updateAndRemovePassword has been replaced by /users/{userId}/removePassword.

  • /users/updatePassword has been replaced by /users/{userId}/setPassword.

  • /users/updateUserWithRandomPassword has been replaced by /users/{userId}/setRandomPassword.

  • All /*/getQuotaUsage endpoints have been replaced by /accounts/getQuotaUsage which lets you specify the entity—​the API key or domain, for example—​that you’re interested in.

  • All //pingWebhook endpoints have been replaced. The new endpoints include the EntityId in the path, //{EntityId}/sendPing. For example, /bots/pingWebhook has been replaced by /bots/{dialogBotId}/sendPing.

For more detailed information, including about the differences between old and new endpoints, refer to the Unblu web API reference.

Changes to webhooks

In addition to the changes outlined above that result from the introduction of the outbound request mechanism, in v4 of the web API, the webhook person.state_change has been superseded by separate webhooks for visitors and agents. The new webhooks are visitor_person_state.changed and agent_person_state.changed, respectively.

The webhook person.state_change is no longer available in v4 of the web API. You can, however, still use it with v3 of the web API.

See also