IBM already provides a set of steps to accomplish the migration. We have experimented more than once their exactitud and in this post we are happy to share our hints and best practices can- in some way- help you out to face this critical task. What is reported in this article is the result of what we have done for a real migration.

Assumptions

  • Best case: WCS on version 7 FEP8 or version 8
  • If you are on version 7 <FEP8, the suggestion is to migrate to FEP8 and than to version 9
  • You don’t need to migrate also EJBs and Transactional server customizations: good news is, they can work as they are (but, to take some of the advantages of the version 9, you should think about their migration to JPA and xC).

The migration plan

In a nutshell, the plan is the following (development oriented):

  1. Migrate the security easy – well documented
  2. Migrate the configuration files medium – it can create doubts about the proper way to do it
  3. Migrate the Store web project medium –  it is error prone task since manual changes are needed
  4. Migrate Management Center complex – for the same nature of CMC
  5. Migrate the Physical Service Data Object easy – well documented
  6. Migrate the Extension Logic and custom projects easy – well documented
  7. (Optional) Migrate to xC and JPA complex – for the impact and the same customization complexity
For an average WCS platform (+7 FEP8) the migration of the toolkit (and so the code) can be considered a few weeks task.

Below we provide details of specific subtask which are not so evident in the Knowledge Center. In particular our attention will be focused on “Migrate the Store web project” and “Migrate Management Center”.

Migrate the Store web project

All services use HTTPS

<FrontEndAssetStore>/Common/EnvironmentSetup.jspf must use just

instead of

Use fn:trim () function within the <c:if test> JSP tags

The V9 logic tries to convert the string to a number before it compares them. The fn:trim () function converts strings to numbers before they are compared.

<FrontEndAssetStore>/Container/SubCategoryPageContainerWithTabs.jsp
<FrontEndAssetStore>/Container/ProductPageContainer.jsp
Widgets_701/com.ibm.commerce.store.widgets.AddressForm/AddressForm_UI.jspf
Widgets_801/com.ibm.commerce.store.widgets.AddressForm/AddressForm_UI.jspf
Widgets_701/com.ibm.commerce.store.widgets.OrganizationUserInfo/UserInfoUI/UserDetailsForm_UI.jspf
Widgets_801/com.ibm.commerce.store.widgets.OrganizationUserInfo/UserInfoUI/UserDetailsForm_UI.jspf
must use fn:trim () .

Example:

instead of

 Update the CommonJSToInclude.jspf with additional java script

<FrontEndAssetStore>/Common/CommonJSToInclude.jspf must have the following code

appended just after

Migrate struts

Struts need to be migrated to the version 2. Despite an automatic tool is provided (https://www.ibm.com/support/knowledgecenter/fr/SSZLC2_9.0.0/com.ibm.commerce.migrate.doc/code/strutsmigration.jar?view=kc), this task needs also manual changes like adding the following code to the migrated version of struts-wcs-stores-marketing-services.xml

Migrate the Management Center

The migration of CMC is pretty straight. In fact, it did not change at all on version 9. However, for the same nature of CMC the troubleshooting can be really hard and time consuming.

Coding suggestions to keep into account

V8 v9
Remove any use of this class
To execute SQL queries, remove this piece of code and use the next instruction instead:
To execute update queries, remove this piece of code and use the next instruction instead
To execute executeParameterizedQueryNoCache method, remove this piece of code and use the next instruction instead:
To execute executeParameterizedQuery method, remove this piece of code and use the next instruction instead
remove refreshCopyHelper from the code, no need to explicitly use EntityManager to make the changed JPA entity persistent. Once the transaction commit or flush operation is called, the changed data will be committed to the database. (see the reference).
remove refreshCopyHelper from the code
replace any occurrence of String “InEJBType()” by “InEntityType()” (updating all AccessBeans getters suffix)
ShippingModeAccessBean has been extended to take advantage of the WebSphere Commerce data cache. Therefore use the following code
addSitemaps method of the com.ibm.commerce.seo.commands.SitemapGenerateCmdImpl implementation SitemapGenerateCmdImpl.addSitemaps method has been renamed to zipSiteMapFiles.

and much more ….

Do not get stuck on older versions, migrate to version 9

We can help you out to lead the migration, create the new infrastructure, design the proper strategy, plan the cutover, execute it!

Do not hesitate to contact us.

Would you like to have a demo?

8 + 5 =