Solved

Receive data from a third party with a system flow

  • 11 May 2023
  • 7 replies
  • 93 views

Userlevel 5
Badge +20

How can we receive data in our application from a external application that is able to do a POST request that contains JSON or XML data.

I was thinking about a Systemflow, to initiate a parse process

icon

Best answer by Vincent Doppenberg 11 May 2023, 15:25

View original

This topic has been closed for comments

7 replies

Userlevel 7
Badge +23

Hi Harm,

You can create a Subroutine stored procedure (with API on) or a Task that can receive and process the data. Indicium will create an end point for this object for the third party to communicate with. A system flow could be created to process the data at a later time. If so, the subroutine or task simply will store the data for the system flow to process at a later time.

Userlevel 5
Badge +20

Mark,

Ok, more or less clear, I will try this. 

So the possibility to immediately initiate a system flow upon arrival of the data does not yet exist?

Does that mean we have to create a separate scheduled system flow that detects whether new data is waiting in some sort of staging/queuing table?

Userlevel 5
Badge +20

The external system will send the message in the body of the request.

How can we handle this in Thinkwise?

Userlevel 7
Badge +23

So the possibility to immediately initiate a system flow upon arrival of the data does not yet exist?

You do have the option to create the system flow as a sub flow. If you would a Task as the preferred end point, a process flow with this task as starting action could then be run when the third party calls the end point. After the Task is completed, the next step in the process flow could be the execution of the sub flow. This sub flow then processes the data accordingly. 

 

Does that mean we have to create a separate scheduled system flow that detects whether new data is waiting in some sort of staging/queuing table?

That is a viable option I think. Processing this data can be recurring every hour for example. If the processing can be done fully within the Subroutine or Task, then it is not necessary to have a system flow. Sub flow or System flow, both can be a viable solution.

 

The external system will send the message in the body of the request.

How can we handle this in Thinkwise?

Good question, I believe they Third party needs to make sure to pass on the data into one of the available parameters of your procedure. For example:

POST
/iam/appl/process_data

{
"body": "[All body data of the Third party]"
}

Body can then be receive by your task and processed accordingly. 

 

Hope it helps!

Userlevel 5
Badge +20

Mark,

Yes, it helps, but in this case we cannot configure the external application, we have to accept what they offer.

They send some header parameters which might be valuable and for the rest we want to pick up the body as a whole, because it can be JSON/XML or and EDI (plain text) and will be processed later.

 

Userlevel 6
Badge +4

Hello Harm,

You can achieve this by using a so-called message protocol independent process flow. This blog, which also has a part two, thoroughly explains how to do this.

I hope this helps.

Userlevel 5
Badge +20

Hi Vincent,

Thank you, this should be it! I looks like this is exactly what we need.

I have been searching for this in the Community Portal and in the Indicium/API documentation and found nothing.

I think you should add this to the documentation as an item at this page:  https://docs.thinkwisesoftware.com/docs/category/indicium