# Configuration files, properties and placeholders

*MuleSoft Developer Study Guide · Structuring Mule Applications · Last updated October 28, 2026 · https://www.certifyforce.com/study-guide/mulesoft-developer/structuring-mule-applications/configuration-files-properties-and-placeholders*

How Mule 4 loads several XML configuration files into one context, resolves `${}` placeholders from YAML, .properties, secure and whole-file sources, decides which same-named property wins, picks an environment file at deployment, and shares resources through an on-premises domain.

- Certification: Salesforce MuleSoft Developer
- Exam section: Structuring Mule Applications
- Study guide: https://www.certifyforce.com/study-guide/mulesoft-developer

**Official exam objective:**

> Specify when and how to structure Mule applications into separate configuration and properties files, and predict outcomes.

## What the exam expects

- Split one application into several XML configuration files (side by side or imported) and predict what happens when two files declare the same global element name.
- Load `.yaml` or `.properties` files, write a nested-key placeholder, escape one, and choose `Mule::p()` or `${file::...}` when a plain placeholder is wrong.
- Predict which value wins when a property is defined in several files or several sources, and set an environment-specific file per deployment on premises, in Studio and on CloudHub.
- Read encrypted values with Secure Configuration Properties and share connector configurations between on-premises apps with a Mule domain.
- Key terms: **configuration properties** (key-value strings loaded by `<configuration-properties>`); **global property** (a `<global-property>` default, the lowest-precedence source); **system property** (a JVM `-D` value set when Mule starts); **secure properties** (decrypted values read with `secure::`); **Mule domain** (an on-premises project whose `mule-domain-config.xml` holds resources shared by its apps).

## Key facts

| Fact | Detail | Source |
|---|---|---|
| Duplicate global element names across files | The application does not load | [Modularize Configuration Files](https://docs.mulesoft.com/mule-runtime/latest/modularizing-your-configuration-files-for-team-development) |
| Properties file location | `src/main/resources`, or an absolute path | [Configuring Properties](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) |
| Same key in two loaded files | The first definition is preserved | [Configuring Properties](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) |
| `\${x}` | Returns the literal string `${x}` | [Configuring Properties](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) |
| `${file::name}` | Whole file content becomes the string value | [Configuring Properties](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) |
| Precedence, top to bottom | Deployment, system, environment, application, global | [Configuring Properties](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) |
| Global default for `env` | Required for Studio metadata resolution | [Configuring Properties](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) |
| Dynamic `import` file name | Needs a system or environment property, not a global one | [Mule Configuration File](https://docs.mulesoft.com/mule-runtime/latest/about-mule-configuration) |
| CloudHub `env` value | Properties tab in Deploy to Cloud, or in Runtime Manager Settings | [Configuring Environment Properties](https://docs.mulesoft.com/mule-runtime/latest/deploying-to-multiple-environments), [Configuring Properties](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties) |
| Secure value reference | `${secure::key}`; key supplied at runtime as `runtime.property` | [Secure Configuration Properties](https://docs.mulesoft.com/mule-runtime/latest/secure-configuration-properties) |
| Domains | One domain per app; on premises; no shared flows or subflows | [Shared Resources (Mule Domains)](https://docs.mulesoft.com/mule-runtime/latest/shared-resources) |

## Check yourself

- Why does a value read from a `.yaml` or `.properties` file arrive as text, even when it looks like a number?
- When is the `<secure-properties:encrypt>` tag needed inside `<secure-properties:config>`?
- Which three kinds of input can `Mule::p("name")` read?
- How do you set a system property for a run inside Studio?

## Sources

- [Configuring Properties](https://docs.mulesoft.com/mule-runtime/latest/configuring-properties)
- [Modularize Configuration Files](https://docs.mulesoft.com/mule-runtime/latest/modularizing-your-configuration-files-for-team-development)
- [Mule Configuration File](https://docs.mulesoft.com/mule-runtime/latest/about-mule-configuration)
- [Configure Property Placeholders](https://docs.mulesoft.com/mule-runtime/latest/mule-app-properties-to-configure)
- [Configuring Environment Properties](https://docs.mulesoft.com/mule-runtime/latest/deploying-to-multiple-environments)
- [Secure Configuration Properties](https://docs.mulesoft.com/mule-runtime/latest/secure-configuration-properties)
- [Shared Resources (Mule Domains)](https://docs.mulesoft.com/mule-runtime/latest/shared-resources)
- [p function](https://docs.mulesoft.com/dataweave/latest/dw-mule-functions-p)

## About the full unit

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