Document toolboxDocument toolbox

Problems Connecting to ServiceOptimizer

On This Page:

The ServiceManager application works partially by interacting directly with the ServiceOptimizer database, and partially via the SOAP APIs into the ServiceOptimizer Server. This page covers a number of previously experienced issues with this latter type of connection. If you have such an issue reported to you, please check within this section for a Reason/Resolution before reporting to the ServicePower Support Team.

Invalid User


The Problem

Users attempt, but fail, to logon to ServiceManager even though they are correctly specified in SP085_USERS.

There are a number of reasons why a user's logon would fail:

Unknown Host

- I/O exception caught when processing request: unknownhost
- Retrying request
- unknownhost 
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.net.UnknownHostException: unknownhost
 faultActor: 
 faultNode: 
 faultDetail: 
     {http://xml.apache.org/axis/}stackTrace:java.net.UnknownHostException: localhost-wrong
     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:177)
...
java.net.UnknownHostException: unknownhost
...

Wrong Port Number:

a) Port Not Listening

b) Connecting to wrong port type (GanttRouter/API Agent)

- I/O exception caught when processing request: Connection refused: connect
- Retrying request
- Connection refused: connect
AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode:
 faultString: java.net.ConnectException: Connection refused: connect
 faultActor:
 faultNode:
 faultDetail:
     {http://xml.apache.org/axis/}stackTrace:java.net.ConnectException: Connection refused: connect
...
java.net.ConnectionException:Connection refused: connect

The Reason

ServiceManager's SOAP connection has been incorrectly specified.

The Resolution

The service_manager.properties file specifies the URL to be used for SOAP based connectivity with ServiceOptimizer.  If this URL is incorrectly specified then this connection will fail.  To resolve this issue ensure that the specified URL is correct. e.g.

soap.server.url=http://sp-prod:18081


Incorrect SOAP username/password combination


The Problem

The user's logon fails even though their SP085_USER set up is correct and they have correctly entered their credentials.

Review of the ApiAgent log would show:

2660 SoapThread ApiAgent SOAP <: login rubbish,,jodd,1,jodd
2660 ---- ApiAgent SOAP >: +2\n.\n
---- HTTP/1.1 200 OK
---- Server: gSOAP/2.8
---- Content-Type: text/xml; charset=utf-8
---- Content-Length: 576
---- Connection: keep-alive
---- <?xml version="1.0"
encoding="UTF-8"?><SOAP-ENV:Envelope
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENC="vicepower.com/soap/spower.wsdl">
---- <SOAP-ENV:Body><sp:loginResponse><status>InternalError</status><responseCode>175</responseCode></sp:loginResponse></SOAP-ENV:Body>
---- </SOAP-ENV:Envelope>

The Reason

To connect to ServiceOptimizer, via SOAP, ServiceManager must be configured with both the valid SOAP URL and the valid SOAP username.  If this username is incorrect the SOAP logon payload cannot be correctly authenticated and the call will fail

The Resolution

Ensure that the correct username, appropriate for the database platform, is specified within the service_manager.properties.  For example when authenticating against MSSQL, if ServiceOptimizer was started with the command:

spsysmon -s -d MSSQL:sp-server:sp-prod-db:testDBUser:test

Then the service_manager.properties file should have the following entry:

soap.login.dbuser=sp-prod-db

And when authenticating against ORACLE, if ServiceOptimizer was started with the command: 

spsysmon -s -d sp-prod-user/pass

Then the service_manager.properties file should have the following entry: 

soap.login.dbuser=sp-prod-user

Inconsistent Read/Write Processing


The Problem

Changes made within ServiceManager appear to work and yet the updated data does not appear to be displayed when requested.  For example the user creates a period of unavailability for an operative, however when reviewing that operative's availability this new unavailability period is not shown.

The Reason

ServiceManager performs most of its data updates via API calls (via SOAP) to the ServiceOptimizer configured in the SOAP definition of service_manager.properties.  However ServiceManager performs all of its data read operations directly from the database configured within the hibernate.xml.cfg file. 

If these two configuration files essentially point to two different ServiceOptimizer instances then it is possible for the situation to occur whereby the API update is correctly processed by the ServiceOptimizer instance specified in the SOAP connection.  This update will be written back to the database by that ServiceOptimizer instance, however its database is not the same as the one incorrectly specified within ServiceOptimizer and as a consequence when the user attempts to view the newly modified data this read fails to return the new data because it is not within the connected database instance.

The Resolution

To resolve it review the start up parameters of the ServiceOptimizer instance being communicated with via SOAP and compare these with the database details within the hibernate.xml.cfg file of this ServiceManager instance.