Skip to Content
Author's profile photo Artem Solohin

Adapter Module Development. Set QoS EOIO with Queue Name based on XPath expression

This adapter module allow you to set EOIO QoS and Queue ID in sender channel (even it was configured as EO). Queue Id can be setted as fixed value, or as value from Payload (using XPath).

Module has two parameters: QueueName and XPath.


Parameter QueueName is mandatory. Even you fill XPath parameter, you should set QueueName (with any non-empty value).

XPath example for PI message:

For example, we have this message:

<ns0:MT_1 xmlns:ns0='someuri'>

Xpath is: //item/ThisIsWillBeUsedForQueueName

In the message Data log you will see (even it is EO sender channel):

    Quality of Service Exactly Once in Order

    Sequence ID : <value from your QueueName or XPath result>

Code of Module in the attachment (this is for PI 7.4, for others may be some differences)

Useful links to create Module:–adapter-module-creation-using-ejb-30

And check comments 😉

ℹ Note: even you select XPI Libraries you can’t add Audit, cause in those libraries is missing one important file

You can get it from PI server. Very very great blog for it:

Another useful link:

There I found how to get payload.

Have fun 🙂

PS. If you know, how to optimize it or do better – write in comments please. Thx

PPS. Another blog about :

Useful links:

Adapter module: Set the file name from Payload using Regular Expression (Regex).

Assigned Tags

      You must be Logged on to comment or reply to a post.
      Author's profile photo Eng Swee Yeoh
      Eng Swee Yeoh

      Hi Artem,

      Thanks for sharing your development 🙂

      Regarding your note on the library file, it is really not required to have that "missing" JAR file. There is an alternative method to access the audit log, which is via This is already included in the NWDS XPI library.

      Below is an example of how to instantiate an object of AuditAccess and use its instance method to add an entry in the audit log.

      AuditAccess audit = PublicAPIAccessFactory.getPublicAPIAccess().getAuditAccess();

      audit.addAuditLogEntry(msgkey, AuditLogStatus.ERROR, "Error");

      This method is also documented in the following official module development guide from SAP.

      Developing User Enhancement Modules in the Adapter Engine

      How to Create Modules for the JEE Adapter Engine

      I have this logic in a few custom adapter modules and they are all working perfectly fine.


      Eng Swee

      Author's profile photo Former Member
      Former Member

      Artem, I don't seem to be able to find an attachment with the code for module anywhere in the post.

      Author's profile photo Evgeniy Kolmakov
      Evgeniy Kolmakov

      Hello, Alexei!

      Here you’ll find the blog describing how to assign queue name and QoS to source message (with module code):

      And here is another one:

      Regards, Evgeniy.

      Author's profile photo Artem Solohin
      Artem Solohin
      Blog Post Author

      Аттачменты потерлись видимо после переезда. Жаль. Я их не сохранял в другом месте.

      Author's profile photo Artem Solohin
      Artem Solohin
      Blog Post Author

      Author's profile photo Bo Yang
      Bo Yang

      Hi Artem Solohin,

      Could you please share you Java code ? I can't find you attachement.