Migrating CAF Applications from 8.2 to 9.8.9.9

I am experimenting with migrating the CAF applications which currently reside in webMethods 8.2 to version 9.8 or 9.9. When I import the archive of the projects, every one of the projects contains about 20+ errors, stating missing jar files or libraries related to webMethods libraries/jars.

Is there a document or process that is out there to migrate from webMethods 8.2 CAF to webMethods 9.8 CAF/openCAF?

We are planning on doing the migration/upgrade in the next 9-12 months, and I just want to be prepared.

You would want to use the ‘Software AG > Existing CAF Projects into Workspace’ import wizard to add your projects to the workspace.

Or if the projects are already in your workspace, you can use the ‘CAF Tools > Repair CAF Project’ item from the right-click context menu of the project to repair it.

Both of those would take care of correcting the common problems with CAF projects when moving them between environments.

I have done the Export and Import things, which I have done well over 1,000 times before. I also know about the CAF Repair, but in talking with someone I know at Software AG, he is experiencing the same issues, with errors being thrown in 9.9, that are not thrown at all in 8.2.

The migrating of the webMethods products, side by side, is farily straight forward, but moving the code from an 8.2 runtime to a 9.9 runtime is apparently not as easy, which is what we feared.

Here are a few examples of the errors:

Description Resource Path Location Type
Project ‘’ is missing required library: ‘<REDACTED PROJECT NAME>\lib\commons-lang3-3.1.jar’ Build path Build Path Problem
Project ‘’ is missing required library: ‘<REDACTED PROJECT NAME>\lib\fontbox-1.8.7.jar’ Build path Build Path Problem
Project ‘’ is missing required library: ‘<REDACTED PROJECT NAME>\lib\pdfbox-1.8.7.jar’ Build path Build Path Problem
Project ‘’ is missing required library: ‘<REDACTED PROJECT NAME>\lib\poi-3.13-20150929.jar’ Build path Build Path Problem
Project ‘’ is missing required library: ‘<REDACTED PROJECT NAME>\lib\poi-ooxml-3.13-20150929.jar’ Build path Build Path Problem
Project ‘’ is missing required library: ‘<REDACTED PROJECT NAME>\lib\poi-ooxml-schemas-3.13-20150929.jar’ Build path Build Path Problem
The project cannot be built until build path errors are resolved Unknown Java Problem
The return type is incompatible with HttpServletResponse.getHeader(String) MockHttpServletResponse.java //shared_src/com/webmethods/caf/mock line 299 Java Problem
The type DelegatingServletInputStream must implement the inherited abstract method ServletInputStream.isFinished() DelegatingServletInputStream.java //shared_src/com/webmethods/caf/mock line 35 Java Problem
The type DelegatingServletInputStream must implement the inherited abstract method ServletInputStream.isReady() DelegatingServletInputStream.java //shared_src/com/webmethods/caf/mock line 35 Java Problem
The type DelegatingServletInputStream must implement the inherited abstract method ServletInputStream.setReadListener(ReadListener) DelegatingServletInputStream.java //shared_src/com/webmethods/caf/mock line 35 Java Problem
The type DelegatingServletOutputStream must implement the inherited abstract method ServletOutputStream.isReady() DelegatingServletOutputStream.java //shared_src/com/webmethods/caf/mock line 36 Java Problem
The type DelegatingServletOutputStream must implement the inherited abstract method ServletOutputStream.setWriteListener(WriteListener) DelegatingServletOutputStream.java //shared_src/com/webmethods/caf/mock line 36 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method HttpServletRequest.authenticate(HttpServletResponse) MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method HttpServletRequest.changeSessionId() MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method HttpServletRequest.getPart(String) MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method HttpServletRequest.getParts() MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method HttpServletRequest.login(String, String) MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method HttpServletRequest.logout() MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method HttpServletRequest.upgrade(Class) MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method ServletRequest.getAsyncContext() MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method ServletRequest.getContentLengthLong() MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method ServletRequest.getDispatcherType() MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method ServletRequest.isAsyncStarted() MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method ServletRequest.isAsyncSupported() MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method ServletRequest.startAsync() MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletRequest must implement the inherited abstract method ServletRequest.startAsync(ServletRequest, ServletResponse) MockHttpServletRequest.java //shared_src/com/webmethods/caf/mock line 60 Java Problem
The type MockHttpServletResponse must implement the inherited abstract method ServletResponse.setContentLengthLong(long) MockHttpServletResponse.java //shared_src/com/webmethods/caf/mock line 51 Java Problem
The type ResponseWrapper.MyServletStream must implement the inherited abstract method ServletOutputStream.isReady() ResponseWrapper.java //shared_src/com/webmethods/caf/mock line 64 Java Problem
The type ResponseWrapper.MyServletStream must implement the inherited abstract method ServletOutputStream.setWriteListener(WriteListener) ResponseWrapper.java //shared_src/com/webmethods/caf/mock line 64 Java Problem

Dary

None of those missing libraries appear to have been provided by the CAF/MWS/TE framework. So you would need to consult with the team or person who created those custom applications to understand how they structured those projects.

If the projects had been created using the standard project structure then the migration should have been trivial.

MWS 9.8 and 9.9 are using version 3.1 of the servlet specification, so your mock classes would need to provide the implementation of the methods that were added to the servlet specification in version 3.x

I reviewed the application and have fixed all of the errors that were in the original compile. I had to comment out two sections of code until I can determine what is going on with the two remaining errors, but I was able to deploy, so I am continuing with the setup.

I used the Eclipse tools to offer suggestions, and will begin testing shortly.

Thanks for the push, Eric.

Daryl

@Daryl

We are planing to migrate CAF application from 8.2.2 to 9.8, Can you highlight high level steps to migrate CAF application from 8.2.2 to 9.8? Have you seen any critical issues while migrating CAF?

Suggest if there is any best approach to migrate… Thanks,