Reference
Bulk edit
The same change to all objects in the current selection, such as setting the loan status for a whole loan list or replacing Portrait of with Bildnis in nineteen titles. You reach it through the Batch view in the toolbar of the workspace. The interface calls it the Batch editor.

What the batch covers
Exactly the objects that the current view has loaded. Filters, full-text search, Wahl and hidden objects therefore all play a part. You use them to narrow down the batch.
While a large project is still loading, the batch stays locked until the list is complete: Available once all … objects are loaded. The same applies to Assign projects, Library links and Resolve references in bulk. See Large projects load in stages .
Pinned objects bypass the Wahl filter. A pinned object from the trash can therefore be part of the batch. The interface points this out.
Cards and scopes
Each change is a card with a field and a scope. The scope says what is written to the field:
| Scope | Writes |
|---|---|
| Value | The field value |
| Colour | The colour marking |
| Source | The source reference |
| Comment | The comment |
There are two ways to create a card: you change a field directly in the input form in the Batch view, or you open the dialog Pending changes for n objects with + Add change and create one there with + Add card (Pick field, Pick scope, then Add card). The dialog shows all cards one below the other.
You can have several cards at the same time, also for different fields. They are checked together and applied one at a time or all together.
Save scope
One Save scope applies to the whole run, the same choice as in the object view:
| Scope | Effect |
|---|---|
| Hybrid (auto) | Default. Fields with a project-specific value write that value, all others the shared base value |
| Current Project | Always a project-specific value. The base value stays unchanged |
| Base Object | Always the shared base value |
This way all objects in an exhibition get a catalogue number without the collection changing. More on this under Project-specific values .
Change types
Which types a card offers depends on how the field stores its value. Text, select list, formatted text, link, selection tree and JSON share the text tools.
For all fields
| Type | Effect |
|---|---|
| Replace | Overwrites the value completely |
| Clear | Sets the value to empty |
Text, select list, link, formatted text, selection tree, JSON
| Type | Effect | Input |
|---|---|---|
| Prepend | Puts the value in front of the existing content | Value, separator |
| Append | Adds the value after the existing content | Value, separator |
| Search & Replace | Searches for text and replaces it | Search text, scope: First, All or Last occurrence |
| Preg Replace | Searches and replaces with a regular expression (JavaScript notation) | Pattern, options |
| UPPERCASE | Converts to upper case | |
| lowercase | Converts to lower case | |
| Title Case | First letter of every word in upper case | |
| Trim whitespace | Removes spaces at the start and end | |
| Collapse whitespace | Collapses consecutive spaces into one |
Number fields
| Type | Effect | Input |
|---|---|---|
| Add | Adds a constant | Value |
| Subtract | Subtracts a constant | Value |
| Multiply | Multiplies by a constant | Value |
| Divide | Divides by a constant | Value |
| Round | Rounds to a number of decimal places | Decimal places |
| Formula | Your own formula with x as the current value, for example x * 1.19 | Formula |
Calculations use the stored value, that is, the base unit of the field. This is how you convert metres into centimetres after an import (Multiply by 100).
Date, time, date and time
| Type | Effect | Input |
|---|---|---|
| Set to date | Sets a fixed date | Date |
| Set to today | Sets today’s date | |
| Shift by days | Shifts by a number of days | Number, negative too |
| Shift by months | Shifts by a number of months | Number |
| Shift by years | Shifts by a number of years | Number |
For Date and time, shifting leaves the time as it is.
Switches
| Type | Effect |
|---|---|
| Set to true | Switches on |
| Set to false | Switches off |
| Toggle | Reverses the value |
From other fields
Text, number and date fields also offer From fields: the value is built from other fields of the same object, copied, joined, as the first non-empty value or through a small function of your own. Skip empty results leaves objects without a result unchanged. If a result does not suit the field (Not a number, No date), that object is not written. This type arrives with the release of 30.09.2026.
Reference fields
Image, file, address, authority record, geolocation and object offer only Replace and Clear. Turning text into a reference is the job of Resolve references . The button for it is in the Batch view and applies there to the loaded objects.
Colour, source and comment scopes
| Scope | Types |
|---|---|
| Colour | Replace (from the colour picker) and Clear |
| Source, Comment | The text tools |
Preview
Before you apply it, each card shows what will happen:
- a sentence saying what the change does, such as Replaces every occurrence of »Portrait of« in »Objekttitel« with »Bildnis«,
- for each object the old value (Current) and the new one (New), with the differences marked in colour,
- next to the field name, the counter n of m selected (k unchanged): m is all objects in the batch, k those in which nothing changes (they are skipped),
- a tick box for each object, which you can use to leave out individual objects.
At first only the first rows are shown; Show all n objects expands the whole list.
Hide unchanged shows only what will actually be written.

Applying
| Button | Effect |
|---|---|
| Apply changes in this field | Applies one card |
| Discard changes in this field | Discards one card |
| Apply all changes for all fields | Applies all cards |
| Discard all changes | Discards everything |
While the run is in progress, Tasks shows the progress. At the end, Moliri reports how many changes could not be saved (no access or invalid value).
Undoing a batch
Every run appears in the history under Batch operations as a single entry and can be undone as a whole. The Undo Batch dialog shows every change in the run, marks conflicts (fields that have been edited again since) and lets you choose what is reset.
A proven approach: filter on Without conflict, select all, undo, and then look at the conflicts one by one. Undoing needs write access to the field. Without it, individual changes stay in place.
An undo is itself a change. If someone has carried on working in the meantime, conflicts arise. Checking the number in the preview costs less than any correction afterwards.
Assigning projects in bulk
A separate procedure alongside the cards: in the batch, Tools › Assign projects opens the dialog Manage links in bulk. It changes which projects the objects in the batch are linked to.
| Action per project | Effect |
|---|---|
| Link all | Links every object to the project |
| Leave unchanged | No change |
| Unlink all | Removes the link |
The safeguards:
| Safeguard | Effect |
|---|---|
| Unlink one project per run | This keeps it exactly clear how many objects would lose their last link |
| Objects linked only here | Are skipped when unlinking, and counted |
| Confirmation | States the number of objects, the projects affected and the skipped ones |
| Current project | If it is unlinked, the dialog points out that these objects will disappear from the list |
The procedure needs write access to the project and has a maximum number of objects. Above that, narrow down the filter.
Library links in bulk
Tools › Library links changes the links of all objects in the batch to authority records, addresses, objects, files or events, for example attaching the same catalogue as “documented in” to twenty paintings. The dialog captures the objects when it opens; Capture objects again takes over a changed selection. At most 5000 objects per run.
At the top you choose the library, below it what should happen:
| Action | Effect |
|---|---|
| Add | One type and one or more targets from the library’s picker, for every object |
| Remove | Links of one type or of any type, to individual targets or to all of them. The list states how often each target occurs |
| Change type | The same links get a different type |
| Replace target | The Current target is replaced everywhere by the New target, for example a duplicate by the correct record |
Files and events have no picker. There, only Remove and Change type are available.
Before you apply it, the dialog shows what will happen: how many objects change, how many links are new, removed, switched or replaced, and also what is skipped (already present, without write access, an object that would point to itself). If an object exceeds the maximum number for the type, this is only a notice. Links you are not allowed to read stay untouched.
After the confirmation Apply batch? the batch runs as a background task and can be cancelled. The message afterwards states the changes written and offers Undo. It undoes the whole batch. If links of the batch have been changed since, Moliri asks first (Changed since). Then the list reloads. In the history the batch appears as one entry and can be undone there as well.
Further reading
- Editing objects in bulk : the procedure
- Regular expressions : for Preg Replace
- Project-specific values : save scopes
- History : undoing a run