Thursday, July 31, 2014

Message cannot be changed. Message referenced in runtime tables

When you want to change the message structure, you would realize that messages are referenced in run time table and hence we're not allowed to edit the structure. 

When you change the underlying record structure, the message structure gets changed automatically. And in all transactions going forward the newly added field will be included in the XML message. But if you want to exclude certain fields from the structure then make sure it is not referenced in any of the scenarios given below.  

This is extracted form Peoplebooks but I've tried few of them on my own. 

We cannot modify a message if it satisfies any of the below condition:

1. The service to which a message is contained in a restricted service. Go to Service      
   Configuration component (PT > IB > Configuration > Service Configuration > and select "Restricted Service" page and check for the service. You can directly open the service and check whether it is restricted or not. This option is mostly used in delivered services. 

2. The message is used internally by the system. For example, the delivered IB_GENERIC message is read-only and is used internally by the system.

3. The message is referenced in the runtime tables.

   To work around this, you must remove any entries in the runtime tables that reference the message.The run time tables are given below. Make sure data is cleared from these tables. Do not delete the transactions, instead go for archive. 

  select * from psapmsgpubcon where ib_operationname = :1 and versionname = :2;
  select * from psapmsgsubcon where ib_operationname = :1 and versionname = :2
  select * from psibloghdr where ib_operationname = :1  and versionname = :2

  select * from psapmsgpubhdr where extoperationname = :1

4. The message is used in a service operation where WSDL documents have been generated.

5. The message is used in a service operation that has validation enabled.


User Name not defined in the Database

Received "UserName not defined in database." error during a synchronous message testing between HCM & FIN.

There are multiple ways to resolve this issue.

First, make sure the user id exists in both systems and provide appropriate security to the Service Operation in both systems.

Second, Exclude the service from PSFT Authentication Token validation from PT > IB > Configuration > Service Configuration. Go to "Exclude PSFT Auth Token" page, search for the service, select "Exclude" checkbox in the grid, save. Result column will be display as success. Do this in both systems.

Third, change the remote node type to EXTERNAL from PIA and set a default user id and password. Do this in both systems.