<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Kumologica</title>
    <description>The latest articles on DEV Community by Kumologica (@kumologica-org).</description>
    <link>https://dev.to/kumologica-org</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F2586%2F2b33a15b-7441-4172-b517-6a46e30e5d84.png</url>
      <title>DEV Community: Kumologica</title>
      <link>https://dev.to/kumologica-org</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kumologica-org"/>
    <language>en</language>
    <item>
      <title>Serverless integration with Salesforce using Kumologica</title>
      <dc:creator>ab73863</dc:creator>
      <pubDate>Mon, 05 Apr 2021 14:34:15 +0000</pubDate>
      <link>https://dev.to/kumologica-org/serverless-integration-with-salesforce-using-kumologica-52ck</link>
      <guid>https://dev.to/kumologica-org/serverless-integration-with-salesforce-using-kumologica-52ck</guid>
      <description>&lt;p&gt;Salesforce is a popular CRM platform used by many enterprises. Integration of salesforce modules with different enterprise systems are very common. There are multiple ways by which salesforce objects can be integrated .&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;SOQL query (Pulling the records)&lt;/li&gt;
&lt;li&gt;Platform Events (Pushing the events)&lt;/li&gt;
&lt;li&gt;CDC (Pushing the events)&lt;/li&gt;
&lt;li&gt;OutboundMessages (Pushing the events using webhooks)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most of the real time integrations with Salesforce works with PE(platform events), CDC and OutboundMessages. There are also solutions where SOQL query works in complementary with PE, CDC or OutboundMessages (Webhooks).&lt;/p&gt;

&lt;p&gt;In this article we will see how to send a Salesforce outbound message to the target systems using &lt;a href="'https://www.kumologica.com/'"&gt;Kumologica&lt;/a&gt; flow that runs on serverless infrastructure. For those who are new to Kumologica I would recommend to go through our &lt;a href="'https://medium.com/@kumologica/'"&gt;articles&lt;/a&gt; and &lt;a href="'https://www.youtube.com/channel/UCsTDAlhijUFpsfThJu3hF9g'"&gt;youtube&lt;/a&gt; videos to get an insight.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8GMa1Vpw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AvaBjqAE1TxqmU7kY87DWnA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8GMa1Vpw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AvaBjqAE1TxqmU7kY87DWnA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;Concept&lt;/h2&gt;

&lt;p&gt;Before we begin let’s try to understand the working mechanism behind &lt;a href="'https://developer.salesforce.com/docs/atlas.en-us.api.meta/api/sforce_api_om_outboundmessaging_understanding.htm'"&gt;outbound messages in Salesforce&lt;/a&gt;.&lt;br&gt;
OutboundMessages in salesforce is part of workflow in salesforce. The underlying mechanism is based on webhook notification. Whenever a change happens in any salesforce objects an associated outbound message is triggered by the workflow rule. The change can be an insert, update or a delete of an salesforce object. The outbound message is configured with a HTTP post endpoint. Salesforce outbound message will invoke the endpoint to send a SOAP payload having the appropriate object fields (eg : Case, Contact, etc).&lt;/p&gt;

&lt;h2&gt;Use Case&lt;/h2&gt;

&lt;p&gt;In this use case we will be using the Salesforce contact object. Whenever a new contact is created in Salesforce an event is triggered which will be sent to the target system by Kumologica flow. Here the target system is Amazon SQS queue.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NkSRpLLv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2Ao2ojOTamZrB3EFSupwVLPw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NkSRpLLv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2Ao2ojOTamZrB3EFSupwVLPw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The HTTP endpoint implementation will be done using Kumologica designer. The Kumologica flow will be then deployed on AWS Lambda. After the deployment we will copy the gateway endpoint which is then configured on the outboundMessage section in Salesforce.&lt;/p&gt;

&lt;h2&gt;Prerequisite&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Salesforce account — For configuring the outbound message connecting contact module.&lt;/li&gt;
&lt;li&gt;Kumologica Designer — &lt;a href="'https://www.kumologica.com/download.html'"&gt;Download&lt;/a&gt; the designer for building the flow.&lt;/li&gt;
&lt;li&gt;AWS account — For running the Kumologica flow as lambda and for hosting the SQS queue.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Implementation&lt;/h2&gt;

&lt;p&gt;We will be creating ContactInboundService flow in Kumologica designer. This flow will expose the endpoint on the resource path &lt;i&gt;/sfdc&lt;/i&gt;.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;ContactInboundService flow&lt;/b&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ti_G4sjM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2A7gTDM07G5wPk-M6rtUFvZw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ti_G4sjM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2A7gTDM07G5wPk-M6rtUFvZw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;Steps&lt;b&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Kumologica Designer, click the Home button and choose Create New Kumologica Project.&lt;/li&gt;
&lt;li&gt;Enter name (for example ContactInboundService), select directory for project.&lt;/li&gt;
&lt;li&gt;Press Create Button.&lt;/li&gt;
&lt;li&gt;Drag and drop EventListener node to the canvas the provide the following configuration.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Display Name :  POST /sfdc
Provider : AWS
Event Source : Amazon API gateway
Verb : POST
URL : /sfdc

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Add a Logger node and wire with the EventListener node. Provide the following message.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
'Request received - ' &amp;amp; msg.payload

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Drag and drop the Set-Property node to the canvas and wire it with the logger node. Provide the following configuration.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Display Name :  ConvertToString
Rules :
   Set : msg.payload
   To  : J: $string(msg.payload) 

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; J : is the JSONata expression to be selected from the drop down.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add the SQS node to canvas and wire it with the Set-Propery node. Provide the following configuration.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Operation : SendMessage
QueueUrl : &amp;lt;&amp;lt;SQS queue url&amp;gt;&amp;gt;
MessageBody : msg.payload

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Ensure that you have an SQS queue created in your AWS account and you have the queue url for configuring in the SQS node. Refer : &lt;a href="https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html#step-create-queue"&gt;https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-getting-started.html#step-create-queue&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add EventListener End node and wire with the SQS node. Provide the following configuration.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Display Name :  Success
Status Code : 200
Content-Type : application/json
Payload : {"status": "completed"}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;Deployment&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Select AWS icon on the right hand side vertical tab of Kumologica designer, select your AWS Profile.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; If you haven’t mapped the your local AWS profile with the designer then you may follow the below video to configure it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/embed/0HetFCqWQ6Q"&gt;Set profile video&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click Connect. If successfully connected will show the rest of the configuration options.&lt;/li&gt;
&lt;li&gt;Set the Memory to 512mb and Timeout as 20 seconds.&lt;/li&gt;
&lt;li&gt;Go to “Trigger” section under cloud tab and select the Amazon API Gateway trigger.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6AHxgu3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1396/0%2A7Idwo_QCm4IjPkUT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6AHxgu3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1396/0%2A7Idwo_QCm4IjPkUT.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Post successful deployment copy the endpoint url from the Kumologica terminal. We will need this endpoint for configuring the OutboundMessage in Salesforce.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Url eg: https://ii48n22.execute-api.ap-southeast-2.amazonaws.com/test

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Configuring OutboundMessage in Salesforce&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to your salesforce Account and search for Outbound Messages.&lt;/li&gt;
&lt;li&gt;On the Outbound Message screen , create a “New Outbound Message”&lt;/li&gt;
&lt;li&gt;Select the object as “Contact” and Click Next. Provide the following details.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0ApcHS9N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2ADdwV8-XszMIkX13b8LNNQQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0ApcHS9N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2ADdwV8-XszMIkX13b8LNNQQ.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1sfIRfVT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AxPoY0oKuc53FmeDlh-3Qyg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1sfIRfVT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AxPoY0oKuc53FmeDlh-3Qyg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click Save. Now you have created an Outbound Message.&lt;/li&gt;
&lt;li&gt;Let’s map the Outbound Message to the workflow rule.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eKmtoZaO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AQRbmkUuUqr7xAqa41N0TQw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eKmtoZaO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AQRbmkUuUqr7xAqa41N0TQw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PB-btRDU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AIZerJUHOostHoc194JTgrA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PB-btRDU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AIZerJUHOostHoc194JTgrA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The above rule configuration ensures that anytime a contact is created with the description that starts with “ABC” the workflow will invoke the Outbound Message.&lt;br&gt;
Now we will map the “ContactWebhook” OutboundMessage we have created in the earlier step to this workflow rule we are configuring.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;From “Add Workflow Action” click on “Select Existing Action”.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qsj54X0V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AbaHKMitGJfTwtJDio6euqw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qsj54X0V--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AbaHKMitGJfTwtJDio6euqw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the type select “OutboundMessage”.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bCxeqlDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AkcV9bM916pnL-ATVahxelA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bCxeqlDZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AkcV9bM916pnL-ATVahxelA.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now you will see the “ContactWebhook” in the Available Actions list. Add it and Save.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Now we are ready to rock n roll.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;Testing&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Go to the Salesforce contact module and create a new contact.&lt;/li&gt;
&lt;li&gt;Go to the AWS account and look into the SQS queue. You will observe that a SOAP message is now available in the queue.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Migration from Mulesoft to Kumologica — Part 2</title>
      <dc:creator>ab73863</dc:creator>
      <pubDate>Sat, 12 Dec 2020 21:53:09 +0000</pubDate>
      <link>https://dev.to/kumologica-org/migration-from-mulesoft-to-kumologica-part-2-5123</link>
      <guid>https://dev.to/kumologica-org/migration-from-mulesoft-to-kumologica-part-2-5123</guid>
      <description>&lt;p&gt;In our previous article “&lt;a href="https://kumologica.medium.com/migration-from-mulesoft-to-kumologica-part-1-ac2ed8e25263"&gt;Migration from Mulesoft to Kumologica — Part 1&lt;/a&gt;” we took you through the basic nodes in Kumologica that can replace the Mulesoft processors. We also discussed about some of the popular patterns used in &lt;a href="https://www.kumologica.com"&gt;Kumologica&lt;/a&gt; and Mulesoft. If you haven’t got chance to read the article I would suggest to go through our &lt;a href="https://kumologica.medium.com/migration-from-mulesoft-to-kumologica-part-1-ac2ed8e25263"&gt;part 1&lt;/a&gt; article to get the basics ready for the migration exercise.&lt;/p&gt;

&lt;p&gt;This is the second part of our four part series which will take a deep dive through a real-time use case of migrating a service that is developed on Mulesoft. The Mulesoft service described in this article will cover some of the patterns mentioned in our earlier article and we will learn how to migrate this service into Kumologica without negotiating the pattern.&lt;/p&gt;

&lt;p&gt;For those who are new to Kumologica I would recommend to go through our &lt;a href="https://medium.com/@kumologica/"&gt;articles&lt;/a&gt; and &lt;a href="https://www.youtube.com/channel/UCsTDAlhijUFpsfThJu3hF9g"&gt;youtube&lt;/a&gt; videos to get an insight. &lt;a href="https://kumologica.com/"&gt;Kumologica&lt;/a&gt; is one of the early players in this space which brings the benefits of the low-code integration capability of traditional integration like Mulesoft to the new world of Serverless. It provides a drag and drop visual designer and low code approach to ensure the greatest speed and flexibility to support a wide range of integrations compatible with most of the platforms and cloud providers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use case
&lt;/h2&gt;

&lt;p&gt;An order processing service for an e-commerce platform is developed in Mulesoft Anypoint studio and deployed on CloudHub. The service consists of an API that accepts the order processing request (experience api) from the e-commerce UI and puts into Amazon SQS queue. Another service (process) that listens to the Amazon SQS queue to get the request message and send to two different service in parallel for processing i.e packaging service(out of scope) and logistic service(out of scope). In case of a failure the order processing request will be pushed into the re-processing queue in Amazon SQS. This design is typically based on API led approach of Mulesoft.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--19Es_Zan--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A8rc7vhCaqif2bUFgdcxK9g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--19Es_Zan--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A8rc7vhCaqif2bUFgdcxK9g.png" alt="High level service layout"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Order Processing Service (Mulesoft)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The experience API in Order processing service is named as exp-orderprocessing-service. The e-commerce platform UI invokes the exp-orderprocessing-service which accepts the request message and publish into the SQS queue (order_process_queue). The service transforms the request message into a canonical structure before publishing to the queue. In case of a failure the error the will be notified via email.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kU-yZG7b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AAVGTbVns3NwFQnxtwl12jQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kU-yZG7b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AAVGTbVns3NwFQnxtwl12jQ.png" alt="*exp-orderprocessing-service*"&gt;&lt;/a&gt;&lt;strong&gt;exp-orderprocessing-service&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The process API in Order processing service is named as biz-orderprocessing-service. The service listens to the order_process_queue which receives the canonical message which will be transformed and send to packaging and logistics service in parallel for further processing. Mulesoft service uses scatter gather pattern processors to broadcast the message to the services in parallel. In case of a failure the payload will be submitted to re-process queue (order_reprocess_queue) and the error will be notified via email.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VsyFSn0G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A-ozrtJunULqSAukgXT2uzw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VsyFSn0G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A-ozrtJunULqSAukgXT2uzw.png" alt="biz-*orderprocessing-service*"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Migrating to Kumologica
&lt;/h2&gt;

&lt;p&gt;In this exercise we have two Mulesoft service to migrate which are developed on Mule 3.9.0. The first service to migrate will be the experience API (exp-orderprocessing-service) and the second service is the process API (biz-orderprocessing-service).&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisite
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Kumologica designer installed in your machine. &lt;a href="https://kumologica.com/download.html"&gt;https://kumologica.com/download.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;exp-orderprocessing-service&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2MzA2Nob--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3168/1%2As3IAz5e87vFLzfAX5TUj3A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2MzA2Nob--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3168/1%2As3IAz5e87vFLzfAX5TUj3A.png" alt="*exp-orderprocessing-service*"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open Kumologica Designer, click the &lt;em&gt;Home&lt;/em&gt; button and choose &lt;em&gt;Create New Kumologica Project&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter name (&lt;strong&gt;&lt;em&gt;exp-orderprocessing-service&lt;/em&gt;&lt;/strong&gt;) and select directory for project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;press &lt;em&gt;Create&lt;/em&gt; Button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Drag and drop EventListener node to the canvas. From mulesoft flow HTTP listener copy the Name, Path and the Method. Open the EventListener settings and provide as given below.&lt;/p&gt;

&lt;p&gt;Name = Name copied from Mulesoft HTTP listener&lt;br&gt;
Path = Path copied from Mulesoft HTTP listener&lt;br&gt;
Verb = Method copied from Mulesoft HTTP listener&lt;br&gt;
Event Source : Amazon API gateway&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add Logger node and provide the message provided in Mulesoft flow.&lt;/p&gt;

&lt;p&gt;Name = Name copied from Mulesoft Logger&lt;br&gt;
Message = Message copied from Mulesoft Logger&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Edit the MEL expression as given below.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;**MEL expression in logger**
#[{"service name" : "exp-orderprocessing-service","object": "order","payload": **message**.**payload**,"logpoint": "Entry"}]

**Modified expression in Kumologica logger
**{"service name" : "exp-orderprocessing-service","object": "order","payload": **msg**.**payload**,"logpoint": "Entry"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add datamapper and provide the following.&lt;/p&gt;

&lt;p&gt;Dataweave expression in Mulesoft&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
"tx_orderid": payload.OrderID,&lt;br&gt;
"tx_product": {&lt;br&gt;
"tx_productname": payload.Product.'ProductName',&lt;br&gt;
"tx_productid": payload.Product.ProductID,&lt;br&gt;
"tx_sku": payload.SKU,&lt;br&gt;
"tx_desc": {&lt;br&gt;
"Colour": payload.Description.Colour,&lt;br&gt;
"Width": payload.Description.Width,&lt;br&gt;
"Height": payload.Description.Height,&lt;br&gt;
"Depth": payload.Description.Depth,&lt;br&gt;
"Weight": payload.Description.Weight&lt;br&gt;
},&lt;br&gt;
"tx_qty": payload.Quantity&lt;br&gt;
},&lt;br&gt;
"t_processdate" : now(),&lt;br&gt;
"t_deldate" : payload.DelDate,&lt;br&gt;
"t_addr" : {&lt;br&gt;
"unit" : payload.Address.Unit,&lt;br&gt;
"strt" : payload.Address.Street,&lt;br&gt;
"state" : payload.Address.State,&lt;br&gt;
"country" : payload.Address.Country,&lt;br&gt;
"pin" : payload.Address.Pin&lt;br&gt;
}&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;Modified expression in Kumologica&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
"tx_orderid": msg.payload.OrderID,&lt;br&gt;
"tx_product": {&lt;br&gt;
"tx_productname": msg.payload.Product.'ProductName',&lt;br&gt;
"tx_productid": msg.payload.Product.ProductID,&lt;br&gt;
"tx_sku": msg.payload.SKU,&lt;br&gt;
"tx_desc": {&lt;br&gt;
"Colour": msg.payload.Description.Colour,&lt;br&gt;
"Width": msg.payload.Description.Width,&lt;br&gt;
"Height": msg.payload.Description.Height,&lt;br&gt;
"Depth": msg.payload.Description.Depth,&lt;br&gt;
"Weight": msg.payload.Description.Weight&lt;br&gt;
},&lt;br&gt;
"tx_qty": msg.payload.Quantity&lt;br&gt;
},&lt;br&gt;
"t_processdate" : now(),&lt;br&gt;
"t_deldate" : msg.payload.DelDate,&lt;br&gt;
"t_addr" : {&lt;br&gt;
"unit" : msg.payload.Address.Unit,&lt;br&gt;
"strt" : msg.payload.Address.Street,&lt;br&gt;
"state" : msg.payload.Address.State,&lt;br&gt;
"country" : msg.payload.Address.Country,&lt;br&gt;
"pin" : msg.payload.Address.Pin&lt;br&gt;
}&lt;br&gt;
}&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add Amazon SQS node and provide the following&lt;/p&gt;

&lt;p&gt;Name = Name copied from Mulesoft SQS connector&lt;br&gt;
QueueUrl = Queue url copied from Mulesoft SQS connector&lt;br&gt;
MessageBody = msg.payload&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Logger node and follow procedure in step 5.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add EventListener End node and provide the following. EventListener End node is the final node in any Kumolgica flow and this step is the only additional component when compared to Mulesoft flow.&lt;/p&gt;

&lt;p&gt;Name : Completed&lt;br&gt;
Payload : {"status" : "completed"}&lt;br&gt;
Status Code :  200&lt;br&gt;
Content-Type :  application/json&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;For the exception handling&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Add the catch node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the logger node and wire to catch node and follow as in step 5.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the Email node and wire to logger node. Provide the following.&lt;/p&gt;

&lt;p&gt;Name = Name copied from Mulesoft SMTP node&lt;br&gt;
Host = Host copied from Mulesoft SMTP node&lt;br&gt;
Port = Port copied from Mulesoft SMTP node&lt;br&gt;
Username = Username copied from Mulesoft SMTP node&lt;br&gt;
Password = Password copied from Mulesoft SMTP node&lt;br&gt;
To = To copied from Mulesoft SMTP node&lt;br&gt;
From = From copied from Mulesoft SMTP node&lt;br&gt;
Cc = Cc copied from Mulesoft SMTP node&lt;br&gt;
Body =  msg.payload&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add EventListener End node and provide the following.&lt;/p&gt;

&lt;p&gt;Name : Failure&lt;br&gt;
Payload : {"status" : "Failed"}&lt;br&gt;
Status Code :  500&lt;br&gt;
Content-Type :  application/json&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;biz-orderprocessing-service&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P4UEQ5Rp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4868/1%2A9xprh7g5CAMcH9WyLtbEzA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4UEQ5Rp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4868/1%2A9xprh7g5CAMcH9WyLtbEzA.png" alt="biz-orderprocessing-service"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open Kumologica Designer, click the &lt;em&gt;Home&lt;/em&gt; button and choose &lt;em&gt;Create New Kumologica Project&lt;/em&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enter name (biz-orderprocessing-service) and select directory for project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;press &lt;em&gt;Create&lt;/em&gt; Button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Drag and drop EventListener node to the canvas and provide the settings as given below.&lt;/p&gt;

&lt;p&gt;Name : Name from Mulesoft SQS listener connector&lt;br&gt;
Event Source : SQS&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Note : SQS queue is attached to the biz-orderprocessing-service flow during the deployment under the cloud tab and hence queue url details is not provided in this node. We will be covering this in detail in our next article.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add Logger node and provide the message provided in Mulesoft flow.&lt;/p&gt;

&lt;p&gt;Name = Name copied from Mulesoft Logger&lt;br&gt;
Message = Message copied from Mulesoft Logger&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Edit the MEL expression as given below.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MEL expression in logger
#[{"service name" : "biz-orderprocessing-service","object": "order","payload": message.payload,"logpoint": "Entry"}]

**Modified expression in Kumologica logger
**{"service name" : "biz-orderprocessing-service","object": "order","payload": msg.payload,"logpoint": "Entry"}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Add the Set-Property node to store the payload. This is required for message re-processing incase of a failure.&lt;/p&gt;

&lt;p&gt;Set &lt;br&gt;
    $vars.setpayload&lt;br&gt;
from&lt;br&gt;
    msg.payload&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the Scatter node and wire to Set-Property node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add two Datamapper node and wire both the datamapper node to the Scatter node. Follow the procedure as in step 6 of exp-orderprocessing-service.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add two HTTP Req node and wire the each node to the datamapper node. From the mulesoft copy the details from HTTP requestor node from InvokePackagingService and InvokeLogisticsService. Provide the copied detail as given below .&lt;/p&gt;

&lt;p&gt;Name : Name of the Mulesoft HTTP Requestor node&lt;br&gt;
Path : Path of the Mulesoft HTTP Requestor node&lt;br&gt;
Method : Path of the Mulesoft HTTP Requestor node&lt;br&gt;
Header : Header of the Mulesoft HTTP Requestor node&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the logger node after both HTTP Req node and follow as in step 5.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the Gather node to the canvas and wire both the logger nodes to the input terminal of gather node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the logger node for Exit point. Follow the procedure as in step 5.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add EventListener End node and provide the following. EventListener End node is the final node in any Kumolgica flow and this step is the only additional component when compared to Mulesoft flow.&lt;/p&gt;

&lt;p&gt;Name : Completed&lt;br&gt;
Payload : {"status" : "completed"}&lt;br&gt;
Status Code :  200&lt;br&gt;
Content-Type :  application/json&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;For the exception handling&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Add the catch node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add the logger node and wire to catch node and follow the procedure as in step 5.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the SQS node and provide the following.&lt;/p&gt;

&lt;p&gt;Name = Name copied from Mulesoft SQS connector&lt;br&gt;
QueueUrl = Queue url copied from Mulesoft SQS connector&lt;br&gt;
MessageBody = vars.storepayload&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add the Email node and wire to logger node. Provide the following.&lt;/p&gt;

&lt;p&gt;Name = Name copied from Mulesoft SMTP node&lt;br&gt;
Host = Host copied from Mulesoft SMTP node&lt;br&gt;
Port = Port copied from Mulesoft SMTP node&lt;br&gt;
Username = Username copied from Mulesoft SMTP node&lt;br&gt;
Password = Password copied from Mulesoft SMTP node&lt;br&gt;
To = To copied from Mulesoft SMTP node&lt;br&gt;
From = From copied from Mulesoft SMTP node&lt;br&gt;
Cc = Cc copied from Mulesoft SMTP node&lt;br&gt;
Body =  msg.payload&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add EventListener End node and provide the following.&lt;/p&gt;

&lt;p&gt;Name : Failure&lt;br&gt;
Payload : {"status" : "Failed"}&lt;br&gt;
Status Code :  500&lt;br&gt;
Content-Type :  application/json&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This article has shown you how easy to move a Mulesoft flow to Kumologica without any changes to the flow pattern and with very minimal changes to the MEL expressions used in Mulesoft. Stay tuned for our next part in this series with more interesting use case and migration tricks.&lt;/p&gt;

&lt;p&gt;Remember Kumologica is totally free to &lt;a href="https://kumologica.com/download.html"&gt;download&lt;/a&gt; and use. Go ahead and give it a try, we would love to hear your feedback. For more details and enterprise support on moving your Mulesoft flows to Kumologica &lt;a href="https://kumologica.com/contact.html"&gt;connect with us &lt;/a&gt;.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>microservices</category>
      <category>integration</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Migration from Mulesoft to Kumologica— Part 1</title>
      <dc:creator>ab73863</dc:creator>
      <pubDate>Fri, 27 Nov 2020 11:18:35 +0000</pubDate>
      <link>https://dev.to/kumologica-org/migration-from-mulesoft-to-kumologica-part-1-1278</link>
      <guid>https://dev.to/kumologica-org/migration-from-mulesoft-to-kumologica-part-1-1278</guid>
      <description>&lt;p&gt;In our previous article “&lt;a href="https://medium.com/@kumologica/a-journey-from-mulesoft-to-serverless-integration-c906e2670745" rel="noopener noreferrer"&gt;A journey from MuleSoft to Serverless Integration&lt;/a&gt;” we discussed the need, benefits, use case and an example of moving a Mulesoft flow on to serverless based implementation using Kumologica. Based on the feedback we have received from our users we are introducing an article series demonstrating the migration of popular flow patterns and components from Mulesoft to Kumologica.&lt;/p&gt;

&lt;p&gt;This is the first part of our four part series we are publishing which takes you through the steps for migrating your application from Mulesoft to a serverless integration using Kumologica. Mulesoft follows the EAI (Enterprise application Integration) patterns based on which the Mulesoft processors and connectors are aligned. We will discuss some of these patterns as we move through the series.&lt;/p&gt;

&lt;p&gt;For those who are new to Kumologica I would recommend to go through our &lt;a href="https://medium.com/@kumologica/" rel="noopener noreferrer"&gt;articles&lt;/a&gt; and &lt;a href="https://www.youtube.com/channel/UCsTDAlhijUFpsfThJu3hF9g" rel="noopener noreferrer"&gt;youtube&lt;/a&gt; videos to get an insight. &lt;a href="https://kumologica.com/" rel="noopener noreferrer"&gt;Kumologica&lt;/a&gt; is one of the early players in this space which brings the benefits of the low-code integration capability of traditional integration like Mulesoft to the new world of Serverless. It provides a drag and drop visual designer and low code approach to ensure the greatest speed and flexibility to support a wide range of integrations compatible with most of the platforms and cloud providers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Flow elements
&lt;/h2&gt;

&lt;p&gt;As a developer, before taking the initial steps in migrating the from Mulesoft it is important to understand the basic elements of Kumologica that can replace the Mulesoft processors. A Mulesoft flow consists of connectors and processors. In Kumologica this is called as nodes. Nodes in Kumologica can be connectors as well as processors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flows and subflows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Mulesoft the flow consists of a source that can trigger the processing section which holds set of processors. eg. HTTP listener in source section of flow triggering the logger in processing section. The subflow unlike flow consists of only processing section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AnvWA0VgCFCGeUvJUxlUI5g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AnvWA0VgCFCGeUvJUxlUI5g.png" alt="Mulesoft flow and a subflow"&gt;&lt;/a&gt;&lt;em&gt;Mulesoft flow and a subflow&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In Kumologica the flow block is represented with an &lt;strong&gt;Eventlistener&lt;/strong&gt; and &lt;strong&gt;Eventlistener End&lt;/strong&gt; node. The Evenlistener node is the triggering section and all the processing nodes placed between the Eventlistener node and Eventlistener End node. The subflow equivalent in Kumologica is &lt;strong&gt;Processor In&lt;/strong&gt; and &lt;strong&gt;Processor Out&lt;/strong&gt; node.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2392%2F1%2AwgKph3tDbLjnd888ZhR4lQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2392%2F1%2AwgKph3tDbLjnd888ZhR4lQ.png" alt="Kumologica flow and subflow"&gt;&lt;/a&gt;&lt;em&gt;Kumologica flow and subflow&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Message routing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Mulesoft, the popular message routing processors are choice, collection splitter, collection aggregator and scatter-gather.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Route based on condition&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Choice router is the processor in Mulesoft for routing the flow based on a condition.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ARLDajDWlNbINDpTh5nj3aQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ARLDajDWlNbINDpTh5nj3aQ.png" alt="Mulesoft flow with choice block"&gt;&lt;/a&gt;&lt;em&gt;Mulesoft flow with choice block&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In Kumologica we use &lt;strong&gt;switch&lt;/strong&gt; node which routes the flow based on a given condition.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2100%2F1%2AJmf6uE-Ke5BEb3o_t9cmzg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2100%2F1%2AJmf6uE-Ke5BEb3o_t9cmzg.png" alt="Kumologica flow with switch node"&gt;&lt;/a&gt;&lt;em&gt;Kumologica flow with switch node&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Split message to fragments&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In Mulesoft a collection object (array) is split into individual records or fragments and send to next processor using collection splitter. The end of collection iteration is managed by collection aggregator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AdPKi-BZFWMCi8UYP5GTNDw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AdPKi-BZFWMCi8UYP5GTNDw.png" alt="Individual records send to database after split"&gt;&lt;/a&gt;&lt;em&gt;Individual records send to database after split&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In Kumologica an array of record is split into individual records or fragments and send to next node using &lt;strong&gt;split&lt;/strong&gt; node and &lt;strong&gt;join&lt;/strong&gt; node. Here the split is equivalent to collection splitter and join is equivalent to collection aggregator.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2256%2F1%2AhlVFMpRh-9v-3uD6IgOkoA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2256%2F1%2AhlVFMpRh-9v-3uD6IgOkoA.png" alt="Individual records send to database after split"&gt;&lt;/a&gt;&lt;em&gt;Individual records send to database after split&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sending message to multiple targets&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In Mulesoft a of copy message is send to multiple targets and the response from each target is collected using scatter-gather processor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AwDIdOOHByY8qvBioCj9xAA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AwDIdOOHByY8qvBioCj9xAA.png" alt="Mule flow with scatter-gather processor"&gt;&lt;/a&gt;&lt;em&gt;Mule flow with scatter-gather processor&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In Kumologica a copy of message is send to multiple targets the response from each target is collected using &lt;strong&gt;scatter&lt;/strong&gt; and &lt;strong&gt;gather&lt;/strong&gt; node.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2532%2F1%2AWqwXFtk4maK958fjSRnyHQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2532%2F1%2AWqwXFtk4maK958fjSRnyHQ.png" alt="Scatter gather node in Kumologica flow"&gt;&lt;/a&gt;&lt;em&gt;Scatter gather node in Kumologica flow&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Message Transformation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Mulesoft, the popular message transformation processors are dataweave, JSON-Object, XML-Object etc. Dataweave is the heavily used data mapping processor in Mulesoft which following dataweave scripting expression language.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AlYRLO_gx1gZkK1Fjzr0kag.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AlYRLO_gx1gZkK1Fjzr0kag.png" alt="Dataweave editor"&gt;&lt;/a&gt;&lt;em&gt;Dataweave editor&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In Kumologica, Datamapper plays the role of data mapping. It follows JSONata based scripting. For more details on &lt;a href="https://jsonata.org/" rel="noopener noreferrer"&gt;JSONata&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3352%2F1%2A4NO34AZNPvpv0qdRuV5lSg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3352%2F1%2A4NO34AZNPvpv0qdRuV5lSg.png" alt="Datamapper editor"&gt;&lt;/a&gt;&lt;em&gt;Datamapper editor&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom logic implementation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Mulesoft the custom logic is implemented primarily using Java component. In Kumologica this is achieved using the &lt;strong&gt;function&lt;/strong&gt; node. The function node allows you the write the code in javascript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Message structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Mulesoft message structture&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3196%2F1%2APeG6ikiYzL0__s7Jx2Qxzg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3196%2F1%2APeG6ikiYzL0__s7Jx2Qxzg.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kumologica message structure&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AEPFTH-cIfDarG_r1y6zpXw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AEPFTH-cIfDarG_r1y6zpXw.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mule message structure and Kumologica message structure are almost similar structure with very minimal difference in hierarchy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Accessing message structure&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In Mulesoft message structure is accessed using MEL expression or using dataweave script. In Kumologica message structure is accessed using JSONata expression.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Accessing payload&lt;/em&gt; &lt;em&gt;in&lt;/em&gt; &lt;em&gt;Mulesoft&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;In mule 3.9 and lower
#[message.payload]
In mule 4.0 and above
#[payload]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Accessing payload in Kumologica&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;msg.payload
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Accessing variables in Mulesoft&lt;/em&gt;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#[flowVars.&amp;lt;&amp;lt;variable name&amp;gt;&amp;gt;]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;em&gt;Accessing variables in Kumologica&lt;/em&gt;&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vars.&amp;lt;&amp;lt;variable name&amp;gt;&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Conclusion&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;This article would have given you the basic understanding on the flow construct that we will be using and referring in our next article in the series where we will migrate a real time Mule flow to Kumologica and deep dive further into each flow elements.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>serverless</category>
      <category>microservices</category>
    </item>
    <item>
      <title>How to split the records in Kumologica</title>
      <dc:creator>ab73863</dc:creator>
      <pubDate>Sun, 08 Nov 2020 07:07:02 +0000</pubDate>
      <link>https://dev.to/kumologica-org/how-to-split-the-records-in-kumologica-50g5</link>
      <guid>https://dev.to/kumologica-org/how-to-split-the-records-in-kumologica-50g5</guid>
      <description>&lt;p&gt;In this article I am going to demonstrate on how to split a given input object or record in Kumologica. In order to split an object or an array or a string,  Kumologica provides split and join node which are required to be used in combination.  You may wire as many parallel path between split and a join node. Every path wired between split and join node will be invoked for each iterated or record splitted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Split node supports&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Iterating or lopping through an array. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Tokenizing a simple string based on provided character separator.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Splitting a object based on keys.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Join node is always used along with split node in order to close the loop or to combine the response from different flow path initiated from the split node.&lt;/p&gt;

&lt;p&gt;Let's go through each of the above mentioned operations supported by the Split node.&lt;/p&gt;

&lt;h3&gt;Iterating or lopping through an array&lt;/h3&gt;

&lt;p&gt;When you have a requirement for a an array to be iterated or looped through and do some actions with the each record or object that has been iterated then you can choose this option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--r3HrOfTf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yneu8hjo1td75lfujzpa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--r3HrOfTf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/yneu8hjo1td75lfujzpa.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration in Split node in Kumologica&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NfJEOxf2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6xuqq1lg74izsmf3ric5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NfJEOxf2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/6xuqq1lg74izsmf3ric5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Splitting a simple string based on provided character separator&lt;/h3&gt;

&lt;p&gt;When you have a requirement for a string to be tokenized based on some separator then you may use this option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6EtOsIOZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xamjykbersbdx3wvc7sw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6EtOsIOZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/xamjykbersbdx3wvc7sw.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration in Split node in Kumologica&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nseR20dD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nn59cjygaq1sjw2ptuj3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nseR20dD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nn59cjygaq1sjw2ptuj3.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;Splitting a object based on keys&lt;/h3&gt;

&lt;p&gt;When you have a requirement for iterating through an object based on its keys then you may choose this option.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JGD6ywct--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/93hskf34vqpbf6t9fjix.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JGD6ywct--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/93hskf34vqpbf6t9fjix.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Configuration in Split node in Kumologica&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TfRxcWP_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iudk3kqa87lbef1xq2kl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TfRxcWP_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iudk3kqa87lbef1xq2kl.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flow demonstrating the split and join&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T0JUURIb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e1pr7ww2o4xplojkn32d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T0JUURIb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/e1pr7ww2o4xplojkn32d.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;References&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://docs.kumologica.com/docs/references/CoreRouting.html#split"&gt;https://docs.kumologica.com/docs/references/CoreRouting.html#split&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.kumologica.com/docs/guide/GettingStarted.html"&gt;https://docs.kumologica.com/docs/guide/GettingStarted.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/results?search_query=kumologica"&gt;https://www.youtube.com/results?search_query=kumologica&lt;/a&gt;&lt;/p&gt;

</description>
      <category>aws</category>
      <category>microservices</category>
      <category>kumologica</category>
      <category>integration</category>
    </item>
    <item>
      <title>Building a serverless IoT backend integration</title>
      <dc:creator>ab73863</dc:creator>
      <pubDate>Tue, 11 Aug 2020 14:28:24 +0000</pubDate>
      <link>https://dev.to/kumologica-org/building-a-serverless-iot-backend-integration-2966</link>
      <guid>https://dev.to/kumologica-org/building-a-serverless-iot-backend-integration-2966</guid>
      <description>&lt;p&gt;Having a lightweight protocol which delivers messages over low bandwidth or unreliable networks is the foundation for a system that can facilitate the transports of data in near real time.&lt;/p&gt;

&lt;p&gt;MQTT is one such protocol which designed to overcome following limitations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network limitation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Limited network bandwidth&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;High latency&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Fragile connections&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Device Limitation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Limited memory&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Processing capabilities&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;MQTT is an open OASIS and ISO standard lightweight, publish-subscribe network protocol that transports messages between devices. The protocol usually runs over TCP/IP; however, any network protocol that provides ordered, lossless, bi-directional connections can support MQTT.&lt;/p&gt;

&lt;p&gt;In this article we will be building a serverless backend service on AWS lambda which will integrate with a MQTT broker for publishing the passenger service request to the right group of taxi drivers. We will be building the passenger request API using Kumologica. &lt;a href="https://www.kumologica.com/"&gt;Kumologica&lt;/a&gt; is a free low-code development tool to build serverless integrations. You can learn more about Kumologica in this &lt;a href="https://medium.com/@kumologica/kumologica-first-low-code-development-tool-for-aws-lambda-8831b5237428"&gt;medium article&lt;/a&gt; or subscribe to our YouTube &lt;a href="https://www.youtube.com/channel/UCsTDAlhijUFpsfThJu3hF9g"&gt;channel&lt;/a&gt; for the latest videos.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Use case&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In this use case we are having a passenger making a request from his mobile app for a taxi. The mobile app makes a call to the Kumologica &lt;em&gt;passenger requester API&lt;/em&gt; which accepts the request and verifies in the database for the availability of the cab. Based on the availability status and the type of taxi requested by the passenger the flow will route the message to publish in the appropriate taxi topic on MQTT broker. The driver app will receive the message from the MQTT broker.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9XxsNAv_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AWJSOxFKZOh4oRjmiU9jgXw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9XxsNAv_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AWJSOxFKZOh4oRjmiU9jgXw.png" alt="High level use case flow"&gt;&lt;/a&gt;&lt;em&gt;High level use case flow&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; In this article we are not covering the section where the driver app accepts the request and sends confirmation to the passenger. If you are interested in this section please let us know and we will put another article covering this use case.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisite
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Kumologica designer installed in your machine. &lt;a href="https://kumologica.com/download.html"&gt;https://kumologica.com/download.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.hivemq.com/public-mqtt-broker/"&gt;https://www.hivemq.com/public-mqtt-broker/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DynamoDB table with the following records.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ji2N7WDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3028/1%2ARPtyOg_cnSI1y37rYJllQg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ji2N7WDi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3028/1%2ARPtyOg_cnSI1y37rYJllQg.png" alt="DynamoDB table structure and data"&gt;&lt;/a&gt;&lt;em&gt;DynamoDB table structure and data&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Implementation
&lt;/h2&gt;

&lt;p&gt;In order to implement the Passenger request API we will be following the below given logic&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3-YuhI-l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AnyBFIgZtfS_FRahKs94sBQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3-YuhI-l--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2AnyBFIgZtfS_FRahKs94sBQ.png" alt="Flow logic"&gt;&lt;/a&gt;&lt;em&gt;Flow logic&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open Kumologica Designer, click the &lt;em&gt;Home&lt;/em&gt; button and choose &lt;em&gt;Create New Kumologica Project&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enter name (for example PassengerRequestAPI), select directory for project and switch &lt;em&gt;Source&lt;/em&gt; into &lt;em&gt;From Existing Flow …&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;2.Copy and Paste the following &lt;a href="https://github.com/KumologicaHQ/kumologica-demos/tree/master/IoTSampleUsingMQTT"&gt;flow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3.press &lt;em&gt;Create&lt;/em&gt; Button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install MQTT Node.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MQTT node is a contribution node and must be explicitly installed in Kumologica Designer. Press &lt;em&gt;Add more nodes&lt;/em&gt; button located in the bottom left corner of designer. You will be presented screen with all contribution nodes that are currently available. Choose MQTT node, press &lt;em&gt;Install&lt;/em&gt; button. After few seconds, plugin will be installed and you will be prompted to restart Kumologica Designer. MQTT node will be located under the new category: &lt;em&gt;Platforms&lt;/em&gt; after restart.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ze5t_hCK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4428/1%2ADr8pZGY8HNGJ_MozYrv54w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ze5t_hCK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4428/1%2ADr8pZGY8HNGJ_MozYrv54w.png" alt="Add more nodes panel"&gt;&lt;/a&gt;&lt;em&gt;Add more nodes panel&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You should be seeing two flows as given below on the designer canvas.&lt;/p&gt;

&lt;p&gt;The first flow is the API endpoint with the resource path &lt;strong&gt;/passenger/request&lt;/strong&gt;. This flow accepts the request from the mobile app and drops the message to Amazon SQS queue (&lt;em&gt;PassengerSQS&lt;/em&gt;). This is done as an event driven model in order to acknowledge back (to mobile app)quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0UILU348--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2380/0%2AcAzLARQAZ04tCxHI" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0UILU348--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2380/0%2AcAzLARQAZ04tCxHI" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The second flow is having the logic to fetch the driver data from the DynamoDB based on the areacode (area_code primary key) which is passed as request by the passenger. The flow picks the message from the SQS queue and invokes the DynamoDB. The flow will then check the &lt;em&gt;availability&lt;/em&gt; field in the dynamodb response data. If the &lt;em&gt;availability&lt;/em&gt; is having the value as &lt;strong&gt;&lt;em&gt;yes&lt;/em&gt;&lt;/strong&gt; then the flow checks for the appropriate MQTT topic to be selected. This done by checking the &lt;em&gt;vehicle_type&lt;/em&gt; field in the dynamodb response data. Based on the &lt;em&gt;vehiclet_type&lt;/em&gt; the MQTT node is invoked to publish the message to the MQTT broker topic in Hive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The configuration for the Hive MQTT broker for this usecase is available in the &lt;a href="https://www.hivemq.com/public-mqtt-broker/"&gt;HiveMQTT&lt;/a&gt; site&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UEYbPGjn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4420/1%2A2iYVcKelfADvFIZe1vCpwA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UEYbPGjn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4420/1%2A2iYVcKelfADvFIZe1vCpwA.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; To try out the above flow ensure to furnish the settings of &lt;strong&gt;MQTT&lt;/strong&gt; node, &lt;strong&gt;SQS&lt;/strong&gt; node and &lt;strong&gt;AWS DynamoDB&lt;/strong&gt; node with appropriate connection configuration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Deploy flow to AWS Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select &lt;em&gt;CLOUD&lt;/em&gt; tab on the right panel of Kumologica designer, choose AWS Profile and press &lt;em&gt;Deploy&lt;/em&gt; button. This will trigger build and deployment of flow into AWS Lambda. On the trigger section you need to add to triggers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;API Gateway&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Amazon SQS&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LjVXq0QS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/0%2AD_HOpSLN3QFS_amv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LjVXq0QS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/0%2AD_HOpSLN3QFS_amv.png" alt="Trigger configuration for API gateway and SQS"&gt;&lt;/a&gt;&lt;em&gt;Trigger configuration for API gateway and SQS&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Testing
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Paste the below give payload in your postman or any rest client of your choice.&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
 "areacode" : "2331",&lt;br&gt;
 "name" : "John",&lt;br&gt;
 "seat" : "4"&lt;br&gt;
}&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Provide the urls as &lt;a href="https://7salaz4cw5.execute-api.ap-southeast-2.amazonaws.com/test/passenger/request"&gt;https://&amp;lt;&amp;gt;/test/passenger/request&lt;/a&gt;. Method as &lt;em&gt;POST&lt;/em&gt; and data format as application/json.&lt;/p&gt;

&lt;p&gt;2.Open the HiveMQTT &lt;a href="http://www.hivemq.com/demos/websocket-client/"&gt;browser client&lt;/a&gt; and click &lt;strong&gt;connect&lt;/strong&gt;. Once the status changes to green. Add the topic subscription as given below.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;testtopic/3seater
testtopic/4seater
testtopic/5seater
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;All the 3 topic subscriptions are ready to fetch the messages from the appropriate topic.&lt;/p&gt;

&lt;p&gt;3.Now click &lt;em&gt;Send&lt;/em&gt; in the postman. Now when you check the HiveMQTT browser client you should see the event in the appropriate topic.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FWrVR6_w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4100/1%2AlOIQ4bMA6JtJQGtQmOLLMw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FWrVR6_w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4100/1%2AlOIQ4bMA6JtJQGtQmOLLMw.png" alt="HiveMQTT browser client"&gt;&lt;/a&gt;&lt;em&gt;HiveMQTT browser client&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;This article presented how easy Kumologica Designer flow orchestrates and integrates with a MQTT broker platform using MQTT node. Within few minutes we have created and deployed the &lt;em&gt;passenger request&lt;/em&gt; Kumologica flow.&lt;/p&gt;

&lt;p&gt;Remember Kumologica is totally free to &lt;a href="https://kumologica.com/download.html"&gt;download&lt;/a&gt; and use. Go ahead and give it a try, we would love to hear your feedback.&lt;/p&gt;

&lt;p&gt;In the meantime, if there is any specific use case that you would like to see in a future article please let us know in the comments section.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Serverless integration of JIRA using Kumologica</title>
      <dc:creator>ab73863</dc:creator>
      <pubDate>Fri, 10 Jul 2020 14:13:34 +0000</pubDate>
      <link>https://dev.to/kumologica-org/serverless-integration-of-jira-using-kumologica-346h</link>
      <guid>https://dev.to/kumologica-org/serverless-integration-of-jira-using-kumologica-346h</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LcckiqVu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AY0TS8tMfLnWg4cFQkM42GA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LcckiqVu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2AY0TS8tMfLnWg4cFQkM42GA.png" alt="Jira Service Desk"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this article we will create “Contact Us” HTML form that is present on most of websites and integrate it with &lt;a href="https://www.atlassian.com/software/jira/service-desk"&gt;Jira Service Desk&lt;/a&gt; using &lt;a href="https://kumologica.com/download.html"&gt;Kumologica Designer&lt;/a&gt; flow running on AWS Lambda.&lt;/p&gt;

&lt;p&gt;If you want to learn more about Kumologica, I would highly recommend you to check out the &lt;a href="https://medium.com/@kumologica/"&gt;articles&lt;/a&gt; or subscribe on the &lt;a href="https://www.youtube.com/channel/UCsTDAlhijUFpsfThJu3hF9g"&gt;youtube channel&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Jira Service Desk&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you don’t have access to Jira software or Jira Service Desk you can &lt;a href="https://www.atlassian.com/software/jira/service-desk/free"&gt;create free account&lt;/a&gt;. Once account has been created you will be given your site url (ends with atlassian.net) for your Jira Service Desk Instance.&lt;/p&gt;

&lt;p&gt;Next Step is to create API Key. Navigate to: &lt;em&gt;Settings icon&lt;/em&gt; (in the top right corner) &amp;gt; &lt;em&gt;Atlassian account settings &amp;gt; Security&lt;/em&gt; (in the left panel) &amp;gt; &lt;em&gt;Create and manage API tokens &amp;gt;Create API Token.&lt;/em&gt; Enter label for token and press &lt;em&gt;Create,&lt;/em&gt; you will be presented API token. Copy it as you will need this token to authenticate from Kumologica flow.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s2ljpnTD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3804/1%2AVDEPRZqvXq6lWt2555Ty5A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s2ljpnTD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3804/1%2AVDEPRZqvXq6lWt2555Ty5A.png" alt="Create API Token for Jira Service Desk"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We will be using &lt;em&gt;General service desk (GSD)&lt;/em&gt; example project that has been created for us. The GSD is a project id that we will be using in Kumologica flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Building orchestration flow
&lt;/h2&gt;

&lt;p&gt;Once we have access to Jira configured we can start building our Kumologica flow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create New Project&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Open Kumologica Designer, click the &lt;em&gt;Home&lt;/em&gt; button and choose &lt;em&gt;Create New Kumologica Project&lt;/em&gt;. Enter name (for example jira-demo), select directory for project and switch &lt;em&gt;Source&lt;/em&gt; into &lt;em&gt;From Existing Flow …&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Wv9AblfV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3444/1%2Amm9w9yeg7fP80UJ854Rh0g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Wv9AblfV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3444/1%2Amm9w9yeg7fP80UJ854Rh0g.png" alt="New Kumologica Project with importing flow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Copy and Paste the following flow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;[{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"main.flow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"tab"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"main"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"disabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"info"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"test.flow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"tab"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"disabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"info"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"eacbb9ef.69d5c8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"EventListener"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"z"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"main.flow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"POST /issue"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"eventSource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"api"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"dynamodbOperation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"apiMethod"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"post"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"apiUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"/issue"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"albMethod"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"any"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"albUrl"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"bucketName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"event"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"s3:ObjectCreated:*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"x"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;122.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"y"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;140&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"wires"&lt;/span&gt;&lt;span class="p"&gt;:[[&lt;/span&gt;&lt;span class="s2"&gt;"dcdb6a8a.2ba208"&lt;/span&gt;&lt;span class="p"&gt;]],&lt;/span&gt;&lt;span class="nl"&gt;"caname"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"aws-event-handler"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"aws"&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"b5fc6ccd.17dd7"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"EventListener-End"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"z"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"main.flow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Success"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"statusCode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"200"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"headers"&lt;/span&gt;&lt;span class="p"&gt;:{&lt;/span&gt;&lt;span class="nl"&gt;"Content-Type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"application/json"&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="nl"&gt;"payload"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"{}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"x"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;502.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"y"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;140&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"wires"&lt;/span&gt;&lt;span class="p"&gt;:[],&lt;/span&gt;&lt;span class="nl"&gt;"caname"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"eventlistenerend"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"aws"&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"3aa032bd.826cae"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"TestCase"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"z"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"test.flow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Test POST /issue"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"selectedTargetNode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"eacbb9ef.69d5c8"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"payload"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"{&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;path&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;/issue&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;headers&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Accept&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Accept-Encoding&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;gzip, deflate, lzma, sdch, br&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Accept-Language&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;en-US,en;q=0.8&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CloudFront-Forwarded-Proto&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;https&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CloudFront-Is-Desktop-Viewer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;true&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CloudFront-Is-Mobile-Viewer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;false&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CloudFront-Is-SmartTV-Viewer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;false&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CloudFront-Is-Tablet-Viewer&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;false&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;CloudFront-Viewer-Country&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;US&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Host&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;wt6mne2s9k.execute-api.us-west-2.amazonaws.com&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Upgrade-Insecure-Requests&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;1&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;User-Agent&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Via&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;1.1 fb7cca60f0ecd82ce07790c9c5eef16c.cloudfront.net (CloudFront)&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;X-Amz-Cf-Id&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;nBsWBOrSHMgnaROZJK1wGCZ9PcRcSpq_oSXZNQwQ10OTZL4cimZo3g==&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;X-Forwarded-For&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;192.168.100.1, 192.168.1.1&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;X-Forwarded-Port&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;443&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;X-Forwarded-Proto&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;https&lt;/span&gt;&lt;span class="se"&gt;\"\n&lt;/span&gt;&lt;span class="s2"&gt;  },&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;pathParameters&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;proxy&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;issue&lt;/span&gt;&lt;span class="se"&gt;\"\n&lt;/span&gt;&lt;span class="s2"&gt;  },&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;requestContext&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;accountId&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;123456789012&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;resourceId&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;us4z18&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;stage&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;test&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;requestId&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;41b45ea3-70b5-11e6-b7bd-69b5aaebc7d9&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;identity&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;cognitoIdentityPoolId&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;accountId&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;cognitoIdentityId&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;caller&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;apiKey&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;sourceIp&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;192.168.100.1&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;cognitoAuthenticationType&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;cognitoAuthenticationProvider&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;userArn&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;userAgent&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.82 Safari/537.36 OPR/39.0.2256.48&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"\"\n&lt;/span&gt;&lt;span class="s2"&gt;    },&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;resourcePath&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;/{proxy+}&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;httpMethod&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;apiId&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;wt6mne2s9k&lt;/span&gt;&lt;span class="se"&gt;\"\n&lt;/span&gt;&lt;span class="s2"&gt;  },&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;resource&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;/{proxy+}&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;httpMethod&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;queryStringParameters&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;me&lt;/span&gt;&lt;span class="se"&gt;\"\n&lt;/span&gt;&lt;span class="s2"&gt;  },&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;stageVariables&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;stageVarName&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;stageVarValue&lt;/span&gt;&lt;span class="se"&gt;\"\n&lt;/span&gt;&lt;span class="s2"&gt;  },&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;body&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;  &lt;/span&gt;&lt;span class="se"&gt;\t\"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;issue&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;message&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;issue description&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;email&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;aa@aa.com&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;issueType&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Submit a request or incident&lt;/span&gt;&lt;span class="se"&gt;\"\n&lt;/span&gt;&lt;span class="s2"&gt;  }&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"initialLoad"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"false"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"x"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;262.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"y"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;160&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"wires"&lt;/span&gt;&lt;span class="p"&gt;:[[&lt;/span&gt;&lt;span class="s2"&gt;"e0721cc7.653eb"&lt;/span&gt;&lt;span class="p"&gt;]],&lt;/span&gt;&lt;span class="nl"&gt;"caname"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"test-case"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"testing"&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"e0721cc7.653eb"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"TestCaseEnd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"z"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"test.flow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"TestCaseEnd"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"x"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;425&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"y"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;160&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"wires"&lt;/span&gt;&lt;span class="p"&gt;:[],&lt;/span&gt;&lt;span class="nl"&gt;"caname"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"test-case-end"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"testing"&lt;/span&gt;&lt;span class="p"&gt;},{&lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"dcdb6a8a.2ba208"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"JIRA"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"z"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"main.flow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Create Issue"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"operation"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Issuecreate"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"issueNumber"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"DP-5"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"host"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"YOURACCOUNT.atlassian.net"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"password"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"API TOKEN"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"username"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"YOUR USERNAME"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"priority"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;From: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; &amp;amp; msg.payload.email &amp;amp; &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;, Description: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; &amp;amp; msg.payload.message"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"issuetype"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"msg.payload.issueType"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"project"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"GSD"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"summary"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"msg.payload.name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"comment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"commentId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"transitionName"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"Close Issue"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"x"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mf"&gt;302.5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"y"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;140&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"wires"&lt;/span&gt;&lt;span class="p"&gt;:[[&lt;/span&gt;&lt;span class="s2"&gt;"b5fc6ccd.17dd7"&lt;/span&gt;&lt;span class="p"&gt;]],&lt;/span&gt;&lt;span class="nl"&gt;"caname"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"jira"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nl"&gt;"category"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;"platforms"&lt;/span&gt;&lt;span class="p"&gt;}]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;press &lt;em&gt;Create&lt;/em&gt; Button.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install Jira Plugin.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Jira node is a contribution node and must be explicitly installed in Kumologica Designer. Press &lt;em&gt;Add more nodes&lt;/em&gt; button located in the bottom left corner of designer. You will be presented screen with all contribution nodes that are currently available. Choose JIRA node, press &lt;em&gt;Install&lt;/em&gt; button. After few seconds, plugin will be installed and you will be prompted to restart Kumologica Designer. Jira node will be located under new category: &lt;em&gt;Platforms&lt;/em&gt; after restart.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ib2nzYJY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4164/1%2AR-EACoMmMZmg0v4nwiPSTw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ib2nzYJY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4164/1%2AR-EACoMmMZmg0v4nwiPSTw.png" alt="Kumologica Contribution Nodes screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Edit flow&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After installing JIRA node, the imported flow will look like below:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Gr8l0dGL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2464/1%2AwSyVHialP68gf45UVnjSdQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Gr8l0dGL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2464/1%2AwSyVHialP68gf45UVnjSdQ.png" alt="Jira Demo Flow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click on the &lt;em&gt;Create Issue&lt;/em&gt; Jira node to display its properties and change &lt;em&gt;Jira Connection Details&lt;/em&gt; section:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Host URL: enter the url that has been created for your Jira service desk instance (ends with atlasian.net)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Username: the user name you setup when creating account or the username you use for your jira instance&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;API Token: token created in Prerequisites section&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Press &lt;em&gt;Save&lt;/em&gt; button to return to the flow.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We have put connection details directly into properties for simplicity. We recommend to use AWS Parameter store to store secrets and use Kumologica AWS SSM Node to retrieve them.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Deploy flow to AWS Lambda&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Select &lt;em&gt;CLOUD&lt;/em&gt; tab on the right panel of Kumologica designer, choose AWS Profile and press &lt;em&gt;Deploy&lt;/em&gt; button. This will trigger build and deployment of flow into AWS Lambda. After short while you should see the API gateway url that has been created for your flow in the terminal:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Uzld2N4_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3928/1%2AIzpMHqdDeCCzihcbcZiDbg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Uzld2N4_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3928/1%2AIzpMHqdDeCCzihcbcZiDbg.png" alt="Terminal after successful deployment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Contact Us HTML form
&lt;/h2&gt;

&lt;p&gt;Below is a sample “Contact Us” html form, save it in local drive. Change line 18 to use the API Url that was displayed in Kumologica Designer terminal after successful deployment to AWS Lambda. Don’t forget to append it with /issue to call right service.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- Original bootsnipp https://bootsnipp.com/snippets/83Br --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"http://netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css"&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"bootstrap-css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"http://netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"http://code.jquery.com/jquery-1.11.1.min.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;style&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;body&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;padding-top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-6 col-md-offset-3"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"well well-sm"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                 &lt;span class="c"&gt;&amp;lt;!-- Replace value of action with the url of API that has been displayed in Kumologica Designer console --&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;form&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-horizontal"&lt;/span&gt; 
                      &lt;span class="na"&gt;action=&lt;/span&gt;&lt;span class="s"&gt;"https://YOURAPIID.execute-api.YOURREGION.amazonaws.com/test/issue"&lt;/span&gt; 
                      &lt;span class="na"&gt;method=&lt;/span&gt;&lt;span class="s"&gt;"post"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;fieldset&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;legend&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"text-center"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Contact Us&lt;span class="nt"&gt;&amp;lt;/legend&amp;gt;&lt;/span&gt;

                    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-3 control-label"&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Summary&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-9"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"name"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Your name"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-control"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

                    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-3 control-label"&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Your E-mail&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-9"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"email"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Your email"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-control"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

                    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-3 control-label"&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"issueType"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Issue Type&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-9"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;select&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-control"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"issueType"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"issueType"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;option&amp;gt;&lt;/span&gt;Task&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;option&amp;gt;&lt;/span&gt;Ask a question&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;option&amp;gt;&lt;/span&gt;Submit a request or incident&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                      &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

                    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-3 control-label"&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"message"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Your message&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-9"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;textarea&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-control"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"message"&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"message"&lt;/span&gt; &lt;span class="na"&gt;placeholder=&lt;/span&gt;&lt;span class="s"&gt;"Please enter your message here..."&lt;/span&gt; &lt;span class="na"&gt;rows=&lt;/span&gt;&lt;span class="s"&gt;"5"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;

                    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"form-group"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-12 text-right"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
                            &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-primary btn-lg"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Submit&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
                        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;/fieldset&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;
                &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
            &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Open html file in your browser, fill up details and press &lt;em&gt;Submit&lt;/em&gt; button.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--J10JjAiD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2448/1%2AAWwkTPowVC9KWKeabvAOkA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--J10JjAiD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2448/1%2AAWwkTPowVC9KWKeabvAOkA.png" alt="Contact Us HTML form"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The browser should display empty json: {}. When you switch to your Jira Service Desk &lt;em&gt;General service desk&lt;/em&gt; project you should see new issue created with following details:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nmhRL1iq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4024/1%2AD2G0GwuLj7Jaf-AgmrElPg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nmhRL1iq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/4024/1%2AD2G0GwuLj7Jaf-AgmrElPg.png" alt="Jira issue created"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, the properties set in Kumologica Jira node mapped &lt;em&gt;Summary&lt;/em&gt; into &lt;em&gt;Title&lt;/em&gt;, &lt;em&gt;Your E-Mail&lt;/em&gt; and &lt;em&gt;Your Message&lt;/em&gt; got concatenated into &lt;em&gt;Description&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;This article presented how easy Kumologica Designer flow orchestrates and integrates with Jira software using Jira node. Within few minutes we have setup Jira Service Desk, created and deployed Kumologica flow and finally created simple contact us html form that calls flow and creates issue in Jira.&lt;/p&gt;

&lt;p&gt;Remember Kumologica is totally free to &lt;a href="https://kumologica.com/download.html"&gt;download&lt;/a&gt; and use. &lt;/p&gt;

&lt;p&gt;In the meantime, if there is any specific use case that you would like to see in a future article please let us know in the comments section.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;p&gt;Code used in this article is available in Github repository:&lt;br&gt;
&lt;a href="https://github.com/KumologicaHQ/kumologica-demos/tree/master/jira"&gt;Repo link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Feel free to check it out and change for your needs.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>microservices</category>
      <category>serverless</category>
    </item>
    <item>
      <title>Splunk logging in lambda using low code approach</title>
      <dc:creator>ab73863</dc:creator>
      <pubDate>Tue, 30 Jun 2020 12:25:14 +0000</pubDate>
      <link>https://dev.to/kumologica-org/splunk-logging-in-lambda-using-low-code-approach-6n1</link>
      <guid>https://dev.to/kumologica-org/splunk-logging-in-lambda-using-low-code-approach-6n1</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--E-AkRXHS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2A2-nOfUKSGDqeh2FHCRKHkg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--E-AkRXHS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://miro.medium.com/max/1400/1%2A2-nOfUKSGDqeh2FHCRKHkg.png" alt="Splunk Kumo header"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A centralised logging management solution like: Splunk, Datadog, Sumologic, etc. enables organisations to collect, analyse, and display logs through a single pane of glass.&lt;/p&gt;

&lt;p&gt;In this article we will see how application logs can be sent to Splunk from lambda using &lt;strong&gt;Kumologica Splunk&lt;/strong&gt; node.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.kumologica.com/"&gt;Kumologica&lt;/a&gt; is a free low-code development tool to build serverless integrations. You can learn more in this &lt;a href="https://medium.com/@kumologica/kumologica-first-low-code-development-tool-for-aws-lambda-8831b5237428"&gt;medium article&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use case&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this use case we have a mobile app application that consumes a Mobile Channel API. Behind the mobile API we have an Order FulFilment API. The Mobile API invokes the Order FulFilment API for completing the process. When the mobile app sends the very initial request it has a Tracking id. The Tracking id traverses from the Mobile Channel API to Order FulFilment API and back.&lt;/p&gt;

&lt;p&gt;The message passed across both applications needs to be traced based on the Tracking id in Splunk.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QrO937HM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A7NYm88g4W9ERXqXQ0PQyDQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QrO937HM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A7NYm88g4W9ERXqXQ0PQyDQ.png" alt="Use case design"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisite&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Kumologica designer installed in your machine. &lt;a href="https://kumologica.com/download.html"&gt;https://kumologica.com/download.html&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Splunk cloud &lt;a href="https://www.splunk.com/en_us/download/get-started-with-your-free-trial.html"&gt;Trial&lt;/a&gt; account&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Implementation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the above mentioned use case we will be creating two API’s , a Mobile Channel API and an Order FulFilment API.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Order fulfilment API&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;1 . Open the Kumologica designer and &lt;em&gt;Create a New project&lt;/em&gt;. And provide the name of the project as &lt;strong&gt;OrderFulFilmentService&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;2 . Remove the default hello world flow.&lt;/p&gt;

&lt;p&gt;3 . Drag and drop &lt;strong&gt;EventListener&lt;/strong&gt; Node from the pallet to the canvas and open the EvenListener node settings and configure the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Display Name : POST /order
    Event Source : Amazon API gateway
    Verb : POST
    URL : /order
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;4 . Add &lt;strong&gt;Splunk Node&lt;/strong&gt; from Logging category.&lt;/p&gt;

&lt;p&gt;By default Splunk Node will not be available as part of the default &lt;strong&gt;Logging&lt;/strong&gt; category.&lt;/p&gt;

&lt;p&gt;In order to install the Splunk node , Go to &lt;strong&gt;Add More Nodes&lt;/strong&gt; Option on the bottom of the pallet and click &lt;strong&gt;Install&lt;/strong&gt; Splunk. Once Installation is completed a restart of the Designer will be required. Open the Splunk Node settings and configure the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Display Name : Log_Entry
    Host : hostname of your splunk trial account
    Port : 8088
    Message : {“TrackingID” : msg.payload.TxnID,”ServiceName”:”Order_FullFillment”, “Data”: msg.payload }
    Splunk HEC Token : Splunk HTTP Event collector Token
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;5 . Wire the EventListener Node to the Splunk Node.&lt;/p&gt;

&lt;p&gt;6 . Drag and drop &lt;strong&gt;Datamapper&lt;/strong&gt; node from the palette to the canvas.&lt;/p&gt;

&lt;p&gt;We are using the Datamapper node to mimic the response after an Order processing.&lt;/p&gt;

&lt;p&gt;Open the Datamapper settings and configure the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Display Name : Order_ProcessResponse

    Mapping : {
                “TrackingID” : msg.payload.TxnID,
                “OrderID” : msg.payload.OrderID,
               “Status” : “Processed”
              }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If you are not familiar using the DataMapper node then would recommend to go through the &lt;a href="https://medium.com/@arunkumar.satyam/data-mapping-in-kumologica-5913dc4f4c09"&gt;following article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;7 . Wire the Splunk Node to the DataMapper Node.&lt;/p&gt;

&lt;p&gt;8 . Add the &lt;strong&gt;EventListener End&lt;/strong&gt; node from the palette to the canvas. Open the settings and configure the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Display Name : Success
    Payload : msg.payload
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;With this we have completed the development of our Order FulFilment API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3d5np6Ez--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2444/0%2AYcIA3BGEAoKXt75F" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3d5np6Ez--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2444/0%2AYcIA3BGEAoKXt75F" alt="Order Fulfilment API Flow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s deploy the API as a lambda to your AWS account. If you are not familiar with the deployment of a Kumologica flow I would recommend to have a walkthrough on the following &lt;a href="https://medium.com/@kumologica/kumologica-first-low-code-development-tool-for-aws-lambda-8831b5237428"&gt;medium article&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; : Copy the service url that you receive on the terminal after a successful deployment.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Mobile Channel API&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;1 . Open the Kumologica designer and &lt;em&gt;Create a New project&lt;/em&gt;. And provide the name of the project as &lt;strong&gt;MobileChannelAPIService&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;2 . Remove the default hello world flow.&lt;/p&gt;

&lt;p&gt;3 . Drag and drop &lt;strong&gt;EventListener&lt;/strong&gt; Node from the pallet to the canvas and open the EvenListener node settings and configure the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Display Name : POST /mobile
    Event Source : Amazon API gateway
    Verb : POST
    URL : /mobile
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;4 . Add &lt;strong&gt;Splunk Node&lt;/strong&gt; from Logging category.&lt;/p&gt;

&lt;p&gt;By default Splunk Node will not be available as part of the default &lt;strong&gt;Logging&lt;/strong&gt; category.&lt;/p&gt;

&lt;p&gt;In order to install the Splunk node , Go to &lt;strong&gt;Add More Nodes&lt;/strong&gt; Option on the bottom of the Pallet and click Install Splunk. Once Installation is completed a restart of the Designer will be required. Open the Splunk Node settings and configure the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Display Name : Log_Entry
    Host : hostname of your splunk trial account
    Port : 8088
    Message : {“TrackingID” : msg.payload.TxnID,”ServiceName”:”Mobile_Channel”, “Data”: msg.payload }
    Splunk HEC Token : Splunk HTTP Event collector Token
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;5 . Wire the EventListener node to the Splunk Node.&lt;/p&gt;

&lt;p&gt;6 . Add the &lt;strong&gt;HTTP Req&lt;/strong&gt; node from the web category in the palette to the canvas. Open the settings and configure the following.&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Display Name : Invoke_OrderFulFilmentService
Method : POST
Url : your order service url. Configure this once Order FulFilment Service is deployed and you receive the url .
Return : a UTF-8 string
Response Timeout : 120000ms (default)
Authentication : None
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;7 . Wire the Splunk Node to the HTTP Req node.&lt;/p&gt;

&lt;p&gt;8 . Add the &lt;strong&gt;EventListener End&lt;/strong&gt; node from the palette to the canvas. Open the settings and configure the following.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Display Name : Success
    Payload : msg.payload
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;With this we have completed the development of our Mobile Channel API.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bYFVqIUS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2220/0%2Au3nTS3ELRMOVbMdC" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bYFVqIUS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2220/0%2Au3nTS3ELRMOVbMdC" alt="Mobile Channel API Flow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let’s deploy both the services separately as two different lambda in your AWS account.&lt;/p&gt;

&lt;h3&gt;
  
  
  Testing
&lt;/h3&gt;

&lt;p&gt;For testing purposes I am sending the following request as input to the Mobile API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“OrderID”:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;“APQ&lt;/span&gt;&lt;span class="mi"&gt;-00001&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“TxnID”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="mi"&gt;0948939&lt;/span&gt;&lt;span class="err"&gt;-AWHDH”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“Item”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“Name”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;“ABC&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Laptop”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“Type”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;“Mini&lt;/span&gt;&lt;span class="mi"&gt;-5&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“Qty”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“Address”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“Unit”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;“&lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="err"&gt;”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“Street”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;“TTK&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Street”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“Road”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;“Tower&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Road”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“State”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;“NSW”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“Country”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;“Australia”&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="err"&gt;“PIN”&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;94839&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;After you invoke the mobile channel API and when you search in Splunk with the &lt;strong&gt;TxnID&lt;/strong&gt; value as the search parameter&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lCXHc3RX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/0%2AoXZ8yvL_PzD1n8GY" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lCXHc3RX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/0%2AoXZ8yvL_PzD1n8GY" alt="Splunk search"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;you would get the following log entries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yUL8H1O5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/0%2A8eZ7c2ikA89t_N_J" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yUL8H1O5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/0%2A8eZ7c2ikA89t_N_J" alt="Event Received by Mobile Channel API"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BFrgHJ5k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/0%2A6_hQkOaIFAHaHEoF" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BFrgHJ5k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3200/0%2A6_hQkOaIFAHaHEoF" alt="Event Received by Order FulFilment API"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you want to try out this application quickly you can import the loan broker flow from this &lt;a href="https://github.com/KumologicaHQ/kumologica-demos/tree/master/SplunkLogging"&gt;project’s repo&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading and I hope you enjoyed this use case and appreciate how simple it is to implement an orchestration service with &lt;a href="https://kumologica.com/"&gt;Kumologica&lt;/a&gt;. We would love to hear your feedback, and don’t hesitate to contact us if you have any questions.&lt;/p&gt;

&lt;p&gt;To learn more about Kumologica checkout our official documentation at &lt;a href="http://kumologica.com/"&gt;kumologica.com&lt;/a&gt; and subscribe to our youtube &lt;a href="https://www.youtube.com/channel/UCsTDAlhijUFpsfThJu3hF9g"&gt;channel&lt;/a&gt;&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>microservices</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Serverless Orchestration in lambda</title>
      <dc:creator>ab73863</dc:creator>
      <pubDate>Thu, 25 Jun 2020 04:33:03 +0000</pubDate>
      <link>https://dev.to/kumologica-org/serverless-orchestration-in-lambda-4nkn</link>
      <guid>https://dev.to/kumologica-org/serverless-orchestration-in-lambda-4nkn</guid>
      <description>&lt;p&gt;Service orchestration is an architectural design where a single centralised service is responsible for coordinating and interacting among different services. They invoke different services and combine them together . The orchestration unit is abstracted and exposed as a single service.&lt;/p&gt;

&lt;p&gt;Orchestration is usually accomplished through &lt;a href="https://en.wikipedia.org/wiki/Enterprise_application_integration"&gt;Enterprise Application Integration&lt;/a&gt;(EAI), which enables data integration, and the use of a central messaging engine such as an &lt;a href="https://en.wikipedia.org/wiki/Enterprise_service_bus"&gt;Enterprise Service Bus&lt;/a&gt;(ESB), which routes, transforms and enriches messages.&lt;/p&gt;

&lt;p&gt;In this article we will see how orchestration can be achieved in a serverless world using Kumologica and AWS Lambda.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AMUZqBtk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A5G0HTR1tDhN83nEGKoC1KQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AMUZqBtk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2000/1%2A5G0HTR1tDhN83nEGKoC1KQ.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Kumologica is a free low-code development tool to build serverless integrations. You can learn more in this &lt;a href="https://medium.com/@kumologica/kumologica-first-low-code-development-tool-for-aws-lambda-8831b5237428"&gt;medium article&lt;/a&gt; or on our &lt;a href="http://kumologica.com/"&gt;website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use case&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To get a better sense of orchestration , we will create a &lt;strong&gt;loan broker service&lt;/strong&gt; which will be making a loan request on behalf of a customer. The service will invoke the sub services which are involved in the loan request. These sub services include credit score from credit agencies, quotes from different banks etc. Each of these sub services are external services which need to be invoked in a sequence by the orchestration service and finally returns a list of quotes from potential lenders to the broker who made the original request.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisite&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For the above use case we will be creating mock API’s in mockable.io for credit score check. Below is the sample mock response data for a credit score check.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    {
    "check_status" : "pass",
    "score" : 600,
    "SSN" : "ABHY888-999-HT",
    "Agency" : "ABC Provider",
    "Date" : "08-09-2019 10:00:00"
    }
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;2 . Below is the Bank quote Mock response for the Bank Quote mock API.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    [{
    "Bank_Name" : "ABC Corp",
    "Quote" :{
    "Min" :  "600000",
    "Max" :  "800000",
    "Currency" : "AUD"
    }
    },
    {
    "Bank_Name" : "HSKC",
    "Quote" :{
    "Min" :  "900000",
    "Max" :  "1000000",
    "Currency" : "AUD"
    }
    },
    {
    "Bank_Name" : "Westland",
    "Quote" :{
    "Min" :  "500000",
    "Max" :  "800000",
    "Currency" : "AUD"
    }
    },
    {
    "Bank_Name" : "CAN Bank",
    "Quote" :{
    "Min" :  "600000",
    "Max" :  "900000",
    "Currency" : "AUD"
    }
    }
    ]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note :&lt;/strong&gt; You may use any other services or mechanisms in order to create a mock service.&lt;/p&gt;

&lt;p&gt;3 . Kumologica designer installed in your machine. &lt;a href="https://kumologica.com/download.html"&gt;https://kumologica.com/download.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are new to Kumologica then I would suggest reading the following link to kick start. &lt;a href="https://medium.com/@kumologica"&gt;https://medium.com/@kumologica&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 . An AWS account to deploy your Kumologica service&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementation&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open the Kumologica designer and Create a New project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove the default hello world flow.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Drag and drop EventListener Node from the pallet to the canvas and open the EvenListener node settings and configure the following.&lt;/p&gt;

&lt;p&gt;Display Name : GET /quote&lt;br&gt;
Event Source : Amazon API gateway&lt;br&gt;
Verb : GET&lt;br&gt;
URL : /quote&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Drag and drop HTTP Req node from the web category in the pallet to the canvas. Open the settings and configure the following.&lt;/p&gt;

&lt;p&gt;Display Name : GetCreditCheck&lt;br&gt;
Method : GET&lt;br&gt;
Url : your mock url for credit check.&lt;br&gt;
Return : a UTF-8 string&lt;br&gt;
Response Timeout : 120000ms (default)&lt;br&gt;
Authentication : None&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wire EventListener node to HTTP Req node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add JSON node to canvas for transforming JSON string to Javascript Object.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wire HTTP Req node to JSON node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add Set-property Node to the canvas. This is to store the check_status field value from the credit check (http) response.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Drag and drop the switch node to the canvas and set the condition for verifying whether to proceed for Quote or Not.&lt;/p&gt;

&lt;p&gt;Display Name:  CreditStatus_Check&lt;br&gt;
Set temp == ‘pass’&lt;br&gt;
Set “otherwise”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Write the JSON node to Set-Property Node and Set-Property node to Switch Node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add another HTTP req node to the canvas and set the following.&lt;/p&gt;

&lt;p&gt;Display Name : GetBankQuote&lt;br&gt;
Method : POST&lt;br&gt;
Url : your mock url for credit check&lt;br&gt;
Return : a UTF-8 string&lt;br&gt;
Response Timeout : 120000ms (default)&lt;br&gt;
Authentication : None&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Drag and Drop another Set-Property node to the canvas and set the msg.payload as {“message” : “Cannot process the quote”}&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wire the “pass” output terminal of Switch node to the HTTP req node (GetBankQuote) and wire the “otherwise” terminal to the second Set-Property node.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Drag and drop the EventListener End node to the canvas and set the Payload as msg.payload and leave other fields as default.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The loan broker service flow will look given below in the canvas.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you want to try out this application quickly you can import the loan broker flow from the below given git url.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/KumologicaHQ/kumologica-demos/tree/master/LoanBorkerApplication"&gt;https://github.com/KumologicaHQ/kumologica-demos/tree/master/LoanBorkerApplication&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--70C_LPh3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3064/0%2ANhfk7aLTJEEqTB4Q" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--70C_LPh3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/3064/0%2ANhfk7aLTJEEqTB4Q" alt="Loan Broker service flow in Kumologica Designer Canvas"&gt;&lt;/a&gt;&lt;em&gt;Loan Broker service flow in Kumologica Designer Canvas&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now we are done with the implementation. Let’s deploy the flow to your AWS account.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;On the cloud tab click on the Profile drop down menu and select your AWS profile. Ensure that you have the necessary permissions for your flow to be deployed as AWS lambda.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select the API Gateway under the trigger section and leave all other fields as default.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click Deploy.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now you can see the flow is getting deployed to your AWS lambda. And once deployment is completed then you should the endpoint url for your Loan Broker service hosted on AWS API gateway.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading and I hope you enjoyed this use case and appreciate how simple it is to implement an orchestration service with Kumologica. We would love to hear your feedback, and don’t hesitate to contact us if you have any questions.&lt;/p&gt;

&lt;p&gt;To learn more about Kumologica checkout our official documentation at &lt;a href="http://kumologica.com/"&gt;kumologica.com&lt;/a&gt; and subscribe to our video in youtube at &lt;a href="https://www.youtube.com/channel/UCsTDAlhijUFpsfThJu3hF9g"&gt;https://www.youtube.com/channel/UCsTDAlhijUFpsfThJu3hF9g&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>serverless</category>
      <category>aws</category>
      <category>kumologica</category>
      <category>lowcode</category>
    </item>
  </channel>
</rss>
