Migration troubleshooting

This section regroups the problems you can encounter when you migrate a b2box to a different version.

Warning

This guide is not complete, so contact the R&D team if something goes wrong during the migration.

Version < 5.14.0 to version >= 5.14.0

Authentication settings

When the Authentication Tokens adapter was removed, the authentication settings to b2auth has changed.

You need now to associate the b2auth@amalto.com user to the instance and with the organisation’s root.

Otherwise, you’ll have the following error:

Authentication error

For more information, read the Authentication settings section.

Tables migration

During the migration, an error can happen when the Cross-ref adapter is converted into the Tables service. This error comes from a communication issue between the Tables and Data models services.

You’ll see an error message in the logs.

2018-04-06 09:52:26,699 ERROR [com.amalto.service.tables.TablesService] (Service Deploy Manager (platform6.tables)) com.amalto.b2box.core.api.B2boxException: Unexpected exception while sending a common message to platform6.datamodels!  (TablesService.scala:99)

You’ll find out once the b2box is running again, that there are no items in the Tables service. But keep calm, none of your cross-ref items has been lost!

A JIRA ticket was opened for the case. So until the problem is resolved, you’ll just need to restart the b2box after the migration and you’ll see all the tables in the data grid.

Version >= 5.14.0 to version 5.18.1

Bundled resources migration

The properties of the bundled resource item have changed.

Therefore, before you migrate:

  1. Check with a stored procedure that there are some bundled resources.

    SELECT * FROM b2head.serviceconfig WHERE id3 = 'bundledresources';
    
  2. If the result is not empty, delete all the existing bundled resources.

    DELETE FROM b2head.serviceconfig WHERE id3 = 'bundledresources';
    

If you forget to delete them, you’ll have the following error message in the logs.

Note

This error is minor and will not affect the b2box’s operation.

2018-06-28 11:54:24,819 ERROR [com.amalto.b2box.core.impl.servicecomponent.configuration.ServiceConfigurationItem] (WrapperSimpleAppMain) Internal Error, failed de-serializing service item from JSON! (ServiceConfigurationItem.java:36)
com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "content" (class com.amalto.service.applications.models.BundledResourcesItem), not marked as ignorable (15 known properties: "enabled", "attachmentSize", "deployed", "name", "lastModifiedDate", "attachmentName", "props", "targetRoot", "hasBytesAttachment", "lastModifiedBy", "description", "appKey", "revisionId", "contentMode", "targetPath"])
 at [Source: {"name": "MyTestResource", "props": {"prop1": "value1", "prop2": "value2"}, "appKey": "", "content": "VGhpcyBpcyBhIHRlc3QgZmlsZSByZXNvdXJjZSBjb250ZW50", "deployed": false, "revisionId": "9bc913d9e0ce0d2b94de9a487312f9ff", "targetPath": "/webapps", "targetRoot": "${B2BOX_DATA}", "contentMode": "READ", "description": {"EN": "A Test Resource"}, "lastModifiedBy": null, "lastModifiedDate": null}; line: 1, column: 103] (through reference chain: com.amalto.service.applications.models.BundledResourcesItem["content"])

2018-06-28 11:54:24,822 ERROR [com.amalto.b2box.core.impl.servicecomponent.AbstractServiceComponent] (WrapperSimpleAppMain) Failed initialising service component: #error# (AbstractServiceComponent.java:384)
com.amalto.b2box.core.api.B2boxException: Internal Error, failed de-serializing service item from JSON!

Version < 5.18.1 to version >= 5.18.1

Before the migration

Clean the database

It is possible before this release that your Platform 6 instance’s database is full of zombies service items.

To migrate successfully the counters and the frames, it is advised to clear the database table b2head.serviceconfig from any item which property id3 is equal to counters or frames.

Below you’ll find the adequate SQL query:

DELETE FROM b2head.serviceconfig WHERE id3 = 'counters' OR id3 = 'frames';

Format the frames

For each frame (in the Home menu entry), update the Id property such that it has the same value than the Name (you might need to check that your home configurations still display the frame).

Ensure also that all the frames names are unique.

Migration errors

During the migration, an error can happen when the Counters web app is converted into the Counters service. This error is coming from a communication issue between the Counters and Routes services.

You’ll see an error message in the logs.

Unexpected error migrating the old adapter counters! Unable to create the route deployment script for counters migration! Unexpected exception while sending a common message to platform6.routes! Service: platform6.routes Request Exception!
{
  "message" : "java.lang.NullPointerException",
  "stackTrace" : [
    "java.lang.NullPointerException",
    "    at com.amalto.service.routes.RoutesService.notifyRequestMessage(RoutesService.java:150)",
    "    at com.amalto.b2box.core.impl.servicecomponent.AbstractServiceComponent.onCommonMessage(AbstractServiceComponent.java:704)",
    "    at com.amalto.b2box.core.impl.platform.messagebus.BusQueueController$ServiceQueueRunner.run(BusQueueController.java:183)",
    "    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)",
    "    at java.util.concurrent.FutureTask.run(FutureTask.java:266)",
    "    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)",
    "    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)",
    "    at java.lang.Thread.run(Thread.java:745)"
  ]
}

You’ll find out once the b2box is running again, that the route which schedules all the counters has not been created. Until the problem is resolved, you’ll just need after the migration to delete all the counters and restart the b2box. Then you should see the new route, named CounterScheduling, in the Routes service UI.

After the migration

Update the permissions

The permissions have changed for:

  • Home Pages:

    • the permissions feature is no longer home but homepages.
    • the permission home=configure became homepages=edit.
  • Work items:

    • to allow access to the work items, you need to have in addition of workflow=read the permission workflowsteps=read.

Update the routes

Since the workflow feature’s name has changed into workflowsteps, you’ll need to update all the routes calling the Workflow Steps service.

Therefore, this route:

from('direct:p6router.WFTest').to( 'p6route://workflow')

becomes:

from('direct:p6router.WFTest').to( 'p6route://workflowsteps')