- NONE
Search And Replace is a Jahia v8.2+ module designed for controlled, large-scale editorial text remediation across site content. It provides a Moonstone-based back-office interface and GraphQL operations to search, preview, and replace text in a multilingual content model, with safeguards for scope control, input validation, and operational reliability.
The module is intended for enterprise content operations such as:
What does this module do?
It lets editors/admins search and replace text across Jahia site content, with filters, preview, and controlled execution.
Where do I access it?
In JContent, under Content Tools (admin route registered by the module).
Does it work on all sites automatically?
No. The module must be installed/active and available on the target site.
Which workspace is used for search/replace?
default (EDIT) workspace, not LIVE directly.
Does search support multilingual content?
Yes. You choose a language, and matching uses translation nodes (j:translation_<lang>) when present.
Can it find text inside richtext HTML?
Yes. It normalizes HTML content and searches the textual value.
Is accent-sensitive search supported (e.g., French accents)?
Search is accent-tolerant/case-insensitive in matching logic.
Which property types are scanned/replaced?
STRING and multi-valued STRING[] properties.
Why are some matched properties not replaceable?
Protected/read-only properties are shown but not updated.
Can I restrict replacement to specific properties?
Yes. In the replace modal, you can select properties to update.
How is replacement mode chosen?
EXACT_MATCH, CASE_INSENSITIVE, or REGEX.
Why do I get Field 'searchAndReplace' in type 'Mutation' is undefined?
Usually deployment/schema mismatch. Redeploy the jar, ensure module is started, refresh/restart Jahia if needed.
Why do I get Unknown type 'SearchFiltersInput'?
Use InputSearchFiltersInput in GraphQL requests (generated input type name).
Why do date filters seem inconsistent?
Use valid date inputs and apply filters. Supported formats include yyyy-MM-dd, dd/MM/yyyy, dd-MM-yyyy, MM/dd/yyyy, and ISO datetime.
Is there a hard result limit?
UI does not send a limit by default. API supports optional limit. Backend still has scan guardrails for performance/safety.
How do I know if all results were scanned?
Check truncated in searchNodes response. true means the scan hit guardrails or stopped early.
Can it replace outside the selected site?
No. Replacement is restricted to /sites/{siteKey}/.
How do I build/install it?
Run mvn clean install, then install target/search-and-replace-1.0.0-SNAPSHOT.jar via Jahia Module Manager.
Why does local yarn build:production sometimes fail?
Local Yarn version mismatch can happen. Prefer Maven build, which uses the module’s pinned Node/Yarn toolchain.
Can I preview before executing replacement?
Yes. Preview is built-in and should be used for validation before large operations.
mvn clean install
ls -l target/search-and-replace-1.0.0-SNAPSHOT.jar
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.