What you need to know about DataWeave for Salesforce Developers

As Salesforce developers, we often encounter the challenges of parsing XML or CSV data in Apex. We can all agree that the process can be quite cumbersome and frustrating. But there's good news!

What you need to know about DataWeave for Salesforce Developers
Table of contents

Introducing DataWeave for Salesforce, a powerful tool that will revolutionize data transformation in Apex. In this article, we'll explore how DataWeave makes the process incredibly easy and enjoyable.

What is DataWeave?

In simpler terms, DataWeave is a specialized programming language designed specifically for transforming data from one format to another.

Whether you need to convert CSV to JSON or XML to JSON, DataWeave has got you covered.

🙌
It offers a simple and intuitive syntax once you grasp the fundamentals. DataWeave is MuleSoft's primary language for data transformation. 

If you're unfamiliar with DataWeave, you can learn more about it here.

Effortless data transformations

With DataWeave, complex data transformations that might seem daunting in Apex can be accomplished with just a single line of code.

It streamlines the process, making it more efficient and straightforward. You'll be amazed at how easily you can manipulate and convert data using DataWeave.

Getting started with DataWeave in Apex

🏊‍♂️
Now, let's dive into a brief tutorial on leveraging DataWeave in your Salesforce org.

Step 1: To deploy DataWeave files, you'll need VS Code (or you can use Salesforce CLI)

For this example, we'll use VS Code.

Step 2: Create a new project

You will do this in VS Code. You will then need to authorize your org.

Step 3: Inside the 'force-app\main\default' directory, create a new folder

You will call it: 'dw.'

Step 4: Within the 'dw' folder, create two files: 

'xmlToJson.dwl' and 'xmlToJson.dwl-meta.xml.'

Step 5: Copy the code 

The following code will be copied into the 'xmlToJson.dwl-meta.xml' file:

<?xml version="1.0" encoding="UTF-8"?>
<DataWeaveResource xmlns="http://soap.sforce.com/2006/04/metadata">
    <apiVersion>54.0</apiVersion>
</DataWeaveResource>

Step 6: Now, let's write some DataWeave code in the 'xmlToJson.dwl' file

This script converts XML to a JSON array.

dw 2.0


/* Define your inputs and output here */


input data application/xml      // 'data' here acts as a variable that will hold the incoming data.
output application/json
---


/* Write your script here */


{
    "Accounts" : (
        data.Accounts.*Account map {
            "Name": $.Name,
            "Industry": $.Industry,
            "Rating": $.Rating
        }
    )
}


Step 7: Deploy the 'xmlToJson.dwl' file

You will do this to your org. 

Step 8: Let's see how we can call this DataWeave script

This will be done in Apex. 

String xmlData = '<Accounts> <Account> <Name>Acme</Name> <Industry>Health Care</Industry> <Rating>Cold</Rating> </Account> <Account> <Name>Edge</Name> <Industry>Telecom</Industry> <Rating>Hot</Rating> </Account> </Accounts>';


DataWeave.Script dwScript = DataWeave.Script.createScript('xmlToJson'); // 'xmlToJson' is the name of the DataWeave file.
DataWeave.Result dwResult = dwScript.execute(new Map<String, Object>{
    'data' => xmlData
}); // The execute method takes a map of input parameters.


System.debug(dwResult.getValue());


👉
Final output (Executing Apex anonymously):

Enjoy user-friendliness

DataWeave for Apex is a game-changer in Salesforce data transformations. Its user-friendly syntax and robust features streamline intricate conversions, such as XML/CSV to SObject lists.

🕑
Embrace the simplicity and efficiency of DataWeave to enhance your data processing tasks and reclaim valuable work hours.