Salesforce-MuleSoft-Developer Practice Test
Updated On 1-Jan-2026
234 Questions
Refer to the exhibit.

What Database expression transforms the input to the output?
A. Option A
B. Option B
C. Option C
D. Option D
Explanation:
Understanding the Input and Output
Input
The input payload is a JSON array containing multiple order records. Each record has fields like item, price, and quantity.
Output
The output is XML with:
- A single <order> root element
- Multiple <item> child elements
Each <item> contains:
- <itemName> mapped from item
- <total> calculated as price * quantity
So structurally, the desired output is:
- One order
- Inside it, a collection of item elements
Why Option B Is Correct
Option B defines:
- A single order object
- Inside order, it maps over the payload array
- Each iteration produces an item object
Conceptually, it does:
- order: → single root
- payload map (...) → multiple item entries inside that root
This matches the output exactly: one <order> element containing multiple <item> elements.
Why the Other Options Are Incorrect
Option A
This option wraps the entire payload map inside double curly braces at the top level. That results in multiple order objects, not a single order with multiple items. This does not match the output structure.
Option C
This option maps over the payload and creates an order object for each element in the array. That would produce multiple <order> elements, which is not what the output shows.
Option D
This option places the payload map inside extra curly braces within order. That creates an array of objects inside order, adding an extra level of nesting that does not exist in the expected output XML.
Final Conclusion
Only Option B correctly:
- Keeps a single order root
- Iterates over the payload to create multiple item elements
- Produces the exact XML structure shown in the output
📝 Mule-Dev-201 Exam Tip
When transforming a list into XML:
- Use map to create repeating child elements
- Wrap the map inside a single parent object when only one root element is required
Refer to the exhibits.

What payload and quantity are logged at the end of the main flow?
A. [[1,2,3,4], 14]
B. [[order1, order2, order3, order4], 14]
C. [[1,2,3,4], 10]
D. [orderlorder2order3order4,14]
Explanation:
Flow Execution
Step 1 – Initial Payload
[1, 2, 3, 4]
Step 2 – Set Variable
vars.quantity = 10
Step 3 – For Each
Iterates over [1, 2, 3, 4]:
1st iteration
payload → 1
set payload → "order" ++ payload → "order1"
vars.quantity = 10 + 1 = 11
2nd iteration
payload → 2
set payload → "order2"
vars.quantity = 11 + 1 = 12
3rd iteration
payload → 3
set payload → "order3"
vars.quantity = 12 + 1 = 13
4th iteration
payload → 4
set payload → "order4"
vars.quantity = 13 + 1 = 14
Step 4 – After For Each
Payload after For Each
For Each does NOT automatically collect the results into an array.
So outside the loop, payload remains the original array:
[1, 2, 3, 4]
vars.quantity → 14
Logger Prints
Logger message:
#[ [payload, vars.quantity] ]
→ Prints:
[[1, 2, 3, 4], 14]
Why Others Are Incorrect
B. [[order1, order2, order3, order4], 14]
→ Incorrect. For Each doesn’t aggregate results unless you explicitly store them.
C. [[1,2,3,4], 10]
→ Incorrect. quantity is incremented to 14.
D. [order1order2order3order4, 14]
→ Incorrect. For Each does not concatenate payloads into one string outside the loop.
Refer to the exhibit.

The input array of strings is passed to the batch job, which does NOT do any filtering or aggregating. What payload is logged by the Logger component?
A. Summary report of processed records
B. [ "Apple", "Banana" ]
C. [ "Apptel2", "Bananal2" ]
D. [ "Apptel", "Bananal", 2 ]
Explanation:
From the exhibit, the flow processes the input array ["Apple", "Banana"] through a Batch Job with two steps:
Batch Step 1 appends "1" to each string → ["Apple1", "Banana1"]
Batch Step 2 appends "2" to each string → ["Apple12", "Banana12"]
There’s no filtering or aggregation, so each record flows through both steps unaltered except for the string transformations.
The Logger is placed after the Batch Job, and since the payload is updated in each step, the final logged payload is:
["Apple12", "Banana12"]
Why the other options are incorrect:
A. Summary report of processed records ❌: That would be available in the On Complete phase if explicitly logged, but not here.
B. [ "Apple", "Banana" ] ❌: That’s the original input, not the final transformed output.
D. [ "Apptel", "Bananal", 2 ] ❌: Typo and incorrect structure — not what the batch steps produce.
Refer to the exhibit.

All three of the condition for the Choice router are true. What log messages are written?
A. Route 1
B. Route2
C. Route1, Route2
D. Route1, Route2, Default
Explanation:
How the Choice Router Works
The Choice router in Mule evaluates its conditions from top to bottom. As soon as it finds the first when condition that evaluates to true, it executes that route and stops evaluating the remaining conditions.
Only one route inside a Choice router is ever executed.
Applying This to the Given Flow
In the exhibit:
- The first when condition evaluates to true
- The second when condition also evaluates to true
- The otherwise block exists as a fallback
Even though all conditions are true, Mule follows this rule:
The Choice router executes only the first matching when block.
So:
- Route1 logger is executed
- Route2 is skipped
- Default is skipped
Why the Other Options Are Incorrect
B. Route2
This would only be logged if the first when condition was false and the second when condition was true. In a Choice router, Mule evaluates conditions in order. Since the first condition is true, Mule immediately executes Route1 and exits the Choice router. That means Mule never even evaluates the second when, so Route2 cannot be logged in this scenario.
C. Route1, Route2
This option assumes the Choice router behaves like multiple independent “if” statements where every true condition runs. That is not how Choice works. Choice behaves like an “if / else-if / else” chain: it executes only one branch, the first matching when. Once Route1 is selected, there is no “fall-through” or continued routing to Route2, so both cannot be logged from a single Choice execution.
D. Route1, Route2, Default
This option is incorrect for two separate reasons:
- Default (otherwise) never runs when any when is true.
- The otherwise branch is only executed when all when conditions evaluate to false. Since at least one condition is true (in fact all are true), otherwise is skipped.
Choice cannot execute multiple branches. Even if otherwise were eligible (it isn’t here), Choice still executes only one route per message. So you cannot get Route1, Route2, and Default all logged from one pass through the Choice router.
📝 Mule-Dev-201 Exam Tip
Always remember this rule for Choice routers:
First true condition wins. No fall-through.
What is not true about application properties?
A. Application properties can be encrypted
B. Application properties can be overridden with system properties
C. Application properties can be defined in .yaml file only
D. Application properties provide easier way to manage configurable values
Explanation:
In MuleSoft, application properties are used to externalize and manage configurable values such as database credentials, API keys, or environment‑specific settings. These properties can be defined in multiple formats, most commonly in .yaml or .properties files. Mule does not restrict developers to .yaml files only. In fact, .properties files are widely used and supported, especially for simple key‑value configurations. Additionally, Mule allows properties to be overridden by system properties or environment variables, and they can be encrypted using the MuleSoft Secure Properties Tool. Therefore, option C is not true because application properties are not limited to .yaml files — they can also be defined in .properties files and managed in various ways.
❌ Option A: Application properties can be encrypted
This option is true. MuleSoft provides the Secure Properties Tool, which allows sensitive values such as passwords or tokens to be encrypted. At runtime, Mule decrypts these values automatically, ensuring secure configuration management.
❌ Option B: Application properties can be overridden with system properties
This option is true. MuleSoft allows system properties or environment variables to override application properties. This is particularly useful when deploying applications across environments (e.g., dev, test, prod) without modifying the application code.
❌ Option D: Application properties provide easier way to manage configurable values
This option is true. Application properties are designed to simplify configuration management by externalizing values. This makes applications more portable, easier to maintain, and adaptable to different environments.
📚 References
MuleSoft Docs — Application Properties
“Application properties can be defined in .yaml or .properties files. They can be encrypted and overridden by system properties.”
MuleSoft Docs — Secure Properties Tool
| Salesforce-MuleSoft-Developer Exam Questions - Home | Previous |
| Page 5 out of 47 Pages |