# Epic OP-11021 - Show changes of project attributes in project activity view

Project: OpenProject
Status: closed
URL: https://community.openproject.org/work_packages/OP-11021

## Detailed specification

### Motivation and background information

### Acceptance criteria

### Out of scope

| Attribute | Value |
| --- | --- |
| Mockups |  |

## Planning

| Attribute | Value |
| --- | --- |
| Roadmap |  |
| Date |  |
| Votes |  |
| List |  |
| Target versions | 12.5.0 |
| Sprint | 12.5.0 |
| Backlog bucket |  |
| Relevance |  |

## Subitems

| ID | Type | Subject | Status | Assignee | Target versions | Project | Priority | Spent time |
| --- | --- | --- | --- | --- | --- | --- | --- | --- |
| OP-11577 | Implementation | Journalize project attributes changes | closed |  | 12.5.0 | OpenProject | Medium |  |
| OP-11578 | Implementation | Display project attributes activities in activity module | closed |  | 12.5.0 | OpenProject | Medium |  |
| OP-11579 | Implementation | Update look of activity items in activity module for project and work packages | closed |  | 12.5.0 | OpenProject | Medium |  |
| OP-11580 | Implementation | Add menu items to navigate to activity page showing project attributes  | closed |  | 12.5.0 | OpenProject | Medium |  |
| OP-11944 | Implementation | Fix QA issues 1 to 6 | closed |  | 12.5.0 | OpenProject | Medium |  |
| OP-11946 | Implementation | Fix QA issue 7 - diff back link | closed |  | 12.5.0 | OpenProject | Medium |  |
| OP-11947 | Implementation | Indicate the subproject only when the update concerns a subproject  | closed |  | 12.5.0 | OpenProject | Medium |  |
| OP-12060 | Implementation | Display whole activity title even when longer than 100 characters | closed |  | 12.5.0 | OpenProject | Medium |  |

## Bugs and other work packages

_No work packages_

## Details

| Attribute | Value |
| --- | --- |
| Module |  |
| Enterprise plan |  |
| Labels |  |

## People

| Attribute | Value |
| --- | --- |
| Assignee | Niels Lindenthal |
| Accountable | Christophe Bliard |
| Product manager |  |
| Designer | Parimal Satyal |
| Developers |  |
| Requested by |  |
| Interest by |  |

## Estimates and progress

| Attribute | Value |
| --- | --- |
| Work | 20d 0h · Σ 20d 0h |

## Description

**As** a project member  
**I want to** see the changes of project attributes  
**so that** I understand changes that are relevant to me

**Acceptance criteria**

  - <mention class="mention" data-id="45081" data-type="work_package" data-text="###45081">###45081</mention>
      - Changes to project attributes are journalized. This includes:
          - name
          - description
          - public
          - parent
          - identifier
          - active (project archived or active)
          - template
          - Text CF
          - Long text CF
          - Integer CF
          - Float CF
          - Boolean CF
          - Version CF
          - User CF
          - Date CF
          - List CF
  - In the Project activity module:
      - <mention class="mention" data-id="45082" data-type="work_package" data-text="###45082">###45082</mention>
          - There is a new checkbox in the sidebar titled "Project attributes". This needs to be enabled for project activity to be displayed.
          - Project activities can be for the current project or for sub-projects of the current project.
      - <mention class="mention" data-id="45083" data-type="work_package" data-text="###45083">###45083</mention>
          - Project activity is included to updates displayed on this page, with this format:
              - [**Project: {Project name}**](https://community.openproject.org/#)  
                updated by [{mini avatar} {user name}](https://community.openproject.org/#) on {date and time}
                  - **Attribute name** {update}
          - *(added 17.01.23)* For specific attributes, use the following phrasing:
              - **name:**
                  - **Name** changed from *{old name}* to *{new name}*
              - **description**
                  - **Description** changed ([Details](https://community.openproject.org/#))
              - **public**
                  - **Visibility** set to *{new visibility}*
              - **parent / subproject of**
                  - **Subproject of** *{parent project}*
                  - **Subproject of** changed from *{old parent project}* to *{new parent parent)*
                  - **No longer subproject of** *{old parent project}*
              - **identifier**
                  - **Identifier** changed from *{old identifier}* to *{new identifier}*
              - **active (project archived or active)**
                  - **Project archived**
                  - **Project unarchived**
              - **template**
                  - **Project marked as template**
                  - **Project unmarked as template**
              - **meeting**
                  - **Agenda closed**
                  - **Agenda opened**
                  - **Minutes closed**
                  - **Minutes opened**
          - Changes to long text fields are displayed directly in the journal entry (as is case for long-text CFs for work packages)
          - Work package updates will also take a similar form, with this format:
              - [**{Type} \#{id} - Subject**](https://community.openproject.org/#) **(Subproject:** [**{Subproject name}**](https://community.openproject.org/#)**)**  
                updated by [{mini avatar} {user name}](https://community.openproject.org/#) on {date and time}
                  - **Attribute name** {update}
          - **Comments** are treated the same way as change to a long text CF, with this format:
              - [**{Type} \#{id} - Subject**](https://community.openproject.org/#) **(Subproject:** [**{Subproject name}**](https://community.openproject.org/#)**)**  
                updated by [{mini avatar} {user name}](https://community.openproject.org/#) on {date and time}
                  - **Comment added**  
                    {text preview of comment, truncated after 120 characters}
          - Only include the text "**(Subproject:** [**{Subproject name}**](https://community.openproject.org/#)**)"** on updates that concern activity on subprojects.
              - In other pages (user activity, for example), retain this format: **(Project:** [**{Project or subproject name}**](https://community.openproject.org/#)**)**
          - **Work package creation** is treated similarly,
              - with a slightly updated phrasing of the second line:
                  - Created by [{mini avatar} {user name}](https://community.openproject.org/#) on {date and time}
              - Work package creation events never list any attribute changes within the aggregation period related to that event.
                  - After the aggregation period, any update to the work package will create a new *update* event that does list attribute changes as described above.
          - Other updates (budget, meetings, news, spent time, wiki edits) will also take a similar form, with this format:
              - [**{Type} \#{id} - Subject**](https://community.openproject.org/#) **(Project:** [**{Project or subproject name}**](https://community.openproject.org/#)**)**  
                updated by [{mini avatar} {user name}](https://community.openproject.org/#) on {date and time}
                  - **Attribute name** {update}
              - This is out of the scope of this epic and will be handled in <mention class="mention" data-id="46013" data-type="work_package" data-text="###46013">###46013</mention>.
          - Each individual attribute update is displayed (for both project and work package activity) in the same way as they are for work package activity today.
              - Most attributes will show the previous and new value ("**User CF** changed from *Person A* to *Person B*")
              - Changes to work package description will not show a preview, simply a "(Details)" link that displays a diff.
  - <mention class="mention" data-id="45084" data-type="work_package" data-text="###45084">###45084</mention>
      - In the Projects list:
          - In the More menu in each project row, there is an additional menu item "Project activity"
          - The "Latest activity at" column includes changes to project attributes.
              - Currently, this attribute can be empty; with this feature, since project attributes are now included, every project has at least one activity (i.e, project creation). (handled in <mention class="mention" data-id="45082" data-type="work_package" data-text="#45082">#45082</mention>)
      - In Project overview
          - In the More menu of "Project details" widget, there is an additional menu item "Project details activity"

### Screens to add

***Project details*** **widget with a new more menu item: "Project details activity":**

**<img class="op-uc-image op-uc-image_inline" style="width:461px;" src="/api/v3/attachments/38837/content">**

***Project list*** **module with new entry on more menu of an individual project: "Project activity":**

**<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/38838/content">**

***Project activity*** **module with journalised changes to project attributes, and a new "Project attributes" filter on the sidebar:**

<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/51071/content">

***Project activity*** **module with other types of updates (budget, meetings, news, spent time wiki edits)**

<img class="op-uc-image op-uc-image_inline" src="/attachments/51073/Project_activity_view_with_Project_attribute_updates_-_other_attributes.png">

**Details view for a description change** (showing differences between the previous and the current versions)

<img class="op-uc-image op-uc-image_inline" src="/api/v3/attachments/41906/content">

## Out of scope

  - Revert changes
  - Highlight changes in the project list
  - Print view
  - Notifications for changes
  - Enhancements of the diff view of text fields
  - Project status

### Figma mockup

<https://www.figma.com/file/4JZteBi003Q8bIbcMiwIZW/Project-custom-field-activity?node-id=219%3A1143&t=sPcmA1c07Mi5rd2m-4>
