Pega Java library upgrade

Hi guys!

I need to upgrade our java library docx4j on Pega 7.1.9. I downloaded jars for docx4j 6.1.1. with all dependencies but when I installed it on Pega 7.1.9 our server had broke, Check In and Check Out operations stopped working with followed errors:

[11/27/24 14:02:27:069 FET] 00000082 SystemOut O 2024-11-27 14:02:27,069 [ WebContainer : 5] [TABTHREAD0] [BLegalLoans:01.01.01] (lipboard.DirectStreamEncoderV7) INFO XXX.XXX.XX.XXX|XXX.XX.XXX.XXX TV3V - [Encoding - Error during encode - f5zzat9qah
[11/27/24 14:02:27:070 FET] 00000082 SystemOut O 2024-11-27 14:02:27,069 [ WebContainer : 5] [TABTHREAD0] [BLegalLoans:01.01.01] ( internal.access.DatabaseImpl) ERROR XXX.XXX.XX.XXX|XXX.XX.XXX.XXX TV3V - Encountered problem when performing a Commit
java.lang.NullPointerException
at com.pega.pegarules.data.internal.clipboard.DirectStreamEncoderV7.releaseEncoder(DirectStreamEncoderV7.java:275)
at com.pega.pegarules.data.internal.clipboard.DirectStreamEncoderV7.encode(DirectStreamEncoderV7.java:494)
at com.pega.pegarules.data.internal.clipboard.StorageStreamCommonImpl.encode(StorageStreamCommonImpl.java:844)
at com.pega.pegarules.data.internal.clipboard.ClipboardPageImpl.getStreamForm(ClipboardPageImpl.java:3851)
at com.pega.pegarules.data.internal.access.PageDatabaseMapperImpl.getStreamFormOfPage(PageDatabaseMapperImpl.java:1456)
at com.pega.pegarules.data.internal.access.DatabaseImpl.preprocessInstancesBeforeCriticalCommitSection(DatabaseImpl.java:3172)
at com.pega.pegarules.data.internal.access.DatabaseImpl.attemptToProcessUpdates(DatabaseImpl.java:2650)
at com.pega.pegarules.data.internal.access.DatabaseImpl.processUpdates(DatabaseImpl.java:2322)
at com.pega.pegarules.data.internal.access.DatabaseImpl.commit(DatabaseImpl.java:2061)
at com.pegarules.generated.activity.ra_action_rmactioncheckout_c8063472296cb53617fb492d0ba62e10.step3_circum0(ra_action_rmactioncheckout_c8063472296cb53617fb492d0ba62e10.java:437)
at com.pegarules.generated.activity.ra_action_rmactioncheckout_c8063472296cb53617fb492d0ba62e10.perform(ra_action_rmactioncheckout_c8063472296cb53617fb492d0ba62e10.java:105)
at com.pega.pegarules.session.internal.mgmt.Executable.doActivity(Executable.java:3505)
at com.pega.pegarules.session.internal.mgmt.Executable.invokeActivity(Executable.java:10563)
at com.pegarules.generated.activity.ra_action_processrmaction_b2414ca9344c4ec0701560598b5b5aeb.step10_circum0(ra_action_processrmaction_b2414ca9344c4ec0701560598b5b5aeb.java:1117)
at com.pegarules.generated.activity.ra_action_processrmaction_b2414ca9344c4ec0701560598b5b5aeb.perform(ra_action_processrmaction_b2414ca9344c4ec0701560598b5b5aeb.java:225)
at com.pega.pegarules.session.internal.mgmt.Executable.doActivity(Executable.java:3505)
at com.pegarules.generated.activity.ra_action_pzrunactionwrapper_056ec03796d8a13802f156886066036d.step1_circum0(ra_action_pzrunactionwrapper_056ec03796d8a13802f156886066036d.java:318)
at com.pegarules.generated.activity.ra_action_pzrunactionwrapper_056ec03796d8a13802f156886066036d.perform(ra_action_pzrunactionwrapper_056ec03796d8a13802f156886066036d.java:69)
at com.pega.pegarules.session.internal.mgmt.Executable.doActivity(Executable.java:3505)
at com.pega.pegarules.session.internal.mgmt.base.ThreadRunner.runActivitiesAlt(ThreadRunner.java:646)
at com.pega.pegarules.session.internal.mgmt.PRThreadImpl.runActivitiesAlt(PRThreadImpl.java:461)
at com.pega.pegarules.session.internal.engineinterface.service.HttpAPI.runActivities(HttpAPI.java:3358)
at com.pega.pegarules.session.external.engineinterface.service.EngineAPI.processRequestInner(EngineAPI.java:385)
at sun.reflect.GeneratedMethodAccessor88.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.performTargetActionWithLock(PRSessionProviderImpl.java:1270)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:1008)
at com.pega.pegarules.session.internal.PRSessionProviderImpl.doWithRequestorLocked(PRSessionProviderImpl.java:841)
at com.pega.pegarules.session.external.engineinterface.service.EngineAPI.processRequest(EngineAPI.java:331)
at com.pega.pegarules.session.internal.engineinterface.service.HttpAPI.invoke(HttpAPI.java:852)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl._invokeEngine_privact(EngineImpl.java:315)
at com.pega.pegarules.session.internal.engineinterface.etier.impl.EngineImpl.invokeEngine(EngineImpl.java:263)
at com.pega.pegarules.session.internal.engineinterface.etier.ejb.EngineBean.invokeEngine(EngineBean.java:225)
at sun.reflect.GeneratedMethodAccessor71.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:370)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:411)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingThrowable(AppServerBridgeToPega.java:223)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingException(AppServerBridgeToPega.java:245)
at com.pega.pegarules.internal.etier.ejb.EngineBeanBoot.invokeEngine(EngineBeanBoot.java:168)
at com.pega.pegarules.internal.etier.interfaces.EJSLocalStatelessEngineBMT_f2439d86.invokeEngine(Unknown Source)
at com.pega.pegarules.priv.context.JNDIEnvironment.invokeEngineInner(JNDIEnvironment.java:278)
at com.pega.pegarules.priv.context.JNDIEnvironment.invokeEngine(JNDIEnvironment.java:223)
at com.pega.pegarules.web.impl.WebStandardImpl.makeEtierRequest(WebStandardImpl.java:574)
at com.pega.pegarules.web.impl.WebStandardImpl.doPost(WebStandardImpl.java:374)
at sun.reflect.GeneratedMethodAccessor86.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:611)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethod(PRBootstrap.java:370)
at com.pega.pegarules.internal.bootstrap.PRBootstrap.invokeMethodPropagatingThrowable(PRBootstrap.java:411)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethodPropagatingThrowable(AppServerBridgeToPega.java:223)
at com.pega.pegarules.boot.internal.extbridge.AppServerBridgeToPega.invokeMethod(AppServerBridgeToPega.java:272)
at com.pega.pegarules.internal.web.servlet.WebStandardBoot.doPost(WebStandardBoot.java:121)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:595)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1230)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:779)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:178)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters(WebAppFilterManager.java:1071)
at com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleRequest(CacheServletWrapper.java:87)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:914)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1662)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:200)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:461)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:528)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:314)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:88)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:175)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1864)

I need to upgrade our java library docx4j on Pega 7.1.9. I downloaded jars for docx4j 6.1.1. with all dependencies but when I installed it on Pega 7.1.9 our server had broke, Check In and Check Out operations stopped working with followed errors:

In this log I can see that the problem is inside DirectStreamEncoderV7 class. But I can’t understand why it becomes broken because there are no new versions of this class in jars for docx4j 6.1.1.

I also tried to install these dependencies not from internet but from Pega 8.3 server. And it also didn’t work on Pega 7.1.9

I attached a table where you can see differences between pega 7/pega 8 engine classes I found on these servers and maybe It can help to understand what I need to do to upgrade docx4j library on Pega 7.1.9

I need to do it because existing default library docx4j-3.5.2 can’t generate .docx in correct way and format and when business users try to open generated word they see the error about broken file

It seems like nobody has neither little idea?

@Artsiom_Sukhanau As you know Pega Pega 7.1.9. I is way beyond Extended Support,.

Pega Extended Support program

Trying to backport functionality of new third party components is not advisable as it would not have been tested for compatibility.

In Pega 8.4, the docx4j jar was updated from 3.3.0 to 6.1.1, and to make it work properly, you need to add the necessary dependencies for docx4j-export-fo along with its transitive dependencies. This will ensure compatibility and functionality with the newer version.

This is discussed in the following PSC post:

Convert Docx (Word document) to PDF in 8.1 and above

It is an unsupported manipulation if attempted standalone. The upgrade from version 3.5.2 to 6.1.1 represents a major version change (from 3.x to 6.x), which typically indicates significant architectural changes and potential breaking changes in the API. My research has revealed that this particular upgrade includes several breaking changes, especially in how the library handles document processing and conversions.

Each release of Pega will have had improvements made wrt Document-generation functionality. Please go through our Resolved Issues documentation.

For example in Resolved Issues for version 8.7:

After generating a Word document using the pxGenerateWordDocument activity, opening the document resulted in a popup message indicating “Word found unreadable content”. This was traced to an issue with docx4j version 8.2.6, and has been resolved by updating docx4j to version 8.3.1 .”

Please consider upgrading.

Pega Infinity Patch Calendar

@MarijeSchillern thanks for your reply

We can’t upgrade entire system. We just needed to upgrade docx4j and its’ dependencies. And if even Pega professionals don’t know the right way to do it, if there no any professional in the world who know how it can be done - I don’t know what to say

Anyway, thank you

@Artsiom_Sukhanau what you have requested is an unsupported manipulation. If you urgently need help, did you already make contact with Pega Consulting in order to enlist the help of Pega Professionals?

No-one on this public community forum is in a position to say that "… there no any professional in the world who know how it can be done ".

Especially if you have not first contacted our dedicated Pega implementation staff directly. As a licensed client you will have been assigned a Pega Account Executive you can discuss this with.