Content
View differences
Updated by Wieland Lindenthal about 4 hours ago
**As a** project administrator
**I want to** be able to change sub-types and see exactly what will change before I switch my project's active variant
**so that** I never change behavior or hide attribute values without understanding the impact.
## Background
We currently work with the assumption that only one sub-type can be active in a project. Currently changing the type of a work package requires that the new and the old type are active at the same time. Now, if we don't allow to have multiple sub-types active in a project, we cannot create that situation. If this is the case, we somehow need the option to switch between the active sub-type in a project. Switching between active sub-types will have effects on the work package `work_packages.type_id` , resulting in different workflows and active fields.
Changing the type of a work package currently does **not** delete `custom_values`. Values for fields the new variant does not include become hidden (not visible or editable), but the data remains and reappears if re-typed back. True deletion only happens through a separate, explicit purge, which is currently not implemented.
## Acceptance criteria
* When I try to change the active variant, the system shows an impact preview before applying, including:
1. the number of existing work packages on the old member
2. the custom fields that will become hidden (with a count of work packages currently holding a value)
3. the custom fields that will become newly available,
4. any current statuses not present in the new variant's workflow.
* I can choose to apply to new work packages only, or to update the existing ones as well
* Re-typing preserves all custom values; values for fields not in the new configuration are retained but hidden, and the preview states this
* Re-typing of large sets runs in the background and records a journal entry per changed work package
* Work packages whose current status is invalid under the new workflow are flagged in the preview; the status is kept rather than forced
## Permissions and visibility considerations
* **To whom is this feature visible?** Project members with `:manage_types`
* **When is it not visible?** Feature flag turned off, without project type management rights
## Translation considerations
<br>
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">English</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">German</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">French (verify)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Spanish (verify)</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Change variant</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Variante ändern</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Changer de variante</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Cambiar la variante</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Impact preview</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Auswirkungen anzeigen</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Aperçu de l'impact</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Vista previa del impacto</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">These fields will be hidden</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Diese Felder werden ausgeblendet</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Ces champs seront masqués</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Estos campos se ocultarán</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Values are kept but no longer shown</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Werte bleiben erhalten, werden aber nicht mehr angezeigt</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Les valeurs sont conservées mais ne sont plus affichées</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Los valores se conservan pero ya no se muestran</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Newly available fields</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Neu verfügbare Felder</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Nouveaux champs disponibles</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Campos recién disponibles</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Re-type existing work packages</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Bestehende Arbeitspakete umtypisieren</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Recatégoriser les lots de travaux existants</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Recategorizar los paquetes de trabajo existentes</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Apply to new work packages only</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Nur auf neue Arbeitspakete anwenden</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Appliquer uniquement aux nouveaux lots de travaux</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Aplicar solo a los nuevos paquetes de trabajo</p></td></tr></tbody></table></figure>
## Out of scope
* Permanent deletion or purge of hidden custom values.
* Forced status mapping or automatic transitions when the new workflow lacks a current status (first iteration keeps the status and warns)
* Re-typing across different type roots
**I want to** be able to change sub-types and see exactly what will change before I switch my project's active variant
**so that** I never change behavior or hide attribute values without understanding the impact.
## Background
We currently work with the assumption that only one sub-type can be active in a project. Currently changing the type of a work package requires that the new and the old type are active at the same time. Now, if we don't allow to have multiple sub-types active in a project, we cannot create that situation. If this is the case, we somehow need the option to switch between the active sub-type in a project. Switching between active sub-types will have effects on the work package `work_packages.type_id` , resulting in different workflows and active fields.
Changing the type of a work package currently does **not** delete `custom_values`. Values for fields the new variant does not include become hidden (not visible or editable), but the data remains and reappears if re-typed back. True deletion only happens through a separate, explicit purge, which is currently not implemented.
## Acceptance criteria
* When I try to change the active variant, the system shows an impact preview before applying, including:
1. the number of existing work packages on the old member
2. the custom fields that will become hidden (with a count of work packages currently holding a value)
3. the custom fields that will become newly available,
4. any current statuses not present in the new variant's workflow.
* I can choose to apply to new work packages only, or to update the existing ones as well
* Re-typing preserves all custom values; values for fields not in the new configuration are retained but hidden, and the preview states this
* Re-typing of large sets runs in the background and records a journal entry per changed work package
* Work packages whose current status is invalid under the new workflow are flagged in the preview; the status is kept rather than forced
## Permissions and visibility considerations
* **To whom is this feature visible?** Project members with `:manage_types`
* **When is it not visible?** Feature flag turned off, without project type management rights
## Translation considerations
<br>
<figure class="table op-uc-figure_align-center op-uc-figure"><table class="op-uc-table"><thead class="op-uc-table--head"><tr class="op-uc-table--row"><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">English</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">German</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">French (verify)</p></th><th class="op-uc-table--cell op-uc-table--cell_head"><p class="op-uc-p">Spanish (verify)</p></th></tr></thead><tbody><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Change variant</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Variante ändern</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Changer de variante</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Cambiar la variante</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Impact preview</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Auswirkungen anzeigen</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Aperçu de l'impact</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Vista previa del impacto</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">These fields will be hidden</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Diese Felder werden ausgeblendet</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Ces champs seront masqués</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Estos campos se ocultarán</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Values are kept but no longer shown</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Werte bleiben erhalten, werden aber nicht mehr angezeigt</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Les valeurs sont conservées mais ne sont plus affichées</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Los valores se conservan pero ya no se muestran</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Newly available fields</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Neu verfügbare Felder</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Nouveaux champs disponibles</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Campos recién disponibles</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Re-type existing work packages</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Bestehende Arbeitspakete umtypisieren</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Recatégoriser les lots de travaux existants</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Recategorizar los paquetes de trabajo existentes</p></td></tr><tr class="op-uc-table--row"><td class="op-uc-table--cell"><p class="op-uc-p">Apply to new work packages only</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Nur auf neue Arbeitspakete anwenden</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Appliquer uniquement aux nouveaux lots de travaux</p></td><td class="op-uc-table--cell"><p class="op-uc-p">Aplicar solo a los nuevos paquetes de trabajo</p></td></tr></tbody></table></figure>
## Out of scope
* Permanent deletion or purge of hidden custom values.
* Forced status mapping or automatic transitions when the new workflow lacks a current status (first iteration keeps the status and warns)
* Re-typing across different type roots