Question

Problems with SOAP Integration

  • 27 October 2020
  • 5 replies
  • 922 views

Badge +3

Hello,


i just started an integration for an external program with IFS8.


The external program should create supplier invoices. As far as i understood, i should use InboundDistributionTransactions:ReceiveSupplierInvoice for this.


I’m currently trying with postman. I can reach http://domain:port/fndext/soapgateway and can successfully execute the BIZAPIs GET_TEST_ORDER and GET_CUST_ORD_CUSTOMER by providing the correspondig SOAPAction.

I want to do all communication synchronous. As far as i understood, all BIZAPI calls without appending "/post" should do so, is this correct ?

But if i start trying with RECEIVE_SUPPLIER_INVOICE, strange problems start.

This is the body i am currenty sending.

<INVOICE>
<EDI_RECEIVER>CONNECT</EDI_RECEIVER>
<CUSTOMER_COMMUNICATION_ID>1</CUSTOMER_COMMUNICATION_ID>
<CUSTOMER_NAME>Airbus France</CUSTOMER_NAME>
<CUSTOMER_NO>FR_AIRBUS</CUSTOMER_NO>
<DELIVERY_DATE>2005-09-18</DELIVERY_DATE>
<DUE_DATE>2005-09-18</DUE_DATE>
<FORWARD_AGENT>CONNECT</FORWARD_AGENT>
<INVOICE_DATE>2005-09-18</INVOICE_DATE>
<INVOICE_TYPE>SUPPINV</INVOICE_TYPE>
<INVOICING_FEE>3.14</INVOICING_FEE>
<INVOICING_ROUNDING>3.14</INVOICING_ROUNDING>
<LABEL_NOTE>ABC</LABEL_NOTE>
<ORDER_DATE>2005-09-18</ORDER_DATE>
<ORDER_NO>ABC</ORDER_NO>
<OUR_COMMUNICATION_ID>Ifs</OUR_COMMUNICATION_ID>
<SUPPLIER_COMMUNICATION_ID>1</SUPPLIER_COMMUNICATION_ID>
<SUPPLIER_NAME>Smells Kitchen</SUPPLIER_NAME>
<SUPPLIER_NO>095211</SUPPLIER_NO>
<COMPANY>50</COMPANY>
</INVOICE>

The customer / company / supplier exists and the user i'm running can access all in the IFS8 app. The error i am getting with this dataset is

<ifserr:errordetail>loadInboxMessage: ORA-20111: MessageReceiver.NOTEXIST2: The Message Receiver object does not exist.
ORA-06512: at "IFSAPP.ERROR_SYS", line 203
ORA-06512: at "IFSAPP.MESSAGE_RECEIVER_API", line 515
ORA-06512: at "IFSAPP.IN_MESSAGE_API", line 465
ORA-06512: at "IFSAPP.IN_MESSAGE_API", line 780
ORA-06512: at line 1</ifserr:errordetail>

If i change something, e.g. omit the SUPPLIER_COMMUNICATION_ID, the error changes to

<ifserr:errordetail>loadInboxMessage: INMESSAGE.IN_MESSAGE.RECEIVER must have a value</ifserr:errordetail>

What are the least mandatory fields for successfully posting invoices ? As all fields seem to be marked optional, this is not very helpful.

Is there a possibility to create the web call to "fndext/soapgateway?handler=InboundDistributionTransactions&op=ReceiveSupplierInvoice&type=xml_request" with an actual database record instead of dummy values ?

Hope someone could help me out

Cheers
Michael


5 replies

Userlevel 5
Badge +14

Hi Michael,

What the error message is trying to tell you is that the attribute SUPPLIER_COMMUNICATION_ID should exist as a Message Receiver in IFS Connectivity. Most likely you will find the default receiver CONNECT has been setup in your system and you should use that in your messaging.

Furthermore I'm afraid you are correct in stating the documentation is not very helpful on attributes being mandatory or optional.

Best regards,

Toine

Badge +3

Hello Toine,

thanks for your response, i changed the SUPPLIER_COMMUNICATION_ID to connect and now the messages are posted in the connectivity inbox.

But i don’t understand the process, i want a synchronous booking and a direct response if the booking went ok.

I get the following message from postman

<RESPONSE xmlns="urn:ifsworld-com:schemas:info_response">Message=115.0 is posted to Connectivity Inbox</RESPONSE>

and the messages stay in state posted, even if the following 7 system parameters are set according to this page

https://powetest01.ifscloud.net:59443/ifsdoc/f1doc/Foundation1/040_administration/240_integration/310_connectivity/010_configure_connectivity/default.htm#BgServices

 

i added the following additional amount fields to the header to which he doesn’t complain in connectivity inbox

<NET_CURR_AMOUNT>3.14</NET_CURR_AMOUNT>
<VAT_CURR_AMOUNT>0.00</VAT_CURR_AMOUNT>

but if i add the following invoice line, all amount fields show up in the error message column. The decimal separator in the error message gets replaced with a comma, but since this is a german IFS setup i don’t think that’s the problem as he is accepting the header fields with decimal point.

<INVOICE_LINES>
<INVOICE_LINE>
<INVOICE_NO>ABC</INVOICE_NO>
<INVOICE_ITEM_POS>1</INVOICE_ITEM_POS>
<SALES_UNIT_PRICE>3.14</SALES_UNIT_PRICE>
<INVOICED_QTY>1</INVOICED_QTY>
<NET_AMOUNT>3.14</NET_AMOUNT>
<VAT_AMOUNT>0.79</VAT_AMOUNT>
<VAT_CODE>1</VAT_CODE>
<VAT_PERCENT>25</VAT_PERCENT>
<ORDER_NO>ABC</ORDER_NO>
<ORDER_DISCOUNT>0</ORDER_DISCOUNT>
<LINE_DISCOUNT>0</LINE_DISCOUNT>
<DISCOUNT_AMOUNT>0</DISCOUNT_AMOUNT>
<ADDITIONAL_DISCOUNT>0</ADDITIONAL_DISCOUNT>
<TOTAL_DISCOUNT>0</TOTAL_DISCOUNT>
<CHARGE_PERCENT>0</CHARGE_PERCENT>
<CHARGE_PERCENT_BASIS>0</CHARGE_PERCENT_BASIS>
</INVOICE_LINE>
</INVOICE_LINES>

  

My current message, which is passing into connectivity inbox with errors for the invoice lines is looking like this

<INVOICE>
<CURRENCY_CODE>EUR</CURRENCY_CODE>
<CUSTOMER_COMMUNICATION_ID>CONNECT</CUSTOMER_COMMUNICATION_ID>
<DELIVERY_DATE>2014-03-10</DELIVERY_DATE>
<DUE_DATE>2014-03-11</DUE_DATE>
<FORWARD_AGENT>CONNECT</FORWARD_AGENT>
<INVOICE_DATE>2014-03-12</INVOICE_DATE>
<INVOICE_NO>ABC</INVOICE_NO>
<INVOICE_TYPE>SUPPINV</INVOICE_TYPE>
<ORDER_DATE>2014-03-13</ORDER_DATE>
<ORDER_NO>ABC</ORDER_NO>
<OUR_COMMUNICATION_ID>IFS</OUR_COMMUNICATION_ID>
<SUPPLIER_COMMUNICATION_ID>CONNECT</SUPPLIER_COMMUNICATION_ID>
<SUPPLIER_NAME>Continental</SUPPLIER_NAME>
<SUPPLIER_NO>178</SUPPLIER_NO>
<COMPANY>900</COMPANY>
<BATCH_ID>ABC</BATCH_ID>
<PO_REFERENCE>BESTELLREF_1</PO_REFERENCE>
<EDI_RECEIVER>CONNECT</EDI_RECEIVER>
<LATEST_DELIVERY_DATE>2014-03-14</LATEST_DELIVERY_DATE>
<PAY_TERM_BASE_DATE>2005-03-15T09:01:01</PAY_TERM_BASE_DATE>
<REF_INVOICE_DATE>2005-03-16</REF_INVOICE_DATE>
<NET_CURR_AMOUNT>3.14</NET_CURR_AMOUNT>
<VAT_CURR_AMOUNT>0.00</VAT_CURR_AMOUNT>
<INVOICE_LINES>
<INVOICE_LINE>
<INVOICE_NO>ABC</INVOICE_NO>
<INVOICE_ITEM_POS>1</INVOICE_ITEM_POS>
<SALES_UNIT_PRICE>3.14</SALES_UNIT_PRICE>
<VAT_CODE>1</VAT_CODE>
<INVOICED_QTY>1</INVOICED_QTY>
<NET_AMOUNT>3.14</NET_AMOUNT>
<VAT_AMOUNT>0.79</VAT_AMOUNT>
<VAT_PERCENT>25</VAT_PERCENT>
<ORDER_NO>ABC</ORDER_NO>
<ORDER_DISCOUNT>0</ORDER_DISCOUNT>
<LINE_DISCOUNT>0</LINE_DISCOUNT>
<DISCOUNT_AMOUNT>0</DISCOUNT_AMOUNT>
<ADDITIONAL_DISCOUNT>0</ADDITIONAL_DISCOUNT>
<TOTAL_DISCOUNT>0</TOTAL_DISCOUNT>
<CHARGE_PERCENT>0</CHARGE_PERCENT>
<CHARGE_PERCENT_BASIS>0</CHARGE_PERCENT_BASIS>
</INVOICE_LINE>
</INVOICE_LINES>
</INVOICE>

 

Userlevel 5
Badge +14

Hi Michael,

First of all, these processes are asynchronous by nature. Meaning, in your case, that the invoice will be posted to IFS Connectivity and you will only receive the Message ID in the response.

The message should be picked up and handled by Connectivity. If the status remains Posted, please check that these Database Processes are actually running:
 


After that, you should see your Connectivity messages being handled by background jobs and from there it's trial and error to find out which attributes must be included in your incoming message and/or which attributes have invalid values.

Best regards,

Toine

Badge +3

Hello Toine,

thanks for your help. I didn’t find the time till now to check if the 2 database processes are running.

What should i do if one is missing ? Is it possible to restart the server to reenable or can i be sure that it is still missing after that ?

Best regards,

Michael

Userlevel 5
Badge +14

Hi Michael,

Restarting the server will not help.

Please check the System Parameters. Even if it says ON, you can switch it OFF, then save, then switch back to ON and save again. Then check the Database Processes I mentioned earlier to see if they are actually running.

Best regards,

Toine

Reply