Case Builder generates FNRPB8048E error

Draft comment:
This topic only applies to BAW, and is located in the BAW repository. Last updated on 2025-03-13 12:15
Case Builder generates FNRPB8048E error when IBM® Business Automation Workflow and IBM Content Navigator are deployed to separate WebSphere® nodes and IBM Content Navigator's full qualified domain name is different from Case Builder.

Symptoms

The following error is found in SystemOut.log (IBM Business Automation Workflow):

[7/21/22 12:09:37:541 PDT] 000001b9 Handle E com.ibm.acm.icmbuilder.api.logging.CBLogger error com.ibm.acm.icmbuilder.exception.AcmException: The connection was unsuccessful.||Either the IBM Content Navigator server is unavailable, a network error occurred, the user lacks the appropriate access permissions, or the IBM Content Navigator URL is incorrect.||1. Verify that the IBM Content Navigator server is running and configured correctly. 2. Verify that the network is available. 3. Verify that the IBM Content Navigator URL in the cbConfig.properties file is valid. 4. Verify the access permissions of the Business Automation Workflow Case Builder user to IBM Content Navigator.[7/21/22 12:09:37:608 PDT] 000001b9 filter E com.ibm.ws.webcontainer.filter.FilterInstanceWrapper doFilter SRVE8109W: Uncaught exception thrown by filter CodePageFilter: java.io.FileNotFoundException:

SRVE0190E: File not found: /designer/undefined/v1/userinfo at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor._processEDR

(DefaultExtensionProcessor.java:977) at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.processEDR

(DefaultExtensionProcessor.java:958) at com.ibm.ws.webcontainer.extension.DefaultExtensionProcessor.handleRequest

(DefaultExtensionProcessor.java:486) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(WebAppFilterChain.java:136) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter

(WebAppFilterChain.java:97) at com.ibm.acm.casebuilder.filter.CodePageFilter.doFilter

(CodePageFilter.java:52) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter

(FilterInstanceWrapper.java:195) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter

(WebAppFilterChain.java:91) at com.ibm.bpm.servlet.filters.GenericSecurityServletFilter.doFilter

(GenericSecurityServletFilter.java:321) at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter

(FilterInstanceWrapper.java:195) at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter

(WebAppFilterChain.java:91) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter

(WebAppFilterManager.java:967) at com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilters

(WebAppFilterManager.java:1107) at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest

(WebApp.java:4075) at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest

(WebGroup.java:304) at com.ibm.ws.webcontainer.WebContainer.handleRequest

(WebContainer.java:1019) at com.ibm.ws.webcontainer.WSWebContainer.handleRequest

(WSWebContainer.java:1817) at com.ibm.ws.webcontainer.channel.WCChannelLink.ready

(WCChannelLink.java:213) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination

(HttpInboundLink.java:463) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest

(HttpInboundLink.java:530) at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest

(HttpInboundLink.java:316) at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete

(HttpICLReadCallback.java:88) at com.ibm.ws.ssl.channel.impl.SSLReadServiceContext$SSLReadCompletedCallback.complete

(SSLReadServiceContext.java:1833) 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:1892)

Also, the following HTTP 404 errors are found in access.log (IBM HTTP Server):

127.0.0.1 - - [21/Jul/2022:12:09:37 -0700] "POST /navigator/jaxrs/getDesktop?desktop=baw HTTP/1.1" 404 264 6460 "-" + 127.0.0.1 - - [21/Jul/2022:12:09:37 -0700] "POST /navigator/jaxrs/logon HTTP/1.1" 404 264 2560 "-"

Causes

Administrators install IBM Business Automation Workflow and IBM Content Navigator into separate WebSphere nodes. The primary goal is to create an "User Acceptance Test" environment that closely mirrors the Production setup. However, by installing both products in different nodes, administrators can simulate an external IBM Content Navigator. This can be achieved by configuring IBM Content Navigatorto use a local web server with a hostname different from that of IBM Business Automation Workflow, effectively simulating an external IBM Content Navigatorsetup.

Consider the following scenario:
  • IBM Business Automation Workflow running with hostname: bawvdi
  • IBM Business Automation Workflow is installed into a WebSphere V8.5.5.x node at /IBM/Workflow/v21
  • IBM Business Automation Workflow's full qualified domain name is: https://bawvdi:12319/
  • IBM Content Navigator is installed into a WebSphere v9.0.x node at /IBM/WebSphere/V9
  • IBM HTTP Server v9 is installed and integrated with WebSphere v9.0.x node
  • Network administrator adds DNS entry to establish a new Full qualified domain name to be used by IBM HTTP Server and IBM Content Navigator, that is, "ihsnode1"
  • IBM Content Navigator's full qualified domain name is: https://ihsnode1:443/

After users complete the login to Workflow Center page and then select the Case Builder to load the authoring tool, a request is sent to IBM Business Automation Workflow at "bawvdi1" host: https://bawvdi1:12319/CaseBuilder/designer/DesignerHome.jsp?locale=en

Case Builder attempts to connect to IBM Content Navigator by using the new Full qualified domain name for IBM HTTP Server at https://ihsnode1:443. However, the request carries the original Host header for "bawvdi1" and the request fails with HTTP error 404. POST /navigator/jaxrs/getDesktop?desktop=baw HTTP/1.1 404 The root cause of the issue is that by default IBM HTTP Server considers inbound local requests to be associated with the local hostname.

Resolving the problem

IBM HTTP Server administrator must adjust the configuration so that the "Host" header in the HTTP request is replaced from "bawvdi1:12319" to "ihsnode1:443".

Replacement is possible by using LoadModule module. See the following documentation:

Apache Module mod_headers

See the following example where ServerName and RequestHeader are customized in httpd.conf:

...
LoadModule headers_module modules/mod_headers.so
...
ServerName   ihsnode1
RequestHeader edit Host bawvdi1:12319 ihsnode1:443 early
...