
This week we're getting technical again, diving into a lesser-known feature of Nuxeo: Key Value Stores, or KVS.
I mentioned KVS briefly in a previous edition about making Nuxeo more secure, and I got a surprising number of DMs saying things like "Wait... this exists?"
So let's unpack it.
First of all, KVS isn't something you'll see in the Nuxeo UI, and you won't find it in Nuxeo Studio either 😅. But it's there-and super useful.
In short, it's a service for storing any kind of data in Nuxeo using simple key/value pairs. It's mainly intended for caching or temporary storage, but depending on the implementation, you can use it to store data indefinitely too (just not with the in-memory store).
Nuxeo provides four out-of-the-box implementations:
In MongoDB, this just becomes a regular collection in your database. You can store anything-from a simple string to a byte array-optionally with a TTL (Time To Live).
I looked at ~30 recent Nuxeo projects I worked on, and KVS popped up in many ways:
Basically, whenever you need to persist data that doesn't belong in a document or vocabulary-this is your tool.
Super straightforward.
Step 1 - Declare your store in your XML contribution:
<extension target="org.nuxeo.runtime.kv.KeyValueService" point="configuration">
<store name="transcodingFailureNotification" class="org.nuxeo.ecm.core.mongodb.kv.MongoDBKeyValueStore">
<property name="collection">transcodingFailureNotification</property>
</store>
</extension>
Step 2 - Store a value (with or without a TTL):
KeyValueStore kvStore = Framework.getService(KeyValueService.class)
.getKeyValueStore("transcodingFailureNotification");
kvStore.put(doc.getId(), failureMessage); // no TTL = stored indefinitely
Step 3 - Retrieve the value later:
KeyValueStore kvStore = Framework.getService(KeyValueService.class)
.getKeyValueStore("transcodingFailureNotification");
String failureMessage = kvStore.getString(doc.getId());
I hope this helps you discover another hidden gem in Nuxeo. KVS is simple, flexible, and incredibly handy once you know it exists.
🔧 Let me know if you're using KVS in other ways-I'd love to hear.
Keep reading
The official Nuxeo roadmap from Hyland CommunityLIVE: what ships in H2 2025, what’s planned for H1 2026, and what’s coming in H2 2026 and beyond.
Read articleAlready running Nuxeo? You have everything you need to add serious AI capabilities—embeddings, semantic search, MCP, async pipelines. Here’s why and how.
Read articleAlready on AWS? Use AgentCore Gateway as a managed MCP server for Nuxeo. Configure inbound/outbound auth and an OpenAPI schema—no self-hosted MCP needed.
Read articleTell us what you're struggling with, and we'll tell you how we can help you.
Talk to us