# Custom processors with Mule SDK

*MuleSoft Developer II Study Guide · Implement maintainable and modular Mule applications and their Maven builds · Last updated November 7, 2026 · https://www.certifyforce.com/study-guide/mulesoft-developer-ii/implement-maintainable-and-modular-mule-applications-and-their-maven-builds/custom-processors-with-mule-sdk*

Implement SDK component roles, configuration and connection injection, predictable message outputs, explicit metadata and safe streaming contracts.

- Certification: Salesforce MuleSoft Developer II
- Exam section: Implement maintainable and modular Mule applications and their Maven builds
- Study guide: https://www.certifyforce.com/study-guide/mulesoft-developer-ii

**Official exam objective:**

> Implement custom message processors using the Mule SDK or XML SDK.

## What the exam expects

- Separate Java SDK component roles and inject configuration or connections correctly.
- Predict how operation outputs affect a Mule message.
- Declare usable output metadata and streaming behaviour.
- Distinguish operation contracts from sources and XML module configuration.

An **operation** processes an event inside a flow; a **source** creates events for a flow; a **configuration** holds reusable settings; a **connection provider** supplies a connection; **metadata** describes output format and structure. These rules use the SDK model documented in February 2024, rather than later toolchain requirements ([SDK overview](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/index.adoc)).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Class roles | Keep configuration and operations in separate classes. | [Operations](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/operations.adoc) |
| Configuration injection | `@Config` receives the configuration instance. | [Injection](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/operations.adoc) |
| Connection injection | `@Connection` receives the registered provider's connection. | [Connections](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/operations.adoc) |
| Value-only output | Sets the payload and clears message attributes. | [Output](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/operations.adoc) |
| Void output | Preserves the received message. | [Void](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/operations.adoc) |
| JSON schema | `@OutputJsonType` references a packaged static schema. | [Metadata](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/define-operations.adoc) |
| Large output | Stream the data rather than materializing the body. | [Streaming](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/define-operations.adoc) |
| Nested Map stream | Request adaptation through `resolveCursors(Map, boolean)`. | [Streaming helper](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/define-operations.adoc) |
| Returned POJO | API value object with no logic or static state; Serializable. | [POJO rules](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/define-operations.adoc) |

## Check yourself

- Why is a tariff-calculating method unsuitable inside an SDK-returned POJO?
- When an output class has no mutable instance fields but has a mutable static counter, does it meet the SDK contract?
- When an operation needs the runtime's default encoding, which special argument provides it?

## Sources

- [Mule SDK overview, February 2024](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/index.adoc)
- [Operations, February 2024](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/operations.adoc)
- [Creating Message Sources, February 2024](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/sources.adoc)
- [Define Operations, February 2024](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/define-operations.adoc)
- [XML SDK, February 2024](https://raw.githubusercontent.com/mulesoft/docs-mule-sdk/9b03c9bd9670c1504352277299469a98f5cc6363/modules/ROOT/pages/xml-sdk.adoc)

## About the full unit

The "Core concepts", "Exam traps" and "Worked scenario" sections of this unit, its 13 linked practice questions, and unlimited timed mock exams are included with the MuleSoft Developer II pack (USD $19): https://www.certifyforce.com/practice-exams
