---
title: "Breaking: The contract form has no \"Publish\" switch"
manual: "Academic Profiles Edit"
version: "main"
source: "Changelog/3.0/Breaking-ContractPublishSwitchRemoved.rst"
rendered: "2026-09-30T20:17:10+00:00"
---

# Breaking: The contract form has no "Publish" switch {#breaking-contract-publish-switch-removed}

## Description {#description}

The contract form of the [Profile editing](../../ProfileEditing/Index.html#profile-editing) view had a **Publish**
switch. It wrote the contract field `publish` of
[`fgtclb/academic-persons`](https://packagist.org/packages/fgtclb/academic-persons), which no public view has ever read, so
switching it off hid nothing. That field is removed in 3.0, see the Breaking
entry "The contract field publish has been removed" of academic_persons.

Whether a contract is shown is its visibility. The hide action of the contract
row writes it, marks a hidden contract with **Hidden** in the list and
leaves it out of the public views, see [Feature: Contracts and profile information rows can be hidden](Feature-HideDocumentRows.html#feature-hide-document-rows).

Removed with the switch:

-   `\FGTCLB\AcademicPersonsEdit\Domain\Model\Dto\ContractFormData::$publish`,
    its constructor parameter `$publish` and `isPublish()`,
-   the label `contract.publish.label` of `locallang.xlf` and
    `de.locallang.xlf`.

## Impact {#impact}

The contract form lists its fields without the switch. A save that still sends
`publish`, from an overridden template, a cached script or a client of its
own, is refused with the answer of any field the form does not have:
HTTP 422 and `This field cannot be changed.` for `publish`. Nothing of
that request is stored.

Code that constructs a `ContractFormData` with the named argument
`publish:` fails with `Unknown named parameter $publish`. A ninth argument
passed by position is ignored without an error. A call of `isPublish()`
is a fatal error.

## Affected Installations {#affected-installations}

Installations that override the contract form or its field partials, send
their own save requests to the editor, or use `ContractFormData` in code
of their own, for example in a listener of
`\FGTCLB\AcademicPersonsEdit\Event\BeforeProfileEditingWriteEvent`.

## Migration {#migration}

Drop `publish` from the fields an override renders or a client sends, and
the `publish` argument from a `ContractFormData` constructor call. To
show or hide a contract, use the hide action of its row.
