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:
-
On a Java application server such as IBM WebSphere Application Server or Apache Tomcat
-
In a Kubernetes or OpenShift cluster
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
-
A number of configuration and text properties have been renamed. For a complete list of the renamed properties and their new names, refer to Renamed configuration and text properties in Unblu Spark 8.
-
The default values of some configuration properties have changed. Many changes are related to the colors used in the Unblu UIs. Some of these changes are because the default value references another configuration property that’s been renamed.
For a list of the configuration properties with new default values, refer to Configuration properties with new default values.
-
The configuration property com.unblu.identifier.internalServerBaseUrl no longer defaults to the value of com.unblu.identifier.publicServerBaseUrl if it isn’t set. If you use features that use
internalServerBaseUrl
and haven’t set its value, set its value to that ofpublicServerBaseUrl
explicitly. -
A number of configuration and text properties have been removed from Unblu Spark 8. For a complete list of the dropped properties, refer to Dropped configuration and text properties.
-
When the configuration properties com.unblu.mail.smtp.global.startTlsEnable and com.unblu.mail.smtp.account.startTlsEnable are set to
true
, they enforce use of an encrypted connection to the SMTP server. As a result, the configuration propertiescom.unblu.mail.smtp.global.startTlsRequired
andcom.unblu.mail.smtp.account.startTlsRequired
are no longer needed and have been removed from Unblu Spark 8.
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:
-
The default port for SMTP defined in com.unblu.mail.smtp.account.port and com.unblu.mail.smtp.global.port is now 587.
-
The default value of com.unblu.mail.smtp.global.sslEnable and com.unblu.mail.smtp.account.sslEnable is now
false
. -
The default value of com.unblu.mail.smtp.account.startTlsEnable and com.unblu.mail.smtp.global.startTlsEnable is now
true
.
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:
-
Port 465 uses TLS directly. In Unblu, this is configured by setting com.unblu.mail.smtp.global.port to
465
, com.unblu.mail.smtp.global.startTlsEnable tofalse
, and com.unblu.mail.smtp.global.sslEnable totrue
. -
Port 587 starts an unencrypted connection and then upgrades using the
STARTTLS
command. In Unblu, this is configured by setting com.unblu.mail.smtp.global.startTlsEnable totrue
and com.unblu.mail.smtp.global.sslEnable tofalse
.
Renamed enum values
The following enum values have changed:
-
The invitation type
CONVERSATION_REQUEST
is now calledASSIGNMENT_REQUEST
. -
The activity category
LAYERS_COLLABORATION
is now calledCOLLABORATION_ON_LAYER
.
Changes related to the Unblu web API
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 theEntityId
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
-
For information on the new features in Unblu Spark 8, refer to What’s new in Unblu Spark 8