A developer who had just moved from Spring Boot onto one of our banking integration teams pulled me aside in his first week. He was staring at a flow called customer-lookup and pointing at three expressions that looked, to him, like noise: #[payload], #[attributes.headers.authorization], and #[vars.customerId]. "Why are these written three different ways?" he asked. "In Spring I just had @RequestBody and @RequestHeader. What is all of this?"

That question is the real entry point to MuleSoft. Not connectors, not DataWeave, not the deployment story — those all come later and they all sit on top of one idea. Everything that moves through a Mule application is a single object called the Mule event, and everything that does work is a flow. Once those two concepts click, the rest of the platform stops feeling like a pile of unfamiliar XML and starts feeling like a pipeline you can reason about.

The context for everything below was a wealth-management integration at a bank: a relationship-manager front end on Salesforce Financial Services Cloud, sitting in front of a legacy core-banking system that only spoke SOAP and database links, plus a separate wealth platform holding investment portfolios. MuleSoft was the layer in the middle that turned all of that into clean REST. The examples are real in shape, anonymized in name.