Bulk edit content Module
Search, select, edit — and publish — hundreds of content items at once, with fields that respect your content model.
Content Bulk Edit adds a complete bulk-editing workspace to jContent's Content Tools. Query your content with indexed full-text and date filters, edit properties through typed widgets — pickers, scoped category trees, choicelists, dates — see each item's real publication status at a glance, and push the whole selection live in one confirmed action.
Full description
Editing the same field on dozens of articles one by one is the kind of work a CMS should do for you. Content Bulk Edit turns it into a four-step flow: search, select, apply, publish.
Find exactly the content you need. Combine full-text search, content type, path, author, and publication/creation/modification date ranges — all executed by the JCR index, not in the browser. Filter by real publication state: published, modified, never published, or unpublished. After a search, the criteria collapse into a compact summary bar so results take center stage.
See the true publication status. Every row carries a color-coded status resolved by Jahia's publication engine — the same source as jContent's badges. A published article whose categories were changed yesterday shows as Modified, whether the change touched a translated field, a shared property, or a reference. Sort the table by any column, cluster the modified items, and you know exactly what needs to go live.
Edit with the right widget, not a text box. The module reads your content definitions — and your Content Editor form overrides — to render each property the way editors expect:
- Image, file, and content pickers for reference fields (the native jContent picker)
- Category trees scoped to the right taxonomy branch, exactly as configured in Content Editor (ChoiceTree overrides supported)
- Dropdowns for choicelists, yes/no selectors, date and number inputs
- Properties grouped like Content Editor: the type's own fields first, then each mixin as its own block
Stay in control of multi-valued fields. Choose per field whether new values replace or append to existing ones — for regular multi-valued properties, tags, and categories alike, with duplicates handled automatically. Need to empty a field across the selection? One checkbox clears it. Every change is listed in a confirmation summary before anything is written.
Publish in bulk. Once your changes are applied, one action publishes the entire selection — including referenced images and files — to the live site in the working language, after an explicit confirmation. Statuses refresh immediately so you can verify the result.
Safe by design. All operations run with the acting user's permissions: what you cannot edit or publish in jContent, you cannot bulk-edit or bulk-publish here. Every item is processed independently — if one fails validation or permissions, it is rolled back and reported while the rest proceed. Internationalized fields are written to the selected language.
For developers. Everything is available through a documented GraphQL extension (searchContent, getPropertyDefinitions, getCategories, bulkEditContent, publishContent) for scripted or CI-driven bulk operations. Values are plain strings; the server coerces them to the correct JCR type from the definitions.
Key features
- Index-backed search: full-text, type, path, status, author, date ranges
- Publication status per row (published / modified / never published / unpublished / marked for deletion), resolved by Jahia's publication engine
- One-click bulk publish of the selection, references included, permission-gated per item
- Sortable result table with sticky header and hover tooltips
- Typed edit fields driven by CND definitions and Content Editor overrides
- Replace/append mode per multi-valued property, tags, and categories
- Explicit "clear property" action with per-item validation reporting
- Content-Editor-style property grouping (own fields, then mixins)
- Per-item save and publish with rollback — one failure never corrupts the batch
- User-session security: JCR ACLs enforced end to end, guest access blocked
- Moonstone UI with design tokens — native jContent look, including status colors
- English and French UI, i18n-aware editing
- GraphQL API for automation
Typical use cases
- Recategorize or retag an entire content section after a taxonomy change
- Fix a wrong image or link reference across dozens of pages
- Review everything modified since the last release and publish it in one pass
- Clear an obsolete field across a whole content type
Compatibility: Jahia 8.2+ · React 18 / Moonstone UI extension · No configuration required — install, enable on your site, and find it under Content Tools.
Vidéo
Captures d'écran
Comment installer
How To Install
- Build the module:
mvn clean package
-
Take the generated bundle from:
target -
Deploy the .jar to your Jahia DX 8 instance:
- either from Jahia Module Manager
- or by copying it to your deployment location if your environment supports filesystem deployment
-
Install the module on the target site in Jahia.
-
Open jContent and go to:
- Content Tools
- Bulk edit content
FAQ
What does this module do?
It lets editors search Jahia content with multiple criteria, select matching items, and apply bulk updates from a single screen.
Where can I access it?
In jContent, under Content Tools, as Bulk edit content.
What can I search on?
You can search by text, path, content type, publication status, author, language, publication date, creation date, and last modification date.
Do I need to select a content type first?
Yes. Content type is required because the module uses it to load the editable properties available for display and bulk update.
What can be updated in bulk?
The module supports standard properties, tags, and categories.
Can I choose which properties appear in the result table?
Yes. After selecting a content type, you can choose the properties to display. Tags and category support are always available in the bulk edit panel.
Can I update internationalized properties?
Yes. Internationalized properties are updated using the selected language.
Can I update tags and categories on content that does not already have them?
Yes. The module automatically adds the required Jahia mixins before updating tags or categories when needed.
Can I clear only one date filter block without resetting the whole search form?
Yes. Each date block has its own Clear action.
Does the module update all search results automatically?
No. You must explicitly select the rows that will receive the bulk update.
Is there a confirmation step before execution?
Yes. A confirmation dialog summarizes the selected items and values before the bulk update is executed.
What happens if some items fail during execution?
The module reports partial success and returns execution errors for failed nodes.
Are categories taken from the Jahia category tree?
Yes. Categories are loaded from /sites/systemsite/categories.
Is the module available per site?
Yes. It is installed as a Jahia module and used within the context of the current site in jContent.
Which Jahia version is supported?
The module is designed for Jahia DX 8 / Jahia v8 environments.
How do I install it?
Build with mvn clean package, deploy the generated bundle to Jahia, install the module on the site, then open it from Content Tools in jContent.
MIT License
Copyright (c) 2026 Stephane Monier
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.