Best Practices for Creating Third-Party Custom Connections and Queues in Retail Pro Prism

Custom connections in Retail Pro Prism allow for near real-time data exchanges between RP Prism and third-party integrations. The third party can then create an application to directly receive messages from a custom Rabbit MQ queue or set up an opposing Rabbit MQ server to fetch messages. For more API information please refer to Rabbit MQ‘s website https://www.rabbitmq.com/.

To enable this kind of data exchange, you will need to set up a Custom Rabbit MQ Queue in RP Prism.

Custom elements can be created in the Custom Dashboard section of the Connection Manager. Within the Custom Dashboard, you will notice the following:

  • Only Day-to-Day activity can be sent to and from a custom connection. No initializations are possible. If you need to send past data, please contact Retail Pro Professional Services.
  • Status reporting for messages occurs on the inbound side only. As the other side of the connection will be a third party, only the Retail Pro side of the integration will be recorded.
  • The Connection tab will only contain the RP Prism Connection information.
  • The Profiles tab contains Sender profiles defined on the RP Prism side. Profiles only affect sent data.

 

Creating a Custom Connection

  1. Enter the custom Name and RIL Server Address.

 

Custom

 

 

2. When the Connection is first created, it is not active or connected. To connect, select the Row and then click Connect.

 

Connect

 

3. If required, you can create a Profile that sends only particular required data.

 

Profile

 

4. Assign the created Profile to the Custom Connection.

 

Queue

 

5. The Connection will now be created in Rabbit MQ and data can be sent and received through this queue.

 

Testing the Connection

The Rabbit MQ interface can be used to help test the connection.

  1. Connect to Rabbit MQ.
  • Open a browser and navigate to http://:15672
  • Log into RabbitMQ

User: prismrs

Password: M3ssag1ngR0cks

2. Navigate to the Queue tab. The Queue name will be .Custom.day2day. The Queue will not be created until data is sent through it for the first time. As an example, our profile contains the document resource and a sample sale.

3. Because there are no third-party consuming messages at this point the message will be pending in the queue.

 

RabbitMQ

 

 

4. To review the message, scroll down on the Queue page to the "Get Messages" Node.

 

RabbitMQ Queue

 

  • If you only want to view the message and not delete it, make sure you have the Ack Mode set to "Nack message requeue true."

 

  • Click the "Get Message(s)" button.

 

  • The headers information will be necessary for integration. At minimum, the third-Party system will need to know the resource. 

 

 

delivery_mode:

2

headers:

CompressedBody:

False

Content-Length:

14628

ContentType:

text/json

FromController:

518340239000023255

FromServer:

paylesshq2

FromType:

Prism

Namespace:

backoffice

NotifyID:

545236985000125773

Resource:

document

ToServer:

thirdparty

ToType:

Custom

receipt:

send.receipt.3

content_type:

text/plain

  • The Payload will contain the information of the resource sent. In most cases the format will be in JSON format and can be copied and passed into a JSON viewer.

 

JSON

 

Note: Some resources will be in the JSON format but will have embedded XML in  various fields, as in Z-OUT Control and other resources.

 

Tips:

Compression

By default, RP Prism configures Rabbit MQ to compress messages. This helps with reducing bandwidth when communicating to stores. However, your third-party system may not be able to uncompress the message. In this case we recommend changing the compression value to a very large value, like COMPRESSION=10000. This is done in the PrismMQService.ini file found in the C:\ProgramData\RetailPro\Server\Conf\ directory.

 

Custom Connection Record

In RP Prism Custom Queue creation, the controller record is "Null" by default when the custom connection is created, leaving the controller record incomplete. However, the controller number field in the rps.controller table cannot be null. This will cause problems with joining the enterprise and access violations in Techtoolkit. Resolving this requires direct updates to the database.

Published on Dec 31, 2019 in Best Practices

 

Find Another Article