BookatlasTwo-Day MuleSoft → Salesforce Bootcamp
926 / 1048 · Module 18 — Interview Coding Scenarios← prev⊞ allnext →

18.1Scenario 1 — Build a simple Mule API flow

Prompt:

“Write a Mule flow that accepts a customer request and creates or updates an Account in Salesforce.”

Input:

{
  "customerId": "C001",
  "companyName": "Acme Corporation",
  "phone": "305-555-1234"
}

You can sketch:

<flow name="create-or-update-customer">

    <http:listener
        config-ref="HTTP_Listener_Config"
        path="/customers"
        allowedMethods="POST"/>

    <set-variable
        variableName="originalCustomer"
        value="#[payload]"/>

    <ee:transform>
        <ee:message>
            <ee:set-payload>
                <![CDATA[
                %dw 2.0
                output application/java
                ---
                [{
                    External_Customer_ID__c: payload.customerId,
                    Name: payload.companyName,
                    (Phone: payload.phone)
                        if (payload.phone != null)
                }]
                ]]>
            </ee:set-payload>
        </ee:message>
    </ee:transform>

    <salesforce:upsert
        config-ref="Salesforce_Config"
        type="Account"
        externalIdFieldName="External_Customer_ID__c"/>

    <ee:transform>
        <ee:message>
            <ee:set-payload>
                <![CDATA[
                %dw 2.0
                output application/json
                ---
                {
                    customerId:
                        vars.originalCustomer.customerId,

                    salesforceId:
                        payload[0].id,

                    success:
                        payload[0].success
                }
                ]]>
            </ee:set-payload>
        </ee:message>
    </ee:transform>

</flow>

You do not need to memorize every <ee:message> wrapper.

Memorize the architecture:

HTTP Listener
↓
save original payload
↓
DataWeave
↓
Salesforce Upsert
↓
DataWeave response