Technical Articles
Things to consider – Migration to SAP Commerce Cloud 2211
SAP Commerce Cloud 2211 got release November,2022 and still under Continuous innovation. There are already patches on (so far 3rd patch 2211.3 as of today). I would like to share simple steps to migrate to Commerce 2211 with our experience of migration and challenges we faced.
The very first thing to note that Commerce cloud 2211 version is cloud only version. If there is any customer in On-prem with prior version but would like to upgrade commerce to 2211, the commerce cloud needs to be upgraded to Cloud first, then only the commerce engine could be upgraded to 2211 version else, customer can upgrade till the last On-prem version 2205 (till date announced by SAP) considering the EMM is May 31, 2024. You can refer the Supported releases here.
You can find all defined steps to upgrade Commerce cloud platform from 2205 to 2211 here at SAP support portal
A. Software required / Software compatibility:
- Search Engines:
SAP Commerce Cloud Version | Current Update Releases | Supported Solr Versions |
2211 | 2211.2 | 8.11.2 |
2211.1 | 8.11.2 | |
2211.0 | 8.11.2 |
*SAP Commerce Cloud supports the latest patch version of SAP Commerce cloud and the Solr version that is shipped with it. But you want to be with specific solr version, you can do the same through manifest.json file
- Node.js : SAP Commerce Cloud supports 14, 16 & 18 Node.js versions
- SAP Commerce Cloud 2211 requires JDK 17 or later. It is fully compatible with SAP Machine 17
B. tomcat.generaloptions:
We often update tomcat general properties, if you have prior version tomcat.general properties overridden in your local.properties, please make sure, you get the same OOTB from platform/project.properties and append as needed. There was a large drop in JDK 14 with the removal of the Concurrent Mark Sweep (CMS) garbage collector. All those CMS collectors* (CMSInitiatingOccupancyFraction, CMSClassUnloadingEnabled, UseCMSInitiatingOccupancyOnly etc.) was deprecated in JDK 9 and was removed in JDK 14. As SAP Commerce cloud is on JDK 17, you need to remove all of those from your local.properties on tomcat.generaloptions.
It’s recommended to get the tomcat.generaloptions property details as OOTB under platform/project.properties and append properties as needed **.
*You can find those CMS collector removal details
** You can find more details on garbage collection here
C. OpenAPI 3.0 upgrade:
SAP Commerce cloud 2211 supports OpenAPI 3.0 and you need to consider compatibilities associated with it. You need to migrate your webservices and occ/occaddon extensions. Please be remembered, you need to update each webservice and occ services considering OpenApi changes as well as swagger-annotations to newer version 2.2.2***.
***You can find all those OpenApi, swagger compatible annotations here
D. XML Schema validator issue accessExternalSchema’ is not recognized
Property ‘http://javax.xml.XMLConstants/property/accessExternalSchema’ is not recognized
You can find a KBA on SAP site on the same at 3292249 but it shares areas to look to resolve the issue.
The issue occurs due to external jar( xerces) dependency. The accessExternalSchema is defined in JAXP 1.5 but Apache xerces does not support it anymore.
We did the follow things to resolve the issue
- Removeall direct and indirect dependencies on the Xerces library (xerces**.jar) dependency so that default Xerces implementation bundled with the JRE 17 will be in effect
- Modifyfew codes base as we were using xerces for Base64 encrytion and decryption for SSO
*There is another option to set system properties javax.xml.parsers.DocumentBuilderFactory to use the internal JAXP DocumentBuilder but we couldn’t make it well
E. Missing CatalogVersion _boconfig’: CatalogVersion with catalogId ‘_boconfig’ and version ‘hidden’ not found
You can resolve this issue by running following.
ant importImpex -Dresource=(Absolute path like C:\**\**\}\hybris\bin\modules\backoffice-framework\backoffice\resources\impex\essentialdataMediaCatalog.impex
Updated on 10th April, 2023
F: Disable console log in local for Slf4jAuditableActionHandler DB_AUDIT
I would like to share another important point on local set up. You might see there will be lot of log regarding “Slf4jAuditableActionHandler DB_AUDIT” and it may cause issue while debugging your local changes as this log will be all over the console.
You can disable the log in local if you want through following:
Log into HAC and then navigate
page
add this “de.hybris.platform.audit.actions.impl.Slf4jAuditableActionHandler” for “Effective Level” as “OFF”.
Once it is done, you will not see those logs related to “[Slf4jAuditableActionHandler] DB_AUDIT” any more in your local console.
Hope it helps you to accelerate your upgrade to the latest SAP Commerce cloud version 2211.
Stay tuned for more updates on 2211 upgrade. 🙂
If you have any feedback or suggestions, please feel free to add a comment below.
Small notes:
"got release November,2023"
Should be November, 2022
Thank you very much, it was a typo. I just updated.
Thanks Abhijit
sharing update on encryption api updated to avoid the issue "XML Schema validator issue accessExternalSchema’ is not recognized' mentioned under "D" . As we removed xerces jar dependency, we had to update our encryption api accordingly. We had used Base64 encryption from org.apache.xerces.impl.dv.util.Base64, and we replaced it with org.apache.commons.codec.binary.Base64 encryption api.
We used Algorithm as "AES' and encode and decode api as follows. This is a sample but not full code ........
encryptedPswd64 = org.apache.commons.codec.binary.Base64.encodeBase64URLSafeString(encryptedByteValue);
byte[] encryptedByteValue = org.apache.commons.codec.binary.Base64.decodeBase64(encryptedString);
Please let me know if you have any further questions.
Thank you,
Abhijit
Thanks Abhijit.. This was so helpful
In order to integrate to Google Analytics 4, please tell me your solution will be backwards compatible to Commerce Cloud Versions from 2022. (ie 2205 or 2211)
Hello Mike,
I need to check on this.
Regards,
Abhijit Das
Hi Abhijith, Could you please clarify on EOMM for on prem 2205 . Is it 31st May 2024 or 31st July 2026 . There are 2 documentation on
Commerce Cloud Releases - https://help.sap.com/docs/SAP_COMMERCE_CLOUD_PUBLIC_CLOUD/12be4ac419604b01aabb1adeb2c4c8a2/1c6c687ad0ed4964bb43d409818d23a2.html
Commerce Releases - https://help.sap.com/docs/SAP_COMMERCE/c5613bd3cc9942efb74d017b40eb0892/1c6c687ad0ed4964bb43d409818d23a2.html
Which suggests there will be only Security & Maintenance Bug Fixes, but no feature updates on the On Prem
Hello AWG Development Team,
As per discussion with SAP in one of our customer project, we came to know about EOMM while upgrading from 2105 to 2211 version as we started upgrade within two months of 2211 release and we're sure for cloud only version of 2205 and that is May 31, 2024 but for on Premise you might have to check with SAP Commerce support team. I suspect the On premise version support having extended EOMM as 2205 is that last on Prep version but you can check with SAP support team as I said before
Regards,
Abhijit
Hi Abhijit,
Very helpful article.
Thanks
Hi Abhijit,
I have downloaded CXCOMCLD221100P_1-70007431.ZIP but here the swagger jar is older one 1.5.* if i am not wrong. I added latest swagger jar 2.2.2 and resolved all custom api annotations accordingly. But while building all platform related classes can not compiled because its compatible with older version only.
Can you suggest which patch version shall i go with.
Thanks
Hello Anand,
I have currently following version in my local and I do not see any issue to build for Swagger 2.2.*. Please let me know your issue details, you can send me error message, I will check.
Thank you,
Abhijit
How to disable/hide system update and initialize from Hybris Administration Console?
-> In order to view the system update and initialize menu in hybris administration console.
we need to add the below properties in properties file and redeploy with the latest build.
endpoint.hac.platform.update.disabled=false -> This enables the update menu.
endpoint.hac.platform.init.disabled=false -> This enables the init menu.