---
title: "Feature: Lock the fields a synchronisation owns per record"
manual: "Academic Profiles"
version: "main"
source: "Changelog/3.0/Feature-ManagedFieldsReadOnlyInTheBackend.rst"
rendered: "2026-10-02T20:47:49+00:00"
---

# Feature: Lock the fields a synchronisation owns per record {#feature-managed-fields-read-only-in-the-backend}

## Description {#description}

The only way to keep editors from changing a synchronised value in the backend
was the `readonly` flag of the validations. It locks a field on every
record of a table, so it also locked the e-mail address or phone number an
editor had added by hand.

The new top-level map `managedFields` of
`Configuration/AcademicPersons/Settings.yaml` names, per record type,
the fields a synchronisation or an import owns: `profile`,
`contracts`, `emailAddresses`, `phoneNumbers` and
`physicalAddresses`, each a list of field names as the rest of the file
uses them.

The backend record form renders a managed field read-only on a record that
carries an import identifier, is a record of the default language, and whose
profile is not excluded with **Skip synchronisation**. The field shows
a note naming the import identifier. Records an editor added, every record of
an excluded profile and translations stay editable. See
[Managed fields](../../Configuration/ManagedFields/Index.html#configuration-managed-fields).

## Impact {#impact}

Nothing changes for an installation that does not name a field: the shipped
lists are empty.

The lock applies to the backend form and to the profile editor of
**EXT:academic_persons_edit**, which reads the same map. The
synchronisation, an import and a script keep writing the fields.

A name that matches no field of its record type makes every person record form
fail with the exception `1790536034`, which names it.
