I am attempting to use the ION connector and have the cor_inbox/outbox schema setup in SQL. The connector in ION connects to the SQL Server and I assume the Cor table successfully. I am trying to test a dropped custom BOD in the inbox but alas the connection does not see the table record. I am assuming the headers is the culprit but not sure. Any suggestions on what I may be missing in the setup. This is a Cloudsuite ION setup.
There are a couple of things here, Russell.
I seem to recall that you can cast the C_XML field as XML in your SQL statement to see the actual XML.
But I believe the MessageID needs to somehow match the XML row to link the two.
Admittedly, it's been a few years since I worked directly with the COR-INBOX/OUTBOX tables, so I may be way off the mark.
Review this overview https://docs.infor.com/inforos/2026.x/en-us/useradminlib_cloud/default.html?helpcontent=ioncedg_cloud_osm/lsm1436532221759.html The Inbox is for message coming to your application from ION via a flow. Setup a flow to route to this application and then publish a BOD from one of your systems and it should arrive in the COR INBOX tables (Entry and Header). It sounds like you want to put a message in the OUTBOX tables. To do so review this https://docs.infor.com/inforos/2026.x/en-us/useradminlib_cloud/default.html?helpcontent=ioncedg_cloud_osm/lsm1436532222138.html There is a configuration option in the Enterprise connector for tenant mapping if that is needed. https://docs.infor.com/inforos/2026.x/en-us/useradminlib_cloud/default.html?helpcontent=iondeskceug/ltl1478600080115.html This depends on what you are putting into the tenant column. Suggest that doing the above to write a message my verify the details you need for the outbox writes. In your images the message still has a was_processed of 0 which is unprocessed. However it is also the inbox, so it would not be where outgoing messages to ION are placed.
In the Active Connection points, the counters should show you have a INBOX entry that is unprocessed. Can you share some details on how you are writing the message? I have a SQL script that can be used as a test harness if you need that. It is presented as a Stored Procedure tha tyou can call, or you can break it down and use as needed. Try to follow the concept as a best practice.
This code is shared as is for example purposes.
Thanks I am trying to place a record in the outbox I am seeing the resultant message in one view but when I view the message content I see a black diamond questionmark between each character.
I am running a query on an sql view and utilizing the FOR XML Path, elements, type to create a custom BOD
The outbox record is created and the xml is picked up. If I download the content it looks normal in notepadd++ but in ION if I view the content it has the black diamonds. I assume I am not creating the xml correctly. I am converting to varbinary(max) prior to inserting to the outbox.
I assume that SQL results in a well formed BOD with the content desired. Is that code invoked in an application / client code? what ever moves the message to the outbox needs to convert it to varbinary cast(@xmlvarchar as varbinary(max)),
you can check this on the COR OUTBOX ENTRY with ,cast(E.C_XML as XML) AS 'XML'
A fancier version of this is in this code.
SELECT TOP 15 @@SERVERNAME DBServer , 'OUT' Box ,E.C_ID AS EntID ,HBT.C_HEADER_VALUE BOD ,LEN(cast(E.C_XML as varchar(MAX))) Leng ,cast(E.C_XML as XML) AS 'XML' ,E.C_WAS_PROCESSED 'Proc' ,( SELECT CAST(DATEDIFF(d, E.[C_CREATED_DATE_TIME], @currDateTime ) AS VARCHAR) + 'd:' + CONVERT(VARCHAR, @currDateTime - E .[C_CREATED_DATE_TIME], 08) ) Age_D_HMS ,E.C_CREATED_DATE_TIME CrtDateTime ,E.C_TENANT_ID E_TenantId ,HTI.C_HEADER_VALUE H_TenantId ,IsNull(xml.dataarea.value('(./Sync/TenantID)[1]', 'varchar(100)'),'--') as B_TenantId --/SyncPurchaseOrder/DataArea/Sync/TenantID ,HBI.C_HEADER_VALUE MessageId ,HFL.C_HEADER_VALUE FomLogicalId ,HTL.C_HEADER_VALUE ToLogicalId ,E.C_MESSAGE_PRIORITY Pty ,( Select HSO.C_HEADER_VALUE from COR_OUTBOX_HEADERS HSO where HSO.C_OUTBOX_ID = E.C_ID AND HSO.C_HEADER_KEY = 'Source') as HSource FROM COR_OUTBOX_ENTRY E INNER JOIN COR_OUTBOX_HEADERS HTI ON HTI.C_OUTBOX_ID = E.C_ID AND HTI.C_HEADER_KEY = 'TenantId' INNER JOIN COR_OUTBOX_HEADERS HBT ON HBT.C_OUTBOX_ID = E.C_ID AND HBT.C_HEADER_KEY = 'BODType' INNER JOIN COR_OUTBOX_HEADERS HBI ON HBI.C_OUTBOX_ID = E.C_ID AND HBI.C_HEADER_KEY = 'MessageId' INNER JOIN COR_OUTBOX_HEADERS HFL ON HFL.C_OUTBOX_ID = E.C_ID AND HFL.C_HEADER_KEY = 'FromLogicalId' INNER JOIN COR_OUTBOX_HEADERS HTL ON HTL.C_OUTBOX_ID = E.C_ID AND HTL.C_HEADER_KEY = 'ToLogicalId' cross apply (select CAST(E.C_XML as xml)) as cd(CXML) cross Apply cd.CXML.nodes('/*/DataArea') as xml(dataarea) WHERE E.C_CREATED_DATE_TIME >= @Start_Created_Date_Time -- E.C_ID > 12345 ORDER BY E.C_ID DESC;