Install

Works with Drupal: ^11.3 || ^12

Using Composer to manage Drupal site dependencies

Alternative installation files

Download tar.gz 2.95 MB
MD5: 960e3fbf7b7f23e3ad02ffce5c769136
SHA-1: 4b9c162fce9781552839812f2d86adbac09a136f
SHA-256: cd1fc4de121433b1f730fde0e3698011ed2dac0d0a95cfe22334c19d3017cb82
Download zip 4.23 MB
MD5: 8b7b29b788e1bffb98f38811409a18dc
SHA-1: 1ef2538692b0d3f56b10176654fb6114684a1225
SHA-256: 3b77778eeb713c107f6c28804c26824c4908bf544366502da59a32a11a089bf7

Release notes

WARNING: THERE IS NO MIGRATION PATH. YOU MUST REINSTALL FROM SCRATCH.

Do not update an existing site to this release. Orchestra ships no update hooks, and none is coming until the first beta release. A site on an earlier alpha holds a database this code does not match.

Uninstall the Orchestra modules, drop what they leave behind, and install 1.0.0-alpha24 fresh. Every instance, token, task, incident, variable, attachment and delegation from an earlier alpha is lost, and that is expected.

Between alpha23 and alpha24 in particular, a token stores the workflow its step belongs to, in a new workflow base field. A theme overriding an Orchestra template should also read "For theme developers" below: several templates are renamed, split or removed.

New

Fixes worth naming

  • update.php could end in a fatal error on a site with Orchestra Group (TypeError: GroupsVariable::__construct(): Argument #8 ($memoryCache) must be of type MemoryCacheInterface, UpdateBackend given), when cron ran at the end of the update. #3632684: Type the cache.memory arguments as CacheBackendInterface, so update.php does not crash
  • A step resume through the API wrote variables of any size, and a name longer than 255 characters failed inside storage with a generic error. A resume now refuses what a start and setVariable() refuse, naming the variable, before anything is written. #3633205: Check the variables a step resume writes as start() and setVariable() check them
  • Resuming an incident overwrote every variable with the value the form showed, including one another branch had written since the form was opened. Only the values the operator changes are written now. #3633206: Keep concurrent writes on incident resume, uninstall orchestra_server cleanly, use the resolved Kessai client, keep node id case, and fix five more defects
  • Orchestra Server could not be uninstalled once a consumer existed: the uninstall stopped on a field already deleted. #3633206
  • The payment steps crashed on a site whose payments are settled by Kessai on another host, and on a site with both, paid through the local engine while the rest of the module read through the client. They now take the payment client the site resolved. #3633206
  • Saving in the Complete Modeler lowercased node ids, so a node drawn in BPMN.io, such as Activity_0p1z9vg, was renamed even when nothing was edited, and lost its layout and translations. #3633206
  • On a site served from a subdirectory, some links doubled the base path (/sub/sub/...): the instance page's back link, the webform's escape buttons and the step links sent to a calling site. #3633206
  • A local workflow could not be deleted while a remote subprocess step named a workflow of the same name on another site. The Complete Modeler also refuses a remote child process the remote does not list, instead of failing when the first token reaches the step. #3633206
  • The bulk actions on processes and tokens now say for each row what they did, including a row they skipped and a cancel that lost to another actor, instead of leaving the row blank. #3633206

Changed

For theme developers

  • orchestra_status_tag and orchestra_lifecycle_marker are replaced by orchestra_instance_status, orchestra_instance_state, orchestra_task_state, orchestra_task_outcome and orchestra_token_state. #3632898
  • The instance page's templates are named after it: orchestra_instance becomes orchestra_instance_detail, and its parts orchestra_instance_detail_meta, _status, _state, _timeline, _source and _back. The parts get data instead of prebuilt markup. #3632898 #3632911
  • The card row gets the row's fields as they are, keyed by id, and the shipped orchestra-card-row--request.html.twig and orchestra-card-row--task.html.twig place them. orchestra_card_column is removed, and the orchestra-card__col* classes become orchestra-card__field*. A theme overriding orchestra-card-row.html.twig to restyle the shipped lists now overrides the request or task template. #3632980: Hand the card template its row's fields as they are, and place them by id in the shipped request and task templates
  • The five state-shaped Views fields each render through a wrapper named after their plugin (views_view_field__orchestra_instance_status and so on). The shared views_view_field__orchestra_state_label is removed. #3633111

For module developers

  • TokenInterface::getWorkflowId() names the workflow a token's step belongs to, the embedded child's inside an embedded subprocess, read from the token's own row. #3633145: Store on each token the workflow its step belongs to
  • VariableResolver::readValueOfInstances() reads one process variable for a set of instances in one query. #3632968
  • SubprocessTaskInterface::getChildWorkflowId(array $configuration) says which workflow of this site a subprocess node runs. WorkItemManagerInterface::getLabel() takes the workflow a caller has already loaded, and InternalPathPolicy::buildUrl() builds a Url from an address this site made without doubling the base path. #3633206
  • TemplateScope::createForWorkflow() takes the config factory instead of the entity type manager. #3632866

Housekeeping

Created by: mably
Created on: 26 Oct 2026 at 13:56 UTC
Last updated: 26 Oct 2026 at 13:57 UTC
Bug fixes
New features

Other releases