This post is a reply to the IFS forum discussion which questioned about SMS integration with IFS. I did a simple POC for this and surprisingly it worked so I thought it will be a good post to return to my blog after some time.
Clickatell is world leading SMS platform and supported in many countries and it has a very easy to use REST/HTTP API to send the messages. This guide is based on following parts
- Clickatell REST API
- IFS Application 10 UPD6 REST Sender
- IFS Custom Events
We start by setting up the Clickatell account and the SMS integration first
Setting up Clickatell Configurations
- Create a new Clickatell account
- Add a Test Phone, provide mobile number you need to send the SMS.
- Create SMS HTTP API. Use following values for settings
- API Type: REST
- Messaging type: One-way messaging
- Delivery type: Time Critical
- Note down the API key
IFS Setup to Send SMS to Notify Customer Order Status Change
Our use case is to send a SMS to a user upon customer order status is changed. We start by setting the IFS Connect configurations required to send the SMS.
- Routing Address, Create New. Choose destination type as REST. Root end point : https://platform.clickatell.com/messages

- Routing Rules/Outbound, Create New
- Route From: Application Message
- Queue: OUT1
- Content based condition, set
MESSAGE_FUNCTION = SMS
We will use this in the next step - Set the Address created previously as main address

That’s basically required as the Integration setup to send the SMS from IFS. Now we need to build our use case, sending SMS on Customer Order Status Change. To keep things simplify, we use Reference field in Customer Order to fill the mobile number of the receiver. In a real scenario, this could be a comm method of the customer contact.
Custom Event Setup

Custom Event Action Setup

Code for the action:
DECLARE
bxml_ CLOB;
BEGIN
bxml_ := '<SendMessageRequest>' ||
'<Content>' ||
'Your Order ' || '&NEW:ORDER_NO' || ' is now ' || '&NEW:ROWSTATE' || '.' || CHR(10) || 'IFS Demo 10' ||
'</Content>' ||
'<To>' ||
'&NEW:CUST_REF' ||
'</To>' ||
'</SendMessageRequest>';
plsql_rest_sender_API.Call_Rest_EndPoint(rest_service_ => 'SMS',
xml_ => bxml_,
callback_func_ => 'P_L_S_Q_L_Rest_Test_API.REST_callback_Test',
http_method_ => 'POST',
http_req_headers_ =>'Content-Type: application/xml,Accept: application/xml,Authorization: YOURAPIKEY');
END;
Note that the rest_service_
parameter in plsql_rest_sender_API.Call_Rest_EndPoint
is set to SMS
, which we used in the routing rule as MESSAGE_FUNCTION.
More information regarding the message context and the Clickatell HTTP POST message content can be found here.
Now we are completed with the setup. Create a new Customer Order and update the Reference field with the mobile added as the Clickatell Test Phone. Process Order. Notifications will receive upon status changes of the order.

This has been a good test to check the capabilities of the REST Sender which is new in IFS10. There are many possibilities with this and best this is you don’t need any customisation to build the integrations.
Thanks a lot!
We’ve made the configuration on IFS with UPD14 and all worked fine.
Best regards,
DANMI
Glad that it worked 🙂
Hi!
I’ve made all the same as described in your topic. But…
“Failure while obtaining result: java.lang.ArrayIndexOutOfBoundsException: 2…” in Applications Message.
Are there any changes to be done in order to run the integration?
Thanks!
Best regards,
DANMI
Hi Danmi,
I think you hit with an IFS bug. You may raise a support case to IFS and apply UPD 13 or solution 293772.
Please check following IFS Community thread for details.
https://community.ifs.com/framework-experience-infrastructure-cloud-integration-dev-tools-50/call-rest-api-from-event-action-with-bearer-authentication-10559
Cheers!
DSJ
Hi Damith,
This is really interesting and thanks for sharing.
Regards.
Praneeth
You are welcome Praneeth🙂
How would you access the response of API?
Say you want to add some part of the response to the customer order.
Check the IFS forum post reply 🙂 https://community.ifs.com/technology-all-about-the-nuts-and-bolts-that-make-it-work-50/how-to-grap-the-application-message-response-1880#post7453
Thank.
I’ve been trying to send a post request to another endpoint that accepts post request without luck.
I’m not sure, but I think I need to finde out how to send a content-type header from IFS.
Maby you could take a look at the topic? That would be a great help.
https://community.ifs.com/technology-all-about-the-nuts-and-bolts-that-make-it-work-50/routing-address-post-request-to-http-1867
Sure thing! I’ll have a look 🙂
The HTTP destination type in IFS9 is for use with SOAP. How would you overcome that?
BR Kresten
I just did a quick test and seems it’s not possible to connect to Clickatell HTTP API with IFS HTTP Sender in Apps9, because IFS HTTP Sender supports only HTTP Post and Clickatell HTTP API supports only HTTP Get.
On a separate topic, HTTP sender can be used to call non- SOAP webservices as well.
BR,
Damith
Hi, This is a cool integration.
How would you go about it if you were sitting on IFS 9 and you could not use a REST Connector?
BR Kresten
Hi Kresten, Thanks!
Yes, this is possible with IFS9 with HTTP connector 🙂
Clickatell has an HTTP API (https://www.clickatell.com/developers/api-documentation/http-api-send-message/) and with some modifications to the event and routing, it should do the work.
Please let me know if you are interested so I can try it for real and get back with an example 🙂