← All articles
MuleSoft · Architecture · Quick Reads

MuleSoft Object Store: What to Use It For

MuleSoft Object Store is a simple key-value persistence mechanism available to Mule applications.

It is useful for application state such as:

  • synchronization watermarks;
  • replay or checkpoint information;
  • temporary tokens;
  • lightweight cached state;
  • idempotency-related keys in appropriate designs.

But the most useful thing to understand about Object Store is not how to call Store and Retrieve.

It is knowing when Object Store is enough and when you actually need a database or another durable data platform.

Think Key and Value

At a conceptual level, Object Store is straightforward:

key → value

For example:

customer-sync-watermark → 2026-08-20T12:00:00Z

or:

salesforce-cdc-replay-position → <opaque replay value>

The application can retrieve that value later and continue processing from the saved state.

Store a Value

With the Object Store Connector, a Store operation associates a value with a key.

Conceptually:

<os:store key="customer-sync-watermark">
    <os:value>#[vars.newWatermark]</os:value>
</os:store>

By default, storing a value for an existing key overwrites the previous value. The connector also provides behavior such as failIfPresent when overwriting is not desired.

Object Store does not accept null values. Decide explicitly whether a null should cause an error or whether the application should avoid storing anything.

Retrieve a Value

A Retrieve operation reads the value associated with a key:

<os:retrieve key="customer-sync-watermark" />

If you do not specify a target variable, the retrieved value becomes the Mule message payload.

In many flows, preserving the current payload is preferable:

<os:retrieve
    key="customer-sync-watermark"
    target="watermark" />

The value is then available through:

vars.watermark

This is a small detail that prevents a state lookup from unexpectedly replacing the business payload being processed.

Provide a Default for First Run

On the first execution, the key may not exist yet.

The Retrieve operation supports a default value. Conceptually:

stored watermark exists?
    yes → use it
    no  → use initial configured watermark

That is often cleaner than treating the application's first execution as an unexpected error.

However, choose the initial value carefully. A default watermark determines how much historical data the first run will request.

Use Case: Synchronization Watermark

Suppose a scheduled Mule flow queries records modified since its last successful run.

Retrieve watermark
      ↓
Query source for records after watermark
      ↓
Process records
      ↓
Store new watermark

The important design point is when the watermark advances.

Do not advance it before the corresponding records are safely processed, or a failure can create a gap that the next run skips.

This is the same general checkpoint principle used in event processing.

Use Case: Event Replay State

An event consumer can persist recovery information so that it knows where to resume after restart.

For Salesforce CDC or Platform Events, for example, replay state can be lightweight enough for an Object Store design depending on the runtime and recovery requirements.

But Object Store is only the state mechanism. You still need to design:

  • when the checkpoint is updated;
  • how duplicate events are handled;
  • what happens when the source retention window expires;
  • how the consumer reconciles missing data.

Saving a replay value does not by itself make an event consumer reliable.

Use Case: Temporary Application State

Object Store can also hold values such as access tokens or other application state that must survive beyond one Mule event.

This is a better fit than placing the value in a flow variable when the information must be available to later messages or future executions.

Object Store Is Not a Database Replacement

MuleSoft explicitly cautions that Object Store is not a universal persistence solution and does not provide transactional database semantics.

That distinction matters.

A database is generally a better choice when you need capabilities such as:

complex queries
relationships between records
large operational datasets
reporting
transactional updates across multiple records
rich indexing
long-term business history

Do not build a miniature business database by encoding thousands of business entities into Object Store simply because key-value access is convenient.

Keep the Stored State Small and Purposeful

Good Object Store entries usually have a clear application-state purpose:

orders-watermark
cdc-replay-position
partner-api-token
last-successful-run

Less attractive designs look like:

customer-1 → entire customer history
customer-2 → entire customer history
customer-3 → entire customer history
...

At that point, reconsider whether the data belongs in a real data store.

Persistent vs Transient State

Custom Object Stores can be configured for different persistence behavior.

Ask whether the value must survive runtime restart.

For a recovery watermark, losing the value during restart may defeat the purpose, so persistent storage is normally expected.

For truly temporary state that can safely disappear, transient storage may be appropriate.

Do not select persistence only from a performance or convenience perspective. Base it on recovery semantics.

Object Store V2 and CloudHub

CloudHub applications can use Object Store v2 for application state. MuleSoft provides configuration and management capabilities for Object Store v2, including TTL-related behavior.

Those capabilities do not change the architectural question: the data should still be suitable for key-value application state.

A feature-rich key-value store is still not automatically the right system of record for business data.

Concurrency Deserves Attention

Object Store Connector operations provide synchronization at the key level, but MuleSoft also documents considerations for Object Store v2 in multi-worker applications.

If several workers or flows can update shared state concurrently, do not assume a simple read-modify-write sequence is automatically safe for the entire business operation.

For example:

worker A reads counter = 10
worker B reads counter = 10
worker A stores 11
worker B stores 11

The design of multi-step state transitions still matters.

If strong transactional or distributed coordination semantics are required, choose infrastructure designed for that requirement.

Naming Keys

Use names that reveal ownership and purpose.

Instead of:

state
value1
lastId

prefer something like:

salesforce-account-sync-watermark
order-cdc-replay-position
partner-token-expiry

If several integrations share an Object Store, a predictable naming convention reduces accidental collisions and makes operational troubleshooting easier.

Do Not Store Sensitive Data Casually

Application state can contain credentials, tokens, customer information, or other sensitive values.

Minimize what you store and follow the security requirements of the environment. MuleSoft documents encryption protections for Object Store v2, while also recommending additional encryption when stronger protection is required.

A convenient persistence mechanism is not permission to retain unnecessary sensitive payloads.

Quick Decision Guide

RequirementObject Store fit
Last successful synchronization watermarkGood
Event replay/checkpoint stateOften good
Lightweight token/state valueGood
Simple idempotency statePossible, depending on requirements
Large customer datasetPoor
Complex relational queriesPoor
Multi-record ACID transactionsPoor
Long-term audit repositoryUsually poor

Practical Rule

Use Object Store for small pieces of application state that are naturally addressed by a key.

When the requirement starts sounding like business-data persistence, querying, reporting, history, or transactional consistency, stop and evaluate a database or another purpose-built data store instead.

CONTINUE READING

Explore closely related architecture, integration and implementation topics.