Defining application messages for use with Effective Date Publish Utility

The original message published by PeopleSoft is EXAMPLE_MSG and the effective dated messsage is EXAMPLE_MSG_EFF. Add both messages to the default local node as both inbound and outbound asynchronous. You might have a hard time verifying this in the PS documentation, I know I couldn't find it.

EXAMPLE_MSG's message subscription name must end in _EFF. Example: EXAMPLE_MSG_EFF. The subscription's PeopleCode calls the Effective Date Publish utility and it removes future dated data and writes it to the effective date delay table.

Add EXAMPLE_MSG_EFF to the publish node as outbound asynchronous.

PS effective dated messages with effective date equal to current date first run their own messages subscription and then are published by the Effective Date Publish utility as an _EFF message.

Effective dated messages with effective date greater than current date first run their own message subscription and end up in delay table PS_EO_EFFDELAY.

The customized Effective Date Utility (change EOP_PUBLISHE so that the full message is published whenever a date in needed data becomes effective) processes messages from the effective date delay table, PS_EO_EFFDELAY, when the data becomes current.


TROUBLE SHOOTING


For PS 8.8, verify JOLT settings in the region's integrationgateway.properties file.
\\server\PSOFT\regiondirectory\WEBSERV\region\APPLICATIONS\PEOPLESOFT\PSIGW\WEB-INF\INTEGRATIONGATEWAY.PROPERTIES
* Lower case directories change with the PeopleSoft region.

Verify that nodes that shouldn't be active are not. These active nodes mess up PS's internal report distribution. Set PS delivered nodes PSFT_IM and PT_LOCAL to inactive.

Adding EXAMPLE_MSG's channel to a Permission List with all pages and full access will allow users with the Permission List to see the messages in Monitor Message.

Incoming api message needing to delay

Scenario is that an incoming message to update a Project needs to check if Project currently exists (via Component Interface PROJECT_GENERAL) and, if not, needs to retry.

First attempt was to put subscription code into sleep loop using: GetJavaClass("java.lang.Thread").sleep(milliseconds). PeopleTools 8.49 incoming message in sleep loop remains in Working status and blocks all other queues. Messages in the other queues get stuck in status Started. Not good.

Experiment was done setting Load Balance Interval to 1 with the expectation that the incoming message in the sleep loop would block other queues for up to 1 minute and then processing would be forced to look at other queues.

Results:

Note that implementing change to Load Balance Interval required recompile and bounce of the entire application server.

Started "Project update api message" (Puam) published from 3rd party application into PeopleSoft with 5 minute sleep loop in the subscription code. The subscription code looks for the existance of the Project 10 times with 30 seconds of sleep between.

Started two "Express Asset Capitalization api messages" (EACam) published from 3rd party application into PeopleSoft that should process in near real time. What these messages do is not important, they are only to test if messaging will work through other Integration Broker Queues (formerly Channels).

PeopleSoft Integration Broker monitor in targeted PeopleSoft region showed Puam message in Working status for 5 minutes and then going to Error status.

Within those 5 minutes, the first EACam message was in Started status and went to Done as soon as Puam went to Error.

Did not monitor second EACam message.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.