diff --git a/docs/development/application-architecture/README.md b/docs/development/application-architecture/README.md index 01984e2906a2..d9a3812f3e57 100644 --- a/docs/development/application-architecture/README.md +++ b/docs/development/application-architecture/README.md @@ -5,12 +5,8 @@ description: An introduction of the architecture used at OpenProject and their i keywords: architecture overview, hybrid application, Ruby on Rails, Angular --- - - # Application architecture - - ```mermaid %%{init: {'theme':'neutral'}}%% @@ -56,35 +52,30 @@ end A1 A2 - end - - ``` ## Involved services -| Service | Relationship to OpenProject | Communication interfaces and mechanisms | Access modes
(R - read)
(W - write) | References | -|-------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Web browser | Performs requests to the application | HTTPS | RW | n/a | -| Native client | Performs requests to the application | HTTPS | RW | n/a | -| SVN client | Performs SVN requests to the application web server | HTTPS | RW | [Repository integrations](https://www.openproject.org/docs/user-guide/repository/) | -| Git client | Performs Git Smart HTTP requests to the application server | HTTPS | RW | [Repository integrations](https://www.openproject.org/docs/user-guide/repository/) | -| Load balancer / Proxy | Depending on installation mechanism, terminates TLS/SSL, accepts and proxies or load balances web requests to the different OpenProject web application servers | HTTPS / PROXY | - | [Configuration for packaged installations](https://www.openproject.org/docs/installation-and-operations/installation/packaged/#step-3-apache2-web-server-and-ssl-termination)
[Configuration for Docker/Kubernetes](https://www.openproject.org/docs/installation-and-operations/installation/docker/#disabling-https-mode) | -| Puma application server | Accepts web requests, runs the OpenProject web facing application | Web requests (HTTP/HTTPS)
Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/)
[Integrations guide](https://www.openproject.org/docs/system-admin-guide/integrations/) | -| Memcached / Redis / File cache | Application-level cache (if enabled) | TCP connections | RW | [Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options) | -| PostgreSQL | Database management system | (Encrypted) TCP connections between web and background workers | | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
| -| Background worker | Handles asynchronous jobs, such as backup requests, email delivery, | Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](https://www.openproject.org/docs/installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](https://www.openproject.org/docs/installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/)
[Integrations guide](https://www.openproject.org/docs/system-admin-guide/integrations/) | -| Attached storages or Object storage | Access for attachments for the OpenProject application.
Either directly (or networked) attached storages, or configuration of an S3-compatible Object store | Local filesystem access (local drives, NFS)
HTTPS (S3-compatible storage) | RW | [Configuration of the attachment storage](https://www.openproject.org/docs/installation-and-operations/configuration/#attachments-storage) | -| Email gateways | Send emails (e.g., notifications) from OpenProject application | SMTP | W (deliver mails to relay) | [SMTP configuration](https://www.openproject.org/docs/installation-and-operations/configuration/outbound-emails/) | -| Identity providers | External authentication providers (e.g., Keycloak, ADFS, etc.) | HTTPS through standard protocols (OpenID connect, SAML, OAuth 2.0) | R (Redirect and read user info) | [OpenID connect provider configuration](https://www.openproject.org/docs/system-admin-guide/authentication/openid-providers/)
[SAML provider configuration](https://www.openproject.org/docs/system-admin-guide/authentication/saml/)
[OAuth 2.0 application configuration](https://www.openproject.org/docs/system-admin-guide/authentication/oauth-applications/) | -| Nextcloud | External bilateral integration | HTTPS | RW | [Nextcloud integration guide](https://www.openproject.org/docs/system-admin-guide/integrations/nextcloud/) | -| GitHub | Pull Request / Issue referencing Integration into OpenProject | HTTPS (Webhooks) | R (Incoming webhook from GitHub) | [GitHub integration guide](https://www.openproject.org/docs/system-admin-guide/integrations/github-integration/) | -| Calendars | External calendars requesting dynamic ICS calendar files from OpenProject | HTTPS (iCalendar/webdav) | R (Outgoing calendar data) | [Calendar subscriptions configuration](https://www.openproject.org/docs/system-admin-guide/calendars-and-dates/#calendar-subscriptions) | -| API integrations | Structural access to OpenProject through API endpoints. Optional access to users and third party organizations depending on authorized scopes | HTTPS | (Optional) R
(Optional) W
| [API configuration](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/) | -| Outgoing Webhooks | Outgoing requests for changes within the application | HTTPS | R (Outgoing webhook data) | [Webhook configuration an administration](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/#webhooks) | - - +| Service | Relationship to OpenProject | Communication interfaces and mechanisms | Access modes
(R - read)
(W - write) | References | +|-------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Web browser | Performs requests to the application | HTTPS | RW | n/a | +| Native client | Performs requests to the application | HTTPS | RW | n/a | +| SVN client | Performs SVN requests to the application web server | HTTPS | RW | [Repository integrations](../../user-guide/repository/) | +| Git client | Performs Git Smart HTTP requests to the application server | HTTPS | RW | [Repository integrations](../../user-guide/repository/) | +| Load balancer / Proxy | Depending on installation mechanism, terminates TLS/SSL, accepts and proxies or load balances web requests to the different OpenProject web application servers | HTTPS / PROXY | - | [Configuration for packaged installations](../../installation-and-operations/installation/packaged/#step-3-apache2-web-server-and-ssl-termination)
[Configuration for Docker/Kubernetes](../../installation-and-operations/installation/docker/#disabling-https-mode) | +| Puma application server | Accepts web requests, runs the OpenProject web facing application | Web requests (HTTP/HTTPS)
Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](../../installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](../../installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](../../installation-and-operations/configuration/outbound-emails/)
[Integrations guide](../../system-admin-guide/integrations/) | +| Memcached / Redis / File cache | Application-level cache (if enabled) | TCP connections | RW | [Cache configuration](../../installation-and-operations/configuration/#cache-configuration-options) | +| PostgreSQL | Database management system | (Encrypted) TCP connections between web and background workers | | [Database TLS setup](../../installation-and-operations/configuration/#database-configuration-and-ssl)
| +| Background worker | Handles asynchronous jobs, such as backup requests, email delivery, | Database (TCP)
Memcached (TCP)
Email gateways (SMTP)
External integration requests (HTTPS) | RW | [Database TLS setup](../../installation-and-operations/configuration/#database-configuration-and-ssl)
[Cache configuration](../../installation-and-operations/configuration/#cache-configuration-options)
[SMTP configuration](../../installation-and-operations/configuration/outbound-emails/)
[Integrations guide](../../system-admin-guide/integrations/) | +| Attached storages or Object storage | Access for attachments for the OpenProject application.
Either directly (or networked) attached storages, or configuration of an S3-compatible Object store | Local filesystem access (local drives, NFS)
HTTPS (S3-compatible storage) | RW | [Configuration of the attachment storage](../../installation-and-operations/configuration/#attachments-storage) | +| Email gateways | Send emails (e.g., notifications) from OpenProject application | SMTP | W (deliver mails to relay) | [SMTP configuration](../../installation-and-operations/configuration/outbound-emails/) | +| Identity providers | External authentication providers (e.g., Keycloak, ADFS, etc.) | HTTPS through standard protocols (OpenID connect, SAML, OAuth 2.0) | R (Redirect and read user info) | [OpenID connect provider configuration](../../system-admin-guide/authentication/openid-providers/)
[SAML provider configuration](../../system-admin-guide/authentication/saml/)
[OAuth 2.0 application configuration](../../system-admin-guide/authentication/oauth-applications/) | +| Nextcloud | External bilateral integration | HTTPS | RW | [Nextcloud integration guide](../../system-admin-guide/integrations/nextcloud/) | +| GitHub | Pull Request / Issue referencing Integration into OpenProject | HTTPS (Webhooks) | R (Incoming webhook from GitHub) | [GitHub integration guide](../../system-admin-guide/integrations/github-integration/) | +| Calendars | External calendars requesting dynamic ICS calendar files from OpenProject | HTTPS (iCalendar/webdav) | R (Outgoing calendar data) | [Calendar subscriptions configuration](../../system-admin-guide/calendars-and-dates/#calendar-subscriptions) | +| API integrations | Structural access to OpenProject through API endpoints. Optional access to users and third party organizations depending on authorized scopes | HTTPS | (Optional) R
(Optional) W
| [API configuration](../../system-admin-guide/api-and-webhooks/) | +| Outgoing Webhooks | Outgoing requests for changes within the application | HTTPS | R (Outgoing webhook data) | [Webhook configuration an administration](../../system-admin-guide/api-and-webhooks/#webhooks) | # Software @@ -93,23 +84,19 @@ OpenProject is developed as a GPLv3 licensed, open-source software. The software - [Community Edition](https://www.openproject.org/community-edition/) - [Enterprise on-premises and Enterprise cloud](https://www.openproject.org/enterprise-edition/) - - # Environments OpenProject is continuously tested, developed, and distributed using the following environments -| **Environment** | **Description** | **Release Target** | **Deployment cycles** | -| ------------------------------- |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| ------------------------------------------------------------ | ------------------------------------------------------------ | -| Edge | Automatic deployments through [GitHub actions](https://github.com/opf/openproject/blob/dev/.github/workflows/continuous-delivery.yml) for instances on openproject-edge.com
Subject for continuous QA, acceptance and regression testing. | Next minor or major release planned and developed in our [community instance](https://community.openproject.org/projects/openproject/) | On every push to `opf/openproject#dev` | -| Stage | Automatic deployments through [GitHub actions](https://github.com/opf/openproject/blob/dev/.github/workflows/continuous-delivery.yml) for instances on openproject-stage.com.
Subject for QA and acceptance testing of bugfix prior to stable releases. | Next patch release of the current stable release following our [release plan](https://community.openproject.org/projects/openproject/work_packages?query_id=918) | On every push to `release/X.Y`, where `X.Y` is the current stable release major and minor versions. | -| Production
(SaaS / Cloud) | Production cloud environments. Deployed manually with the latest stable release | Stable releases | Manually | -| Production
(Docker images) | [Official public OpenProject docker images](https://hub.docker.com/r/openproject/community/)
Continuous delivery for development versions using `dev-*`tags.
Stable releases through major, minor, or patch level tags. | Development (`dev`, `dev-slim` tag)
Stable releases (`X`, `X.Y`, `X.Y.Z`, `X-slim`, `X.Y-slim`, `X.Y.Z-slim`) | Automatically on new releases of the OpenProject application | -| Production
(Packages) | [Official public OpenProject Linux packages](https://www.openproject.org/docs/installation-and-operations/installation/packaged/)

Stable releases for supported distributions | Stable releases | Automatically on new releases of the OpenProject application | -| Production
(Helm chart) | [Official public OpenProject Helm charts](https://www.openproject.org/docs/installation-and-operations/installation/helm-chart/)
Stable releases | Stable releases (configurable through container tags) | Updates to Helm chart are manual, underlying deployment uses OpenProject docker images | -| PullPreview | Temporary instances for development of features scope to a pull request. | Feature branches | Automatically deployed when developers/QA request a pull preview instance by labelling pull requests with the `PullPreview` tag. | - - +| **Environment** | **Description** | **Release Target** | **Deployment cycles** | +|-------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------| +| Edge | Automatic deployments through [GitHub actions](https://github.com/opf/openproject/blob/dev/.github/workflows/continuous-delivery.yml) for instances on openproject-edge.com
Subject for continuous QA, acceptance and regression testing. | Next minor or major release planned and developed in our [community instance](https://community.openproject.org/projects/openproject/) | On every push to `opf/openproject#dev` | +| Stage | Automatic deployments through [GitHub actions](https://github.com/opf/openproject/blob/dev/.github/workflows/continuous-delivery.yml) for instances on openproject-stage.com.
Subject for QA and acceptance testing of bugfix prior to stable releases. | Next patch release of the current stable release following our [release plan](https://community.openproject.org/projects/openproject/work_packages?query_id=918) | On every push to `release/X.Y`, where `X.Y` is the current stable release major and minor versions. | +| Production
(SaaS / Cloud) | Production cloud environments. Deployed manually with the latest stable release | Stable releases | Manually | +| Production
(Docker images) | [Official public OpenProject docker images](https://hub.docker.com/r/openproject/community/)
Continuous delivery for development versions using `dev-*`tags.
Stable releases through major, minor, or patch level tags. | Development (`dev`, `dev-slim` tag)
Stable releases (`X`, `X.Y`, `X.Y.Z`, `X-slim`, `X.Y-slim`, `X.Y.Z-slim`) | Automatically on new releases of the OpenProject application | +| Production
(Packages) | [Official public OpenProject Linux packages](../../installation-and-operations/installation/packaged/)

Stable releases for supported distributions | Stable releases | Automatically on new releases of the OpenProject application | +| Production
(Helm chart) | [Official public OpenProject Helm charts](../../installation-and-operations/installation/helm-chart/)
Stable releases | Stable releases (configurable through container tags) | Updates to Helm chart are manual, underlying deployment uses OpenProject docker images | +| PullPreview | Temporary instances for development of features scope to a pull request. | Feature branches | Automatically deployed when developers/QA request a pull preview instance by labelling pull requests with the `PullPreview` tag. | # Patch and change management @@ -119,18 +106,14 @@ This section summarizes all relevant information about the process for providing ## Current release -The [release notes](https://www.openproject.org/docs/release-notes) provide a list of all the releases including the current stable one. - -Administrators can identify their currently deployed version of OpenProject in the [Administration information page of their installation](https://www.openproject.org/docs/system-admin-guide/information). - +The [release notes](../../release-notes) provide a list of all the releases including the current stable one. +Administrators can identify their currently deployed version of OpenProject in the [Administration information page of their installation](../../system-admin-guide/information). ## Upcoming releases See the [Roadmap](https://community.openproject.org/projects/openproject/roadmap) for the overview of the upcoming stable releases. - - ## Versioning OpenProject follows [Semantic Versioning](https://semver.org/). Therefore, the version is a composition of three digits in the format of e.g. 0.1.1 and can be summarized as followed: @@ -164,33 +147,23 @@ OpenProject embeds some release information into the packages and containers to - **PRODUCT_VERSION** Commit of the flavour/product version. In case of the [openDesk container](https://hub.docker.com/r/openproject/open_desk), contains a reference to the openDesk repository https://github.com/opf/openproject-open_desk - **BUILDER_VERSION** Internal reference of the building CI repository that we use to create and publish the images. - - ## Support of releases For the community edition, only the current stable release is maintained. The [Enterprise on-premises](https://www.openproject.org/enterprise-edition) provides extended maintenance. We recommended to update to a new stable release as soon as possible to have a supported version installed. To that end, OpenProject will show an information banner to administrators in case a new stable release is available. - - ## Change history -All changes made to the OpenProject software are documented via work packages bundled by the version. The [Roadmap view](https://community.openproject.org/projects/openproject/roadmap) gives a corresponding overview. A release is also summarized in the [release notes](https://www.openproject.org/docs/release-notes). - - +All changes made to the OpenProject software are documented via work packages bundled by the version. The [Roadmap view](https://community.openproject.org/projects/openproject/roadmap) gives a corresponding overview. A release is also summarized in the [release notes](../../release-notes). ## Distribution -OpenProject is distributed in [various formats](https://www.openproject.org/docs/installation-and-operations/installation). Manual installation based on the code in GitHub is possible but not supported. - - +OpenProject is distributed in [various formats](../../installation-and-operations/installation). Manual installation based on the code in GitHub is possible but not supported. ## Versions in the codebase -The version is represented as [tags](https://www.openproject.org/docs/development/git-workflow#tagging) and [branches](https://www.openproject.org/docs/development/git-workflow#branching-model) in the repository. The version is also manifested in the [version.rb](https://github.com/opf/openproject/blob/dev/lib/open_project/version.rb). - - +The version is represented as [tags](../git-workflow/#tagging) and [branches](../development/git-workflow/#branching-model) in the repository. The version is also manifested in the [version.rb](https://github.com/opf/openproject/blob/dev/lib/open_project/version.rb). # Components @@ -198,24 +171,18 @@ A typical installation of OpenProject uses a web server such as NGINX or Apache ## Puma application server -OpenProject uses a Puma application server to run and handle requests for the Rails stack. All HTTP(S) requests to OpenProject are handled by it. Puma is a configurable multi-process, multithreading server. The exact number of servers being operated depends on your deployment method of OpenProject. See the [process control and scaling documentation](https://www.openproject.org/docs/installation-and-operations/operation/control/) for more information. - - +OpenProject uses a Puma application server to run and handle requests for the Rails stack. All HTTP(S) requests to OpenProject are handled by it. Puma is a configurable multi-process, multithreading server. The exact number of servers being operated depends on your deployment method of OpenProject. See the [process control and scaling documentation](../../installation-and-operations/operation/control/) for more information. ## External load balancer or proxying server A web server is expected to handle requests between the end-user and the internal Puma application server. It is responsible for e.g., terminating TLS and managing user-facing HTTP connections, but depending on the deployment, also for serving static assets and certain caching related functionality. This server performs a proxy-reverse proxy pattern with the internal application server. No external connections are allowed directly to the Puma server. - - ## Rails application The core application, built on the Ruby on Rails framework, handling business logic, database operations, and user interactions. Utilizes the Model-View-Controller (MVC) design pattern. Follows [secure coding guidelines](../concepts/secure-coding/) for authentication, session management, user input validation, and error logging. The application aims to return to the MVC pattern using Rails, Hotwire, and ViewComponents for UI element composition. This strategy aims for higher usability and efficient development. - - ## Angular frontend Some of the responses of the application include a frontend application approach using Angular. These pages communicate with a REST API to receive data and perform updates. An example of this is the work packages module. Requests within the module are handled completely in the frontend, while boundary requests are forwarded to the Rails stack, returning to a classical request/response pattern. @@ -224,8 +191,6 @@ All requests to the application are still handled by Rails. In some of the respo In the following, we'll take a look at the different components at use in the application stack of OpenProject as well as concrete examples on how these components interact. - - ### Exemplary frontend view request Let's take a look at how the request to `/projects/identifier/work_packages` would be handled by Rails and Angular (excluding any external actual HTTP requests to the web server) @@ -236,16 +201,12 @@ Let's take a look at how the request to `/projects/identifier/work_packages` wou 4. As the `` component contains a ui-router [`[ui-ref]`](https://github.com/opf/openproject/blob/dev/frontend/src/app/core/routing/base/application-base.component.ts) directive, the ui-router will start parsing the URL and looks for a route definition that matches. It will end up matching `root.work-packages` [defined in the work packages' module routes file](https://github.com/opf/openproject/blob/dev/frontend/src/app/features/work-packages/routing/work-packages-routes.ts). 5. From there, the flow is as with a single-page application. The router mounts that component and the Angular frontend will use the APIv3 to fetch and render the application table. - - This will result in a page on which the majority of the content has been rendered by Angular. Only the toolbar, basic page structure, and upper side menu have been rendered by Rails. ![Work packages table](work-packages-table.png) This approach has the significant disadvantage to go through the entire Rails stack first to output a response that is mostly irrelevant for the Angular application, and both systems (Rails and Angular) need a somewhat duplicated routing information. The long-term goal is to move to a single-page application and avoid the first two steps. - - ### Exemplary Rails view request augmented by Angular A response that is fully controlled by Rails but extended by some Angular components in the frontend might look as follows. Let's take a look at the request to [edit a type's form configuration](../../system-admin-guide/manage-work-packages/work-package-types/#work-package-form-configuration-enterprise-add-on) `/types/1/edit/form_configuration`: @@ -262,8 +223,6 @@ A response that is fully controlled by Rails but extended by some Angular compon ![Exemplary form configuration](form-configuration.png) - - # Evolution of the application Historically, OpenProject has been forked from [Redmine](https://www.redmine.org/) and modified from a primarily software-development focused flow into a general project management application suite. A Ruby on Rails monolith was used to serve the entire application, frontend and API. Javascript was used to extend some of the functionality with Prototype.js and jQuery on existing, Rails-rendered pages. diff --git a/docs/development/concepts/secure-coding/README.md b/docs/development/concepts/secure-coding/README.md index 89d92c65e1f3..75ab7d7824a8 100644 --- a/docs/development/concepts/secure-coding/README.md +++ b/docs/development/concepts/secure-coding/README.md @@ -5,8 +5,6 @@ description: An introduction and description of guidelines for writing secure co keywords: infrastructure, security, coding, guidelines --- - - # Secure coding Guidelines This document provides secure coding development guidelines for developers working on OpenProject. The objective is to help identify and mitigate potential security vulnerabilities early in the development process. This document is based on the best practices following the [Open Web Application Security Project (OWASP)](https://www.owasp.org). @@ -19,8 +17,6 @@ By adhering to these secure coding development guidelines, contributors to OpenP The guidelines mentioned below are implemented by OpenProject currently when not specified differently. - - ## Authentication and Credentials Implement strong authentication mechanisms for any sensitive credentials to be used in OpenProject. Currently these credentials are one of: @@ -29,8 +25,6 @@ Implement strong authentication mechanisms for any sensitive credentials to be u - Access tokens for API, OAuth, or external integrations - Session cookies - - **Risks and Impacts** - *Unauthorized Access:* Attackers could gain unauthorized access on improper authentication mechanisms to protected resources, user accounts, or administrative functions. Resulting consequences are data breaches, unauthorized actions, and potential exposure of sensitive information. @@ -40,8 +34,6 @@ Implement strong authentication mechanisms for any sensitive credentials to be u - *Insecure Password Storage*: Storing passwords improperly (e.g., in plaintext or in outdated or incorrectly constructed cryptographic hash functions) can expose them to theft in case of data breaches. This in turn could result in a mass compromise of account data. - *Insufficient Multi-Factor Authentication (MFA):* Lack of MFA support makes it easier for attackers to compromise accounts with stolen credentials. This results in reduced account security and higher risk of unauthorized access. - - **Guidelines** - Ensure uniqueness and case-insensitivity of user logins. @@ -53,8 +45,6 @@ Implement strong authentication mechanisms for any sensitive credentials to be u - Provide means of auditing, maintaining detailed logs of authentication events, including successful and failed login attempts. Log sufficient information for auditing and incident response. - Use the provided features by Rails to prevent cross-site request forgery (CSRF) attacks by utilizing anti-CSRF tokens for all state-changing requests and ensuring that authentication requests are immune to CSRF. - - **Usage at OpenProject** @@ -66,8 +56,6 @@ OpenProject uses industry standard authentication mechanisms that follow the bes - OAuth 2.0 application authentication and authorization with OpenProject acting as the authorization server. Access tokens are hashed using SHA256 in the database. - Internal user credential authentication against passwords stored in BCrypt with a high default yet configurable cost factor depending on the organizational requirements. - - OpenProject recommends these authentication mechanisms: @@ -76,10 +64,8 @@ OpenProject recommends these authentication mechanisms: - For any external connection (Database, LDAP, etc.), OpenProject uses openssl library for the host or container's openssl certificate store. Use your distribution's mechanisms to add verified certificate or certificate chains. For more information, see the [Ruby OpenSSL X509 Store documentation](https://ruby-doc.org/stdlib-2.4.0/libdoc/openssl/rdoc/OpenSSL/X509/Store.html). - For smaller to medium organizations with no centralized authentication mechanism, use the internal username / password authentication mechanism for secure storing of your user's credentials using BCrypt salted cryptographic hash function. -- For organizations with a centralized and accessible LDAP server, [OpenProject provides LDAP userbind authentication](https://www.openproject.org/docs/system-admin-guide/authentication/ldap-authentication/) to forward the authentication request to your LDAP server. Use TLS or LDAPS encrypted connections to the LDAP server to ensure transport level security. Optionally, synchronize roles and permissions using the [LDAP Group sync functionality](https://www.openproject.org/docs/system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/). -- If your organization operates a central authentication services, it is very likely it supports one of the standard remote authentication mechanisms for single sign-on, such as [OpenID connect](https://www.openproject.org/docs/system-admin-guide/authentication/openid-providers/), [SAML](https://www.openproject.org/docs/system-admin-guide/authentication/saml/), or [Kerberos](https://www.openproject.org/docs/system-admin-guide/authentication/kerberos/). Use these mechanisms to ensure a standardized and secure authentication of users without requiring the storage of any credentials at OpenProject while providing a high level of usability due to centralized logins. - - +- For organizations with a centralized and accessible LDAP server, [OpenProject provides LDAP userbind authentication](../../../system-admin-guide/authentication/ldap-authentication/) to forward the authentication request to your LDAP server. Use TLS or LDAPS encrypted connections to the LDAP server to ensure transport level security. Optionally, synchronize roles and permissions using the [LDAP Group sync functionality](../../../system-admin-guide/authentication/ldap-authentication/ldap-group-synchronization/). +- If your organization operates a central authentication services, it is very likely it supports one of the standard remote authentication mechanisms for single sign-on, such as [OpenID connect](../../../system-admin-guide/authentication/openid-providers/), [SAML](../../../system-admin-guide/authentication/saml/), or [Kerberos](../../../system-admin-guide/authentication/kerberos/). Use these mechanisms to ensure a standardized and secure authentication of users without requiring the storage of any credentials at OpenProject while providing a high level of usability due to centralized logins. **References** @@ -87,8 +73,6 @@ https://cheatsheetseries.owasp.org/cheatsheets/Authentication_Cheat_Sheet.html https://guides.rubyonrails.org/security.html - - ### Session Management As OpenProject is a web application, the web session is the central mechanism of authentication for users using the application with their browser. A secure session cookie is used to identify a user's active session. @@ -113,8 +97,6 @@ As OpenProject is a web application, the web session is the central mechanism of - *Weak Session Tokens:* Weak or predictable session token generation can make it easier for attackers to guess or brute-force session identifiers. - - **Guidelines** - Use Rails' built-in secure session cookies for maintaining the users' session. It incorporates best-practices to ensure strong session tokens, tamper resistance, and proper expiration. @@ -129,8 +111,6 @@ As OpenProject is a web application, the web session is the central mechanism of https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html - - ## Authorization and Access Control At its core, permissions in OpenProject are the central key to determine who can access which projects and modules of an instance, as well as what actions they can perform on these pages. OpenProject application uses a Role-based access control (RBAC) approach to grant individual users permissions to projects. The risks associated with security vulnerabilities in the authorization code can have serious implications for the security. @@ -140,8 +120,6 @@ At its core, permissions in OpenProject are the central key to determine who can - *Unauthorized access*: Users gaining or exploiting access to sensitive resources or functionalities they are not supposed to have access to. Potential consequences in data breaches, unauthorized actions, and potential exposure of confidential information. - *Over-Privileged Users*: Users receiving more permissions than necessary for their role, leading to potential misuse of privileges. Potential consequences are unauthorized data modifications, data leaks, or abuse of system capabilities. - - **Guidelines** - Allow flexible assignment of permissions for individual projects and objects, following the *Least Privilege* rule. @@ -151,22 +129,16 @@ At its core, permissions in OpenProject are the central key to determine who can - Provide extensive tests for permission checks, making assertions of all available cases and using visibility testing for asserting that certain actors _cannot_ access data or perform actions. - Regularly review and update access controls to reflect changes in application functionality and roles. - - **References** https://cheatsheetseries.owasp.org/cheatsheets/Authorization_Cheat_Sheet.html https://guides.rubyonrails.org/security.html - - ## User Input Validation OpenProject is a form-driven application, meaning that users input a lot of data into the system to use it. Proper validation and encoding of user input is crucial to ensure data can be processed in a responsible way. - - **Risks and Impacts** - *Injection attacks:* Attackers could inject malicious code or payloads into the application, leading to vulnerabilities such as SQL injection, or OS-level command injection. Potential consequences are unauthorized data access, data manipulation, and potentially complete system compromise. @@ -174,8 +146,6 @@ OpenProject is a form-driven application, meaning that users input a lot of data - *Cross-Site Request Forgery (CSRF):* Lack of proper request validation can make it easier for attackers to trick users into performing unintended actions on their behalf. Potential consequences are unauthorized actions, such as account changes, data deletion, or fund transfers, performed without user consent. - *File Upload Vulnerabilities*: Insufficient input validation on file uploads can lead to arbitrary file uploads, enabling attackers to upload malicious files or execute code. Potential consequences are remote malware distribution, and remote code execution. - - **Guidelines** - Understand and use the [Rails framework's mechanisms](https://guides.rubyonrails.org/security.html#injection) to prevent injection and CSRF attacks @@ -195,35 +165,25 @@ https://cheatsheetseries.owasp.org/cheatsheets/Injection_Prevention_Cheat_Sheet. https://cheatsheetseries.owasp.org/cheatsheets/Input_Validation_Cheat_Sheet.html - - ## Virus and Malware protection As OpenProject may handle and distribute sensitive user data, attack vectors such as malicious user input as specified in the previous section pose a threat to the integrity, confidentiality, and availability of data. In the following, we will evaluate different risks and guidelines on the protection against viruses and other malware during operation of an OpenProject instance. - - **Risks and impacts** - *Viruses and malware uploads*: Whenever users are able to upload files to a system, potentially malicious files could be provided and distributed through OpenProject by users with the appropriate upload permission. - *Malware in software*: OpenProject carefully selects and updates third-party dependencies. Please see the following section on [external dependencies](#external-dependencies) for more information on the best practices of external dependencies. - - **Guidelines** - Virus and malware uploads - OpenProject provides users with fine-grained access to control which user groups are allowed to upload files - Whitelist for uploads can be provided by MIME type, rejecting any non-matching files - - OpenProject currently does not provide a built-in virus scanner. However, using [webhooks](https://www.openproject.org/docs/system-admin-guide/api-and-webhooks/#webhooks) and the [attachments API](https://www.openproject.org/docs/api/endpoints/attachments/), users can plug existing virus scanning tools and scrub any uploaded files. + - OpenProject currently does not provide a built-in virus scanner. However, using [webhooks](../../../system-admin-guide/api-and-webhooks/#webhooks) and the [attachments API](../../../api/endpoints/attachments/), users can plug existing virus scanning tools and scrub any uploaded files. - *Malware in software*: - OpenProject uses statical code analysis on every change provided to the application as well as code scanners on the artifacts generated from the source code (such as Snyk vulnerability scanner for Docker images). - We recommend users to perform their own - - - - ## Logging and Error Handling Inconsiderate use of error handling, logging, and monitoring mechanisms of a web frameworks can lead to the following risks and impacts. @@ -244,8 +204,6 @@ Inconsiderate use of error handling, logging, and monitoring mechanisms of a web - Log data in a standard format to make parsing, auditing, and monitoring of that information easy. - Ensure that actions are aborted in case of errors - - **Usage at OpenProject** - Exception handlers catch all StandardErrors whenever your controller inherits from ApplicationController @@ -253,16 +211,12 @@ Inconsiderate use of error handling, logging, and monitoring mechanisms of a web - Database transaction wrapping for any actions is wrapped in the [BaseContracted services](https://github.com/opf/openproject/blob/dev/app/services/base_services/base_contracted.rb#L54). Transactions are automatically rolled back in [Rails when exceptions occur](https://api.rubyonrails.org/v5.0.1/classes/ActiveRecord/Transactions/ClassMethods.html). - OpenProject uses a LogRage formatter for flexible, yet easily parsable formats - - **References** https://cheatsheetseries.owasp.org/cheatsheets/Error_Handling_Cheat_Sheet.html https://cheatsheetseries.owasp.org/cheatsheets/Logging_Cheat_Sheet.html - - ## External dependencies OpenProject includes a number of external dependencies both in Ruby as well as in the JavaScript ecosystem. Regardless of the selection of these dependencies, maintaining and keeping the dependencies up-to-date is a critical part of the security of the application. We have seen a lot of attacks surface in the past years originating from either outdated or manipulated dependencies. @@ -286,14 +240,10 @@ OpenProject includes a number of external dependencies both in Ruby as well as i - *Vet new dependencies*: Before adding a new gem or package, research its maintenance history, last update, known vulnerabilities, and community reviews. Check if it's actively maintained, and evaluate all the alternatives. - *Remove outdated dependencies* :Only include gems and packages that are absolutely necessary for your project. Less dependencies mean a reduced attack surface. Remove libraries if they become unused. - - **References** https://cheatsheetseries.owasp.org/cheatsheets/Vulnerable_Dependency_Management_Cheat_Sheet.html - - ## Packaging and containerization Packaging and containerization are critical artifacts in the delivery pipeline of OpenProject. They encapsulate the application and its environment, ensuring consistent operation across different systems and infrastructures. These artifacts need to provide a secure and stable default for maintaining and upgrading OpenProject. @@ -302,13 +252,11 @@ Properly managed packaging and containerization pipelines ensure smooth installa OpenProject provides several installation mechanisms: -- [Packaged installations](https://www.openproject.org/docs/installation-and-operations/installation/packaged/) using the distribution's package manager for dependency control +- [Packaged installations](../../../installation-and-operations/installation/packaged/) using the distribution's package manager for dependency control -- [Slim and all-in-one docker images](https://www.openproject.org/docs/installation-and-operations/installation/docker/) for manual operation with docker +- [Slim and all-in-one docker images](../../../installation-and-operations/installation/docker/) for manual operation with docker -- [OpenProject helm chart](https://www.openproject.org/docs/installation-and-operations/installation/helm-chart/) , as a "package" for kubernetes clusters - - +- [OpenProject helm chart](../../../installation-and-operations/installation/helm-chart/) , as a "package" for kubernetes clusters **Risks and Impact** @@ -320,8 +268,6 @@ OpenProject provides several installation mechanisms: - *Orchestration Complexity*: With more dependencies and services, deployments add complexity that can introduce errors in service discovery, networking, and persistence. - *Compliance and Compatibility*: Ensuring that packaging and containerization meet known regulatory compliance requirements and are compatible with commonly used platforms. - - **Guidelines** - *Use Immutable Tags*: Provide specific, immutable tags for Docker images and fixed packaged versions to ensure consistency and provide clear upgrade paths instead of automatically pulling the latest image @@ -329,6 +275,6 @@ OpenProject provides several installation mechanisms: - *Minimal base Images*: Use minimal base images for Docker containers to reduce the attack surface. OpenProject currently uses a `ruby-${version}-${debianversion}` image as its base. - *Configuration Management*: Ensure configuration management is consistent between deployments. OpenProject provides an interface to ENV-based configuration for packages and Docker to ensure both can be configured similarly. Where necessary, different configuration mechanisms are documented for the different installation mechanisms. - *Resource Limits*: Set resource limits and requests in container definitions to prevent resource contention. The packaged installation provides a set of default scaling services. The OpenProject helm-charts define limits and resource requirements in the helm values. -- *Monitor and Logging*: Implement robust monitoring and logging to track the health and performance of containers. [OpenProject provides individually pluggable health checks for various services as well as flexible logging](https://www.openproject.org/docs/installation-and-operations/operation/monitoring/). +- *Monitor and Logging*: Implement robust monitoring and logging to track the health and performance of containers. [OpenProject provides individually pluggable health checks for various services as well as flexible logging](../../../installation-and-operations/operation/monitoring/). - *Continuous Integration/Continuous Deployment (CI/CD)*: Automate the building, testing, and deployment of containers using CI/CD pipelines. OpenProject builds `dev` containers and packages for every change to the core application. - *Documentation*: Maintain comprehensive documentation for installation and configuration processes across different mechanisms. OpenProject documents all changes as part of the standard development workflow. Documentation is released together with OpenProject to ensure consistency. [The documentation workflow is part of the product development handbook.](../../product-development-handbook/) diff --git a/docs/development/contribution-documentation/documentation-style-guide/README.md b/docs/development/contribution-documentation/documentation-style-guide/README.md index a90a5206ffff..17367d49ec7c 100644 --- a/docs/development/contribution-documentation/documentation-style-guide/README.md +++ b/docs/development/contribution-documentation/documentation-style-guide/README.md @@ -10,14 +10,10 @@ keywords: documentation style guide, style guide, format, style This document defines the standards for the OpenProject documentation, including grammar, formatting, wording and more. - - ## Markup language All OpenProject documentation is written in Markdown. Feel free to either work directly in the Markdown files or to use [GitHub desktop](https://desktop.github.com) with a markdown editor like [Typora](https://typora.io) or others. - - ## Documentation structure The OpenProject documentation is divided into the top level folders: @@ -32,8 +28,6 @@ Within each folder there is a sub-hierarchy of topics. E.g. in the Getting start ![OpenProject_documentation_menu_left_side_unfolded_sub_topics](OpenProject_documentation_menu.png) - - ### Folder content We aim to have a clear hierarchical structure with meaningful URLs like `https://www.openproject.org/docs/getting-started/sign-in-registration/`. With this structure you can identify straight away that this part of the documentation is about the sign in and registration process. At the same time, the website path matches our repository, making it easy to update the documentation. @@ -52,8 +46,6 @@ Find an overview of content per folder here: | [Development](../../../development/) | This guide details how to contribute to the code of the OpenProject application. | | [API](../../../api/) | This part of the documentation deals with the API specification, what endpoints and functionality are available. | - - ## Directory and file names Please respect the following when working with directories and files: @@ -80,13 +72,10 @@ Please respect the following when working with directories and files: If you are unsure where to place a document or a content addition, this should not stop you from authoring and contributing. Use your best judgment, and then add a comment to your pull request. - ## No duplication of information Do not include the same information in multiple places. Instead, link through to the information in the documentation where it is already mentioned so that there is only a single source of truth that needs to be maintained. - - ## References across the documentation - When mentioning other OpenProject modules or features, link to their respective documentation, at least on first mention. @@ -95,14 +84,10 @@ Do not include the same information in multiple places. Instead, link through to - When making reference to third-party products or technologies, link out to their external sites, documentation and resources. - - ## Structure in documents - Structure content in tables or lists etc. in alphabetical order unless there is a reason to use any other order of importance. - - ## Documentation language The OpenProject documentation should be as clear and easy to understand as possible. Avoid unnecessary words. @@ -123,14 +108,10 @@ Use sentences that describe the content and capitalize the first letter in the s `## Start a new trial installation` - - ### UI text When referring to specific user interface text, like a button label or menu item, use the name as in the application and start the word with a capital letter. Moreover, please make it bold. Example: **Start free trial** button. - - ### Feature names Feature names are typically capitalized (the first word) and in bold. For example: @@ -141,9 +122,6 @@ Feature names are typically capitalized (the first word) and in bold. For exampl - **News** - **Wiki** - - - #### Other terms Capitalize names of: @@ -153,8 +131,6 @@ Capitalize names of: Follow the capitalization style by the third party which may use non-standard case styles. For example: OpenProject, GitHub. - - ## Placeholders ### User information @@ -167,22 +143,16 @@ You may need to include user information in entries. Do not use real user inform - Screenshots: When inserting screenshots in the documentation, make sure you are not giving away your identity by using your actual avatar. Rather create a fake user name and avatar. - - ### URLs When including sample URLs in the documentation, use example.com when the domain name is generic. - - ### Tokens There may be times where a token is needed to demonstrate an API call. It is strongly advised not to use real tokens in documentation even if the probability of a token being exploited is low. You can use this fake token as example: 12345678910ABCDE - - ### Commands You might want to provide a command or configuration that uses specific values. @@ -195,14 +165,10 @@ For example: cp ``` - - ## Contractions Please do not use any contractions like don’t or isn’t. - - ## Copy ### Punctuation @@ -217,20 +183,14 @@ Follow these guidelines for punctuation: - When a colon is part of a sentence, always use lowercase after the colon. - - ### Spaces between words Use only standard spaces between words so that the search engine can find individual search terms. - - ## Lists Always start list items with a capital letter. - - ### Ordered and unordered lists Only use ordered lists when their items describe a sequence of steps to follow. @@ -245,8 +205,6 @@ Follow these steps: 3. And then finish off with something else. - - Example for an unordered list: - Feature 1 @@ -255,14 +213,10 @@ Example for an unordered list: - Feature 3 - - ### Markup - Use dashes (`-`) for unordered lists. - - ### Punctuation - Do not add commas (`,`) or semicolons (`;`) to the ends of list items. @@ -270,14 +224,10 @@ Example for an unordered list: - Feature 1: very attractive new feature - Feature 2: description of an additional feature - - ## Tables Tables should be used to describe complex information. Note that in many cases, an unordered list is sufficient to describe a list of items with a single, simple description per item. But, if you have data that is best described by a matrix, tables are the best choice. - - ### Creation guidelines To keep tables accessible and scannable, tables should not have any empty cells. If you still remain with a cell without content, please enter N/A (for ‘not applicable’) or none. @@ -300,8 +250,6 @@ instead of: | Best feature | Use it to synchronize your example table with OpenProject | ``` - - ## Headings - Add only one H1 in each documentation page, by adding # at the beginning of the headline (when using Markdown). @@ -320,36 +268,26 @@ instead of: - See [Capitalization](#capitalization) for guidelines on capitalizing headings. - - ### Heading titles Keep heading titles clear and direct. Make every word count. Where possible, use the imperative. Example: Sign in with an existing account (**not** Signing in with an existing account). - - ### Anchor links -Headings generate anchor links when rendered. ##This is an example generates the anchor #this-is-an-example. +Headings generate anchor links when rendered. `## This is an example` generates the anchor `#this-is-an-example`. Keep in mind that there are various links to OpenProject documentation pages and anchor links on the internet to take the users to the right spot. Thus, please avoid changing headings. - - ## Links Links are important in the documentation. Use links instead of duplicating content to help preserve a single source of truth in the OpenProject documentation. - - ### Basic link criteria - Use inline link Markdown markup `[Description](https://example.com)`. It is easier to read, review, and maintain. - Use meaningful anchor text descriptions. For example, instead of writing something like `Read more about Gantt charts [here](LINK)`, write `Read more about [Gantt charts](LINK)`. - - ### Links to internal documentation Internal links are links within the OpenProject website which includes the OpenProject documentation. In these cases, use relative links. I.e. do not use the full URL of the linked page but instead show the current URL's relation to the linked page's URL. @@ -359,20 +297,14 @@ To link to internal documentation: - Use relative links to Markdown files in the same repository. - Use ../ to navigate to higher-level directories. - - ### Links to external documentation When linking to external information, you have to use absolute URLs. Make sure that you are only linking to an authoritative source, i.e. official and credible sources written by the people who created the item or product. These sources are the most likely to be accurate and remain up to date. - - ## Navigation When documenting navigation through the OpenProject application, use these terms. - - ### Menus Use these terms when referring to OpenProject’s main application elements: @@ -384,8 +316,6 @@ All project menu items are spelled as in the application in bold, e.g. - In the project menu, select **Work packages** to open your work package table. - - ### How to document a navigation path To be consistent, use this format when you write about UI navigation. Use the same names as in the application in italic and with arrows in between: @@ -398,7 +328,6 @@ Images, including screenshots, can help a reader better understand a guide. Howe Before including an image in the documentation, ensure it provides value to the reader. - ### Capture images Use images to help the reader understand where they are in a process, or how they need to interact with the application. @@ -409,7 +338,6 @@ When you take screenshots: - Be consistent: Coordinate screenshots with the other screenshots already on a documentation page. For example, if other screenshots include the left sidebar, include the sidebar in all screenshots. - ### Highlight specific areas and add numbered labels You can highlight a specific area of a screenshot to draw the reader's attention to it. Additionally, add numbered labels to refer to specific parts of the screenshot in the documentation text. These should, however, be used sparingly, since any future changes to the interface require the highlighted areas and labels to be manually added to each updated screenshot. @@ -428,7 +356,6 @@ This is an example of a screenshot with both highlighted areas and numbered labe When referring to the numbered labels in the documentation text, use either an ordered list starting at number 1, with the numbers corresponding to the labeled parts of the screenshot. You may also refer to them within a line of text by using the word "Area" followed by the number, in parentheses, like so: "(Area 1)". - ### Save images - Save the image with a file name that describes the image. Use lower cases and no spaces (see [file names requirements](#directory-and-file-names)). @@ -439,22 +366,16 @@ When referring to the numbered labels in the documentation text, use either an o - Compress GIFs, maximum size 250KB. - - ### Add the image link to content The Markdown code for including an image in a document is: `![Image description which will be the alt tag](document_image_title_v_x_y.png)` The image description is the alt text for the rendered image on the documentation page. For accessibility and SEO, use descriptions that are short and precise. - - ## Videos At the moment it is not possible for external contributors to upload videos to the documentation. Please open a ticket in case you want to add a video. - - ## Alert boxes Use alert boxes to call attention to information. The alert boxes in the OpenProject documentation have a specific format. Please use the following to be consistent: diff --git a/docs/getting-started/boards-introduction/README.md b/docs/getting-started/boards-introduction/README.md index 9871686ff3f2..7fc2bf61c3cf 100644 --- a/docs/getting-started/boards-introduction/README.md +++ b/docs/getting-started/boards-introduction/README.md @@ -10,7 +10,7 @@ keywords: Agile Boards This document provides an initial introduction to the boards in OpenProject, i.e. how to use a Kanban board to manage your tasks in an agile way. -> **Note**: The basic agile boards are included in the OpenProject Community edition. OpenProject advanced Action boards are an Enterprise add-on and can only be used with [Enterprise cloud](https://www.openproject.org/docs/enterprise-guide/enterprise-cloud-guide) or [Enterprise on-premises](https://www.openproject.org/docs/enterprise-guide/enterprise-on-premises-guide). An upgrade from the free Community edition is easily possible. +> **Note**: The basic agile boards are included in the OpenProject Community edition. OpenProject advanced Action boards are an Enterprise add-on and can only be used with [Enterprise cloud](../../enterprise-guide/enterprise-cloud-guide) or [Enterprise on-premises](../../enterprise-guide/enterprise-on-premises-guide). An upgrade from the free Community edition is easily possible. diff --git a/docs/getting-started/my-account/README.md b/docs/getting-started/my-account/README.md index 4c764c287746..6a90e94c7868 100644 --- a/docs/getting-started/my-account/README.md +++ b/docs/getting-started/my-account/README.md @@ -156,7 +156,7 @@ You will then see a message informing you that the the token und the iCal URL ar ### OAUTH -OAuth tokens allow third-party applications to connect with this OpenProject instance, for example Nextcloud (see [here](../../user-guide/file-management/nextcloud-integration/) how to set up Nextcloud integration). OAuth tokens can be created under [*Administration-> Authentication*](https://www.openproject.org/docs/system-admin-guide/authentication/). +OAuth tokens allow third-party applications to connect with this OpenProject instance, for example Nextcloud (see [here](../../user-guide/file-management/nextcloud-integration/) how to set up Nextcloud integration). OAuth tokens can be created under [*Administration-> Authentication*](../../system-admin-guide/authentication/). If no third-party application integration has been activated yet, this list will be empty. Please contact your administrator to help you set it up. Once an integration has been set up, you will see the details here and will be able to delete any OAuth tokens by clicking on the **Delete** icon. diff --git a/docs/glossary/README.md b/docs/glossary/README.md index a0552f36c373..008a4d5a84b8 100644 --- a/docs/glossary/README.md +++ b/docs/glossary/README.md @@ -37,7 +37,7 @@ Project management is a complex process. At the same time, when it comes to soft ### Admin -In OpenProject, the person who has administrative rights in an instance is called **system admin**. All information concerning the configuration of an OpenProject instance are documented in the [System admin guide](https://www.openproject.org/docs/system-admin-guide/#system-admin-guide). Please note that an 'admin' can also describe the role of a person inside a project. This person would be called **project admin** and usually has specific rights on a project level. A project admin does not necessarily have system admin rights. +In OpenProject, the person who has administrative rights in an instance is called **system admin**. All information concerning the configuration of an OpenProject instance are documented in the [System admin guide](../system-admin-guide/#system-admin-guide). Please note that an 'admin' can also describe the role of a person inside a project. This person would be called **project admin** and usually has specific rights on a project level. A project admin does not necessarily have system admin rights. ### Agile project management @@ -45,7 +45,7 @@ Agile project management is an iterative and flexible approach to managing proje ### Attribute help texts -OpenProject offers Attribute help texts that provide additional information for attributes in work packages and projects, incl. custom fields. After setting them up in the Administration they are displayed when users click on the question mark symbol next to this specified attribute for projects and work packages. [Read more about Attribute help texts in OpenProject](https://www.openproject.org/docs/system-admin-guide/attribute-help-texts/). +OpenProject offers Attribute help texts that provide additional information for attributes in work packages and projects, incl. custom fields. After setting them up in the Administration they are displayed when users click on the question mark symbol next to this specified attribute for projects and work packages. [Read more about Attribute help texts in OpenProject](../system-admin-guide/attribute-help-texts/). ### Authentication @@ -53,32 +53,32 @@ In OpenProject, authentication is an important element to guarantee a data prote **More information on authentication in OpenProject** -- [See answers to frequently asked questions (FAQ) for authentication](https://www.openproject.org/docs/system-admin-guide/authentication/authentication-faq/) +- [See answers to frequently asked questions (FAQ) for authentication](../system-admin-guide/authentication/authentication-faq/) - [See our blog post on multi-factor authentication to improve data security](https://www.openproject.org/blog/multi-factor-authentication-for-data-security/) -- [Read more about Two-factor authentication (2FA) in OpenProject](https://www.openproject.org/docs/system-admin-guide/authentication/two-factor-authentication/) -- [Read more about LDAP Authentication in OpenProject](https://www.openproject.org/docs/system-admin-guide/authentication/ldap-authentication/) +- [Read more about Two-factor authentication (2FA) in OpenProject](../system-admin-guide/authentication/two-factor-authentication/) +- [Read more about LDAP Authentication in OpenProject](../system-admin-guide/authentication/ldap-authentication/) ## B ### Backlogs -Backlogs is a [module](#module) in OpenProject that brings features that support the Scrum methodology in OpenProject, such as a product backlog and sprint backlogs, a task board, estimation of story points, a burndown chart and a Scrum wiki. In order to use backlogs in OpenProject, the backlogs module has to be activated in the [project settings](#project-settings) by a project admin. [Read how to work with backlogs in OpenProject](https://www.openproject.org/docs/user-guide/backlogs-scrum). +Backlogs is a [module](#module) in OpenProject that brings features that support the Scrum methodology in OpenProject, such as a product backlog and sprint backlogs, a task board, estimation of story points, a burndown chart and a Scrum wiki. In order to use backlogs in OpenProject, the backlogs module has to be activated in the [project settings](#project-settings) by a project admin. [Read how to work with backlogs in OpenProject](../user-guide/backlogs-scrum). ### Baseline comparison -Baseline is a feature in OpenProject that allows users to quickly track changes on [filtered](#filters) work packages table views. Project managers can use baseline to get a quick overview of what has changed over time, making it easier to report on project progress and status. [Read more about OpenProject's Baseline comparison](https://www.openproject.org/docs/user-guide/work-packages/baseline-comparison/). +Baseline is a feature in OpenProject that allows users to quickly track changes on [filtered](#filters) work packages table views. Project managers can use baseline to get a quick overview of what has changed over time, making it easier to report on project progress and status. [Read more about OpenProject's Baseline comparison](../user-guide/work-packages/baseline-comparison/). ### BIM -BIM stands for Building Information Modeling. In OpenProject, we offer a special OpenProject version for users working in the construction industry. On top of the general project management features, OpenProject BIM enables construction teams to better plan, communicate and collaborate in their building projects. [Read the OpenProject BIM guide to get more information](https://www.openproject.org/docs/bim-guide/). +BIM stands for Building Information Modeling. In OpenProject, we offer a special OpenProject version for users working in the construction industry. On top of the general project management features, OpenProject BIM enables construction teams to better plan, communicate and collaborate in their building projects. [Read the OpenProject BIM guide to get more information](../bim-guide/). ### Board -A board in OpenProject is a view that allows you to see your work packages as cards divided into columns. A board is a typical element in [agile project management](#agile-project-management), supporting methodologies such as Scrum or Kanban. As a [Community user](#community-edition) of OpenProject, you can use a [basic board](https://www.openproject.org/docs/user-guide/agile-boards/#basic-board-community-edition). [Advanced action boards](https://www.openproject.org/docs/user-guide/agile-boards/#action-boards-enterprise-add-on) are part of the [Enterprise add-on](#enterprise-add-on). Use advanced action boards to quickly change attributes of your work package. [Read more about boards for agile project management](https://www.openproject.org/docs/user-guide/agile-boards/) +A board in OpenProject is a view that allows you to see your work packages as cards divided into columns. A board is a typical element in [agile project management](#agile-project-management), supporting methodologies such as Scrum or Kanban. As a [Community user](#community-edition) of OpenProject, you can use a [basic board](../user-guide/agile-boards/#basic-board-community-edition). [Advanced action boards](../user-guide/agile-boards/#action-boards-enterprise-add-on) are part of the [Enterprise add-on](#enterprise-add-on). Use advanced action boards to quickly change attributes of your work package. [Read more about boards for agile project management](../user-guide/agile-boards/) **More information on boards in OpenProject** -- [Examples of agile boards in OpenProject](https://www.openproject.org/docs/user-guide/agile-boards/#agile-boards-examples) +- [Examples of agile boards in OpenProject](../user-guide/agile-boards/#agile-boards-examples) - [Blog post on 5 agile boards to boost efficiency in multi-team projects](https://www.openproject.org/blog/agile-boards/) ## C @@ -96,7 +96,7 @@ OpenProject can be installed either [on-premises](#on-premises) (available for b - [Read a blog article on OpenProject's cloud project management software](https://www.openproject.org/blog/cloud-project-management-software/) - [See OpenProject's prices and plans](https://www.openproject.org/pricing) - [Read a blog article on why to choose an open source cloud software](https://www.openproject.org/blog/open-source-cloud-software/) -- [See the FAQ for OpenProject Enterprise cloud](https://www.openproject.org/docs/enterprise-guide/enterprise-cloud-guide/enterprise-cloud-faq/) +- [See the FAQ for OpenProject Enterprise cloud](../enterprise-guide/enterprise-cloud-guide/enterprise-cloud-faq/) ### Community edition @@ -108,8 +108,8 @@ A custom action in OpenProject is defined as customizable buttons which trigger **More information on custom actions in OpenProject** -- [Watch a short video how custom actions work](https://www.openproject.org/docs/system-admin-guide/manage-work-packages/custom-actions/#automated-workflows-with-custom-actions-enterprise-add-on) -- [Read this guide on how to create custom actions](https://www.openproject.org/docs/system-admin-guide/manage-work-packages/custom-actions/#create-custom-actions) +- [Watch a short video how custom actions work](../system-admin-guide/manage-work-packages/custom-actions/#automated-workflows-with-custom-actions-enterprise-add-on) +- [Read this guide on how to create custom actions](../system-admin-guide/manage-work-packages/custom-actions/#create-custom-actions) - [Read this blog article on how to create an intelligent workflow with custom action - explained with an example](https://www.openproject.org/blog/customize-workflows/) ### Custom field @@ -119,8 +119,8 @@ In OpenProject, a custom field is defined as an additional field which can be ad ![Custom fields in OpenProject](glossary-openproject-custom-field.png) **More information on custom fields in OpenProject** -- [Read how to enable custom fields in projects to use them in work packages](https://www.openproject.org/docs/user-guide/projects/project-settings/custom-fields/) -- [Read how to create custom fields as a system admin in OpenProject](https://www.openproject.org/docs/system-admin-guide/custom-fields/) +- [Read how to enable custom fields in projects to use them in work packages](../user-guide/projects/project-settings/custom-fields/) +- [Read how to create custom fields as a system admin in OpenProject](../system-admin-guide/custom-fields/) ### Custom query @@ -140,7 +140,7 @@ In addition to those overview dashboard options, you can create a [custom query] ### Date alerts -Date alerts in OpenProject are an [Enterprise add-on](#enterprise-add-on) and defined as a feature to generate automatic and customized [notifications](#notifications) regarding a work package's due date or start date. You can find the date alerts feature in your notification center, symbolized by a little bell on the right upper side of your instance. [Read more about the date alerts feature in our user guide](https://www.openproject.org/docs/user-guide/notifications/notification-settings/#date-alerts-enterprise-add-on) or in [this article on deadline management with OpenProject](https://www.openproject.org/blog/deadline-management-date-alert/). +Date alerts in OpenProject are an [Enterprise add-on](#enterprise-add-on) and defined as a feature to generate automatic and customized [notifications](#notifications) regarding a work package's due date or start date. You can find the date alerts feature in your notification center, symbolized by a little bell on the right upper side of your instance. [Read more about the date alerts feature in our user guide](../user-guide/notifications/notification-settings/#date-alerts-enterprise-add-on) or in [this article on deadline management with OpenProject](https://www.openproject.org/blog/deadline-management-date-alert/). ## E @@ -150,11 +150,11 @@ In OpenProject, some features are defined as an Enterprise add-on. This means, t ### Enumerations -Enumerations in OpenProject is defined as a menu item in the admin settings that allows the configuration of Activities (for [time tracking](#time-and-costs)), [project status](#project-status) and work package priorities. [Read more about enumerations in OpenProject](https://www.openproject.org/docs/system-admin-guide/enumerations/). +Enumerations in OpenProject is defined as a menu item in the admin settings that allows the configuration of Activities (for [time tracking](#time-and-costs)), [project status](#project-status) and work package priorities. [Read more about enumerations in OpenProject](../system-admin-guide/enumerations/). ### Excel synchronization -Excel synchronization is an integration in OpenProject which allows you to easily import your issues from Excel to OpenProject or upload your work packages into an Excel spreadsheet. [See our video tutorials on how to work with the Excel synchronization integration](https://www.openproject.org/docs/system-admin-guide/integrations/excel-synchronization/). +Excel synchronization is an integration in OpenProject which allows you to easily import your issues from Excel to OpenProject or upload your work packages into an Excel spreadsheet. [See our video tutorials on how to work with the Excel synchronization integration](../system-admin-guide/integrations/excel-synchronization/). ## F @@ -168,17 +168,17 @@ Filters are essential for task and project management in OpenProject. You have s ### Forum -A forum in OpenProject is defined as a module used to display forums and forum messages. The module has to be activated in the [project settings](#project-settings) by a project admin and a forum has to be created in the forums tab in the project settings to be displayed in the side navigation. [Read more about forums in OpenProject](https://www.openproject.org/docs/user-guide/forums/). +A forum in OpenProject is defined as a module used to display forums and forum messages. The module has to be activated in the [project settings](#project-settings) by a project admin and a forum has to be created in the forums tab in the project settings to be displayed in the side navigation. [Read more about forums in OpenProject](../user-guide/forums/). ## G ### Gantt chart -The Gantt chart in OpenProject displays the work packages in a timeline. You can collaboratively create and manage your project plan. Have your project timelines available for all team [members](#member), and share up-to-date information with stakeholders. You can add start and finish dates and adapt it with drag and drop in the Gantt chart. Also, you can add dependencies, predecessor or follower within the Gantt chart. [Read more about how to activate and work with Gantt charts in OpenProject](https://www.openproject.org/docs/user-guide/gantt-chart/). +The Gantt chart in OpenProject displays the work packages in a timeline. You can collaboratively create and manage your project plan. Have your project timelines available for all team [members](#member), and share up-to-date information with stakeholders. You can add start and finish dates and adapt it with drag and drop in the Gantt chart. Also, you can add dependencies, predecessor or follower within the Gantt chart. [Read more about how to activate and work with Gantt charts in OpenProject](../user-guide/gantt-chart/). ### Global modules -In OpenProject, global modules are defined as a menu to access all [modules](#module) for *all* your projects. With global modules you can easily see all your project-overarching information at one place, e.g. for work packages, boards, calendars or meetings. To access the Global modules side menu, simply navigate to your [home page](#home-page) by clicking on the logo in the header, or use the grid icon in the top right corner. [Read more about global modules in OpenProject](https://www.openproject.org/docs/user-guide/home/global-modules/). +In OpenProject, global modules are defined as a menu to access all [modules](#module) for *all* your projects. With global modules you can easily see all your project-overarching information at one place, e.g. for work packages, boards, calendars or meetings. To access the Global modules side menu, simply navigate to your [home page](#home-page) by clicking on the logo in the header, or use the grid icon in the top right corner. [Read more about global modules in OpenProject](../user-guide/home/global-modules/). ### Group @@ -188,11 +188,11 @@ A Group in OpenProject is defined as a list of users which can be added as a mem ### High contrast mode -OpenProject offers a high contrast mode to make it easier for visually impaired people to use the software. This mode can be selected in the personal [account settings](https://www.openproject.org/docs/getting-started/my-account/#my-account) and will only affect the individual user's experience. +OpenProject offers a high contrast mode to make it easier for visually impaired people to use the software. This mode can be selected in the personal [account settings](../getting-started/my-account/#my-account) and will only affect the individual user's experience. ### Home page -In the OpenProject application, the home page is defined as a start page for your instance, where you get an overview about important information. From the home page you can access all global [modules](#module) of OpenProject. To get to the OpenProject application home page, click on the logo in the header of the application. [Read more about the OpenProject application home page](https://www.openproject.org/docs/user-guide/home/#application-home-page) +In the OpenProject application, the home page is defined as a start page for your instance, where you get an overview about important information. From the home page you can access all global [modules](#module) of OpenProject. To get to the OpenProject application home page, click on the logo in the header of the application. [Read more about the OpenProject application home page](../user-guide/home/#application-home-page) ### Hybrid project management @@ -202,13 +202,13 @@ Hybrid project management is an approach that combines elements of both classic ### Integration -In OpenProject, you can choose from several integrations, such as the [Excel synchronization](#excel-synchronization) or the [Nextcloud integration](#nextcloud-integration). In contrast to a plugin, an integration refers to cross features between two software products (e.g., OpenProject and Nextcloud), where both pieces of software have code that is responsible for interacting with the other software, through e.g., an API. Whereas a [plugin](#plugin) is installed on top of / as part of the OpenProject installation. You'll need to actively install it. [See all available plugins and integrations for OpenProject](https://www.openproject.org/docs/system-admin-guide/integrations/). +In OpenProject, you can choose from several integrations, such as the [Excel synchronization](#excel-synchronization) or the [Nextcloud integration](#nextcloud-integration). In contrast to a plugin, an integration refers to cross features between two software products (e.g., OpenProject and Nextcloud), where both pieces of software have code that is responsible for interacting with the other software, through e.g., an API. Whereas a [plugin](#plugin) is installed on top of / as part of the OpenProject installation. You'll need to actively install it. [See all available plugins and integrations for OpenProject](../system-admin-guide/integrations/). ## M ### Meetings -In OpenProject Software, Meetings is defined as a [module](#module) that allows the organization of meetings. The module has to be activated in the [project settings](#project-settings) by a project admin in order to be displayed in the side navigation. You can choose between classic meetings and dynamic meetings. Please note that only dynamic meetings will remain available in the long term. [See our user guide for more information on Meeting management in OpenProject](https://www.openproject.org/docs/user-guide/meetings/). +In OpenProject Software, Meetings is defined as a [module](#module) that allows the organization of meetings. The module has to be activated in the [project settings](#project-settings) by a project admin in order to be displayed in the side navigation. You can choose between classic meetings and dynamic meetings. Please note that only dynamic meetings will remain available in the long term. [See our user guide for more information on Meeting management in OpenProject](../user-guide/meetings/). ### Member @@ -216,17 +216,17 @@ In OpenProject Software, a member is defined as a single person in a project. Pr ### Module -A module in OpenProject is defined as an independent unit of functionality that can be used to extend and improve the existing core functions. A project admin can activate and de-activate modules in the project settings. Some examples for modules in OpenProject are: Forums, Time and costs, Wiki or the Work packages module. [See our user guide for more information on all modules in OpenProject](https://www.openproject.org/docs/user-guide/#overview-of-modules-in-openproject). +A module in OpenProject is defined as an independent unit of functionality that can be used to extend and improve the existing core functions. A project admin can activate and de-activate modules in the project settings. Some examples for modules in OpenProject are: Forums, Time and costs, Wiki or the Work packages module. [See our user guide for more information on all modules in OpenProject](../user-guide/#overview-of-modules-in-openproject). ### My Page -The My Page in OpenProject is defined as your personal [dashboard](#dashboard) with important overarching project information, such as work package reports, news, spent time, or a calendar. It can be configured to your specific needs. [Read more about the My Page in OpenProject](https://www.openproject.org/docs/getting-started/my-page/). +The My Page in OpenProject is defined as your personal [dashboard](#dashboard) with important overarching project information, such as work package reports, news, spent time, or a calendar. It can be configured to your specific needs. [Read more about the My Page in OpenProject](../getting-started/my-page/). ## N ### News -In OpenProject, News is defined as a [module](#module) that allows the publication and use of news entries. On the news page, you can see the latest news in a project in reverse chronological order. News communicate general topics to all team members. They can be displayed on the [project overview](#project-overview). [Read more about how to work with the News module in OpenProject](https://www.openproject.org/docs/user-guide/news/). +In OpenProject, News is defined as a [module](#module) that allows the publication and use of news entries. On the news page, you can see the latest news in a project in reverse chronological order. News communicate general topics to all team members. They can be displayed on the [project overview](#project-overview). [Read more about how to work with the News module in OpenProject](../user-guide/news/). ### Nextcloud integration @@ -234,17 +234,17 @@ OpenProject offers a Nextcloud integration which allows you to manage files in a ### Notifications -In OpenProject, you get in-app notifications about important changes that are relevant to you – for example new comments that mention you, updates to status, [type](#work-package-types) or dates or new assignments. This feature is enabled by default and can be used as an addition or an alternative to email notifications. To view the notifications, click the bell icon at the top right of the header. The bell icon will be displayed with a red badge if there are new notifications for you. [Read more about notifications in OpenProject](https://www.openproject.org/docs/user-guide/notifications/). +In OpenProject, you get in-app notifications about important changes that are relevant to you – for example new comments that mention you, updates to status, [type](#work-package-types) or dates or new assignments. This feature is enabled by default and can be used as an addition or an alternative to email notifications. To view the notifications, click the bell icon at the top right of the header. The bell icon will be displayed with a red badge if there are new notifications for you. [Read more about notifications in OpenProject](../user-guide/notifications/). ## O ### OAuth -OAuth is an open authorization standard. It allows you to access certain information or resources on behalf of a user without accessing their username and password on each individual service. OpenProject acts as an OAuth provider, allowing you to optionally grant permissions to access your data to authorized third-party applications or services. [Read more about OAuth applications in OpenProject](https://www.openproject.org/docs/system-admin-guide/authentication/oauth-applications/). +OAuth is an open authorization standard. It allows you to access certain information or resources on behalf of a user without accessing their username and password on each individual service. OpenProject acts as an OAuth provider, allowing you to optionally grant permissions to access your data to authorized third-party applications or services. [Read more about OAuth applications in OpenProject](../system-admin-guide/authentication/oauth-applications/). ### OneDrive/SharePoint integration -OpenProject offers a OneDrive/SharePoint [integration](#integration) as an [Enterprise add-on](#enterprise-add-on). It must be setup by an administrator before members can use it. With this integration, users can link files and folders that are stored in OneDrive/SharePoint with work packages in OpenProject. They can also view, open and download files and folders linked to a work package. [Read more about OpenProject's OneDrive/SharePoint integration](https://www.openproject.org/docs/user-guide/file-management/one-drive-integration/). +OpenProject offers a OneDrive/SharePoint [integration](#integration) as an [Enterprise add-on](#enterprise-add-on). It must be setup by an administrator before members can use it. With this integration, users can link files and folders that are stored in OneDrive/SharePoint with work packages in OpenProject. They can also view, open and download files and folders linked to a work package. [Read more about OpenProject's OneDrive/SharePoint integration](../user-guide/file-management/one-drive-integration/). ### On-premises @@ -253,8 +253,8 @@ OpenProject on-premises is a self-hosted version of OpenProject. As opposed to t **More information on OpenProject on-premises** - [See our pricing side about your options for OpenProject](https://www.openproject.org/pricing/) - [Read a blog article comparing on-premises and cloud](https://www.openproject.org/blog/why-self-hosting-software/) -- [Read how to activate the Enterprise on-premises edition](https://www.openproject.org/docs/enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/) -- [Read how to start a trial for Enterprise on-premises](https://www.openproject.org/docs/enterprise-guide/enterprise-on-premises-guide/enterprise-on-premises-trial/) +- [Read how to activate the Enterprise on-premises edition](../enterprise-guide/enterprise-on-premises-guide/activate-enterprise-on-premises/) +- [Read how to start a trial for Enterprise on-premises](../enterprise-guide/enterprise-on-premises-guide/enterprise-on-premises-trial/) ## P @@ -269,8 +269,8 @@ In OpenProject, you can choose from several plugins or [integrations](#integrati Your activated plugins are listed together with your [modules](#module) in your instance under --> Administration --> Plugins. **More information on plugins in OpenProject** -- [See all available plugins and integrations for OpenProject](https://www.openproject.org/docs/system-admin-guide/integrations/) -- [Read how to create an OpenProject plugin](https://www.openproject.org/docs/development/create-openproject-plugin/) +- [See all available plugins and integrations for OpenProject](../system-admin-guide/integrations/) +- [Read how to create an OpenProject plugin](../development/create-openproject-plugin/) ### Primer design system @@ -278,7 +278,7 @@ OpenProject started adopting [Github's Primer Design System](https://primer.styl ### Project -In OpenProject, a [project](https://www.openproject.org/docs/user-guide/projects/) is defined as an individual or collaborative enterprise that is carefully planned to achieve a particular aim. Projects are the central organizational unit in OpenProject. Your projects can be available publicly or internally. OpenProject does not limit the number of projects, neither in the [Community edition](#community-edition) nor in the Enterprise cloud or in Enterprise [on-premises](#on-premises) edition. If you have more than one project in your instance, projects build a structure in OpenProject. You can have parent projects and sub-projects. For example, a project can represent +In OpenProject, a [project](../user-guide/projects/) is defined as an individual or collaborative enterprise that is carefully planned to achieve a particular aim. Projects are the central organizational unit in OpenProject. Your projects can be available publicly or internally. OpenProject does not limit the number of projects, neither in the [Community edition](#community-edition) nor in the Enterprise cloud or in Enterprise [on-premises](#on-premises) edition. If you have more than one project in your instance, projects build a structure in OpenProject. You can have parent projects and sub-projects. For example, a project can represent - an organizational unit of a company, - an overarching team working on one topic or @@ -286,7 +286,7 @@ In OpenProject, a [project](https://www.openproject.org/docs/user-guide/projects ### Project folder -Project folders help collaborating in the most efficient way. They can be used with OpenProject's [Nextcloud integration](#nextcloud-integration) or with OpenProject's [OneDrive/SharePoint integration](#onedrivesharepoint-integration). [Read more about project folders in OpenProject](https://www.openproject.org/docs/user-guide/projects/project-settings/file-storages/#project-folders). +Project folders help collaborating in the most efficient way. They can be used with OpenProject's [Nextcloud integration](#nextcloud-integration) or with OpenProject's [OneDrive/SharePoint integration](#onedrivesharepoint-integration). [Read more about project folders in OpenProject](../user-guide/projects/project-settings/file-storages/#project-folders). ### Project identifier @@ -298,23 +298,23 @@ The project navigation is the side navigation within a project. Entries in the p ### Project overview -In OpenProject, the project overview is defined as a single [dashboard](#dashboard) page where all important information of a selected project can be displayed. The idea is to provide a central repository of information for the whole project team. Project information is added to the dashboard as [widgets](#widget). Open the project overview by navigating to "Overview" in the project menu on the left. [Read more about the project overview in OpenProject](https://www.openproject.org/docs/user-guide/project-overview/#project-overview). +In OpenProject, the project overview is defined as a single [dashboard](#dashboard) page where all important information of a selected project can be displayed. The idea is to provide a central repository of information for the whole project team. Project information is added to the dashboard as [widgets](#widget). Open the project overview by navigating to "Overview" in the project menu on the left. [Read more about the project overview in OpenProject](../user-guide/project-overview/#project-overview). ### Project settings -Project settings means project-specific setting configuration. The project settings contain general settings (e.g. the name and [project identifier](#project-identifier)), configuration of [modules](#module), [work package categories](#work-package-categories) and [types](#work-package-types), [custom fields](#custom-field), [version](#versions) settings, [time tracking activities](#time-and-costs), required disk storage, [file storages](#file-storage) and [Backlogs](#backlogs) settings (if plugin is installed). [Read more about project settings in OpenProject](https://www.openproject.org/docs/user-guide/projects/#project-settings). +Project settings means project-specific setting configuration. The project settings contain general settings (e.g. the name and [project identifier](#project-identifier)), configuration of [modules](#module), [work package categories](#work-package-categories) and [types](#work-package-types), [custom fields](#custom-field), [version](#versions) settings, [time tracking activities](#time-and-costs), required disk storage, [file storages](#file-storage) and [Backlogs](#backlogs) settings (if plugin is installed). [Read more about project settings in OpenProject](../user-guide/projects/#project-settings). ### Project status -The project status in OpenProject is defined as an information for yourself and the team if the project is on track – to then being able to quickly act in case it is off track. [Read more about the project status in OpenProject](https://www.openproject.org/docs/user-guide/projects/project-status/). +The project status in OpenProject is defined as an information for yourself and the team if the project is on track – to then being able to quickly act in case it is off track. [Read more about the project status in OpenProject](../user-guide/projects/project-status/). ### Project template -A project template in OpenProject is defined as a dummy project to copy and adjust as often as you want. Project templates can be used for several projects that are similar in structure and [members](#member). Creating project templates can save time when creating new projects. [Read more about project templates in OpenProject in our user guide](https://www.openproject.org/docs/user-guide/projects/project-templates/), and see [this blog article to learn how to work with project templates](https://www.openproject.org/blog/project-templates/). +A project template in OpenProject is defined as a dummy project to copy and adjust as often as you want. Project templates can be used for several projects that are similar in structure and [members](#member). Creating project templates can save time when creating new projects. [Read more about project templates in OpenProject in our user guide](../user-guide/projects/project-templates/), and see [this blog article to learn how to work with project templates](https://www.openproject.org/blog/project-templates/). ### Public project -In OpenProject, projects can be private or public. Public means that the project is visible to any user, regardless of project [membership](#member). The visibility of a project can be changed in the project settings. [Read how to set a project to public in OpenProject](https://www.openproject.org/docs/user-guide/projects/#set-a-project-to-public). +In OpenProject, projects can be private or public. Public means that the project is visible to any user, regardless of project [membership](#member). The visibility of a project can be changed in the project settings. [Read how to set a project to public in OpenProject](../user-guide/projects/#set-a-project-to-public). ## Q @@ -326,7 +326,7 @@ The quick context menu in OpenProject opens when you open a [work package table] ## Repository -A repository is defined as a document or source code management system that allows users to manage files and folders via different version control systems (such as Subversion or Git). [Read more about Repository for source code control](https://www.openproject.org/docs/user-guide/repository/). +A repository is defined as a document or source code management system that allows users to manage files and folders via different version control systems (such as Subversion or Git). [Read more about Repository for source code control](../user-guide/repository/). ### Roadmap @@ -344,25 +344,25 @@ In product management, the RICE score indicates the level of prioritization of a ### Share work packages -OpenProject offers the possibility to share work packages with external groups or users that are not [members](#member) of the project. This feature is an [Enterprise add-on](#enterprise-add-on). Every user with whom a work package is shared must either already be a user of the instance or be newly created. The latter requires special rights. [Read more about OpenProject's feature to share work packages with project non-members](https://www.openproject.org/docs/user-guide/work-packages/share-work-packages/). +OpenProject offers the possibility to share work packages with external groups or users that are not [members](#member) of the project. This feature is an [Enterprise add-on](#enterprise-add-on). Every user with whom a work package is shared must either already be a user of the instance or be newly created. The latter requires special rights. [Read more about OpenProject's feature to share work packages with project non-members](../user-guide/work-packages/share-work-packages/). ### Story points -Story points is a term known in Scrum. They are defined as numbers assigned to a [work package](#work-package) used to estimate (relatively) the size of the work. In OpenProject, you can add story points to work packages. [Read how to work with story points in OpenProject](https://www.openproject.org/docs/user-guide/backlogs-scrum/work-with-backlogs/#working-with-story-points). +Story points is a term known in Scrum. They are defined as numbers assigned to a [work package](#work-package) used to estimate (relatively) the size of the work. In OpenProject, you can add story points to work packages. [Read how to work with story points in OpenProject](../user-guide/backlogs-scrum/work-with-backlogs/#working-with-story-points). ## T ### Team planner -The team planner in OpenProject is defined as a [module](#module) ([Enterprise add-on](#enterprise-add-on)) that helps you get a complete overview of what each [member](#member) of your team is working on in a weekly or bi-weekly view. You can use it to track the current progress of [work packages](#work-package) your team is working on, schedule new tasks, reschedule them or even reassign them to different members. [Read more about the OpenProject team planner](https://www.openproject.org/docs/user-guide/team-planner/). +The team planner in OpenProject is defined as a [module](#module) ([Enterprise add-on](#enterprise-add-on)) that helps you get a complete overview of what each [member](#member) of your team is working on in a weekly or bi-weekly view. You can use it to track the current progress of [work packages](#work-package) your team is working on, schedule new tasks, reschedule them or even reassign them to different members. [Read more about the OpenProject team planner](../user-guide/team-planner/). ### Time and costs -Time and costs in OpenProject is defined as a [module](#module) which allows users to log time on [work packages](#work-package), track costs and create time and cost reports. Once the time and costs module is activated by a project admin, time and unit cost can be logged via the action menu of a work package. Logged time and costs can be searched for, aggregated and reported using the Cost reports menu item. [Read more about the time and costs module in OpenProject](https://www.openproject.org/docs/user-guide/time-and-costs/). +Time and costs in OpenProject is defined as a [module](#module) which allows users to log time on [work packages](#work-package), track costs and create time and cost reports. Once the time and costs module is activated by a project admin, time and unit cost can be logged via the action menu of a work package. Logged time and costs can be searched for, aggregated and reported using the Cost reports menu item. [Read more about the time and costs module in OpenProject](../user-guide/time-and-costs/). ### Time tracking button -The time tracking button in OpenProject is a feature to track time spent on work packages in real time. [Read more about logging time via the time tracking button in OpenProject](https://www.openproject.org/docs/user-guide/time-and-costs/time-tracking/#log-time-via-the-time-tracking-button). +The time tracking button in OpenProject is a feature to track time spent on work packages in real time. [Read more about logging time via the time tracking button in OpenProject](../user-guide/time-and-costs/time-tracking/#log-time-via-the-time-tracking-button). ## U @@ -372,45 +372,45 @@ In OpenProject, a user is defined as a person who uses OpenProject, described by ### User guide -The OpenProject [user guide](https://www.openproject.org/docs/user-guide/) is an in-depth guide of all features in OpenProject. It offers users detailed information about how to use OpenProject's features, [modules](#module), [integrations](#integration) and more. For more technical information on how to configure your OpenProject instance, see our [system admin guide](https://www.openproject.org/docs/system-admin-guide/). +The OpenProject [user guide](../user-guide/) is an in-depth guide of all features in OpenProject. It offers users detailed information about how to use OpenProject's features, [modules](#module), [integrations](#integration) and more. For more technical information on how to configure your OpenProject instance, see our [system admin guide](../system-admin-guide/). ## V ### Versions -Versions in OpenProject are defined as an attribute for [work packages](#work-package) or in the [Backlogs](#backlogs) module. Versions will be displayed in the [Roadmap](#roadmap). In the [Enterprise edition](#enterprise-add-on), you can also create a version [board](#board) to get an overview of the progress of your versions. [Read more about how to manage versions in OpenProject](https://www.openproject.org/docs/user-guide/projects/project-settings/versions/). +Versions in OpenProject are defined as an attribute for [work packages](#work-package) or in the [Backlogs](#backlogs) module. Versions will be displayed in the [Roadmap](#roadmap). In the [Enterprise edition](#enterprise-add-on), you can also create a version [board](#board) to get an overview of the progress of your versions. [Read more about how to manage versions in OpenProject](../user-guide/projects/project-settings/versions/). ## W ### Widget -A widget in OpenProject is defined as a small and customizable element that provides relevant information at a glance. Use widgets on your [My Page](#my-page) dashboard or on the [project overview](#project-overview). [See all available project overview widgets](https://www.openproject.org/docs/user-guide/project-overview/#available-project-overview-widgets) and read [how to add a widget to the project overview](https://www.openproject.org/docs/user-guide/project-overview/#add-a-widget-to-the-project-overview). +A widget in OpenProject is defined as a small and customizable element that provides relevant information at a glance. Use widgets on your [My Page](#my-page) dashboard or on the [project overview](#project-overview). [See all available project overview widgets](../user-guide/project-overview/#available-project-overview-widgets) and read [how to add a widget to the project overview](../user-guide/project-overview/#add-a-widget-to-the-project-overview). ### Wiki -In OpenProject, a wiki is defined as a [module](#module) that allows to use wiki pages. In order to use the wiki module, it has to be activated in the [project settings](#project-settings) by a project admin. [Read more about wikis in OpenProject](https://www.openproject.org/docs/user-guide/wiki/). +In OpenProject, a wiki is defined as a [module](#module) that allows to use wiki pages. In order to use the wiki module, it has to be activated in the [project settings](#project-settings) by a project admin. [Read more about wikis in OpenProject](../user-guide/wiki/). ![A wiki module in OpenProject](glossary-openproject-wiki.png) ### Workflow -A workflow in OpenProject is defined as the allowed transitions between status for a [role](#role) and a type, i.e. which status changes can a certain role implement depending on the [work package type](#work-package-types). Workflows can be defined in the admin settings. For example, you might only want developers to be able to set the status "developed". [Read more about work package workflows in OpenProject](https://www.openproject.org/docs/system-admin-guide/manage-work-packages/work-package-workflows/#manage-work-package-workflows). +A workflow in OpenProject is defined as the allowed transitions between status for a [role](#role) and a type, i.e. which status changes can a certain role implement depending on the [work package type](#work-package-types). Workflows can be defined in the admin settings. For example, you might only want developers to be able to set the status "developed". [Read more about work package workflows in OpenProject](../system-admin-guide/manage-work-packages/work-package-workflows/#manage-work-package-workflows). ![glossary-openproject-sys-admin-edit-workflow](glossary-openproject-sys-admin-edit-workflow.png) ### Work package -In OpenProject, a [work package](https://www.openproject.org/docs/user-guide/work-packages/#overview) is defined as an item in a project. It is a subset of a project that can be assigned to users for execution, such as Tasks, Bugs, User Stories, Milestones, and more. Work packages have a [type](#work-package-types), an [ID](#work-package-id) and a subject and may have additional attributes, such as assignee, responsible, [story points](#story-points) or [version](#versions). Work packages are displayed in a project timeline (unless they are [filtered](#filters) out in the timeline configuration) - either as a milestone or as a [phase](#phase). In order to use the work packages, the work package module has to be activated in the [project settings](#project-settings) by a project admin. +In OpenProject, a [work package](../user-guide/work-packages/#overview) is defined as an item in a project. It is a subset of a project that can be assigned to users for execution, such as Tasks, Bugs, User Stories, Milestones, and more. Work packages have a [type](#work-package-types), an [ID](#work-package-id) and a subject and may have additional attributes, such as assignee, responsible, [story points](#story-points) or [version](#versions). Work packages are displayed in a project timeline (unless they are [filtered](#filters) out in the timeline configuration) - either as a milestone or as a [phase](#phase). In order to use the work packages, the work package module has to be activated in the [project settings](#project-settings) by a project admin. ![A work package in OpenProject](glossary-openproject-work-package.png) **More information on work packages in OpenProject** -- [Read our user guide on work packages](https://www.openproject.org/docs/user-guide/work-packages/) +- [Read our user guide on work packages](../user-guide/work-packages/) - [Read a blog article on how to work with work packages](https://www.openproject.org/blog/how-to-work-with-work-packages/) ### Work package categories -Work package categories are a functionality used to automatically assign a [member](#member) to a work package by specifying a category. [Read more about work package categories in OpenProject](https://www.openproject.org/docs/user-guide/projects/project-settings/work-package-categories/#manage-work-package-categories). +Work package categories are a functionality used to automatically assign a [member](#member) to a work package by specifying a category. [Read more about work package categories in OpenProject](../user-guide/projects/project-settings/work-package-categories/#manage-work-package-categories). ### Work package ID @@ -418,14 +418,14 @@ Work package ID is defined as a unique ascending number assigned to a newly crea ### Work package table -The work package table in OpenProject is defined as the overview of all work packages in a project, together with their attributes in the columns. A synonym for work package table is the term "work package list". [Read how to configure a work package table](https://www.openproject.org/docs/user-guide/work-packages/work-package-table-configuration/). +The work package table in OpenProject is defined as the overview of all work packages in a project, together with their attributes in the columns. A synonym for work package table is the term "work package list". [Read how to configure a work package table](../user-guide/work-packages/work-package-table-configuration/). ![A work package table in OpenProject](glossary-openproject-work-package-table.png) ### Work package types -Work package types are the different items a work package can represent. Each work package is associated to exactly one type. Examples for most used work package types are a Task, a Milestone, a [Phase](#phase) or a Bug. The work package types can be customized in the system administration. [Read more about work package types in OpenProject](https://www.openproject.org/docs/user-guide/projects/project-settings/work-package-types/#work-package-types). +Work package types are the different items a work package can represent. Each work package is associated to exactly one type. Examples for most used work package types are a Task, a Milestone, a [Phase](#phase) or a Bug. The work package types can be customized in the system administration. [Read more about work package types in OpenProject](../user-guide/projects/project-settings/work-package-types/#work-package-types). ### Work package view -A list of work packages is considered a view. The containing work packages in any view can be displayed a number of different ways. Examples for most used work package views are the [table view](#work-package-table), the full screen view or the split screen view. You can also display work packages in a card view and use them in a [board](#board) to use agile methods. [Read more about work package views in OpenProject](https://www.openproject.org/docs/user-guide/work-packages/work-package-views/#work-packages-views). +A list of work packages is considered a view. The containing work packages in any view can be displayed a number of different ways. Examples for most used work package views are the [table view](#work-package-table), the full screen view or the split screen view. You can also display work packages in a card view and use them in a [board](#board) to use agile methods. [Read more about work package views in OpenProject](../user-guide/work-packages/work-package-views/#work-packages-views). diff --git a/docs/release-notes/13-1-0/README.md b/docs/release-notes/13-1-0/README.md index afdb6da968e8..4256196658d2 100644 --- a/docs/release-notes/13-1-0/README.md +++ b/docs/release-notes/13-1-0/README.md @@ -70,7 +70,7 @@ Support for packaged installations on Centos7 and SUSE Enterprise Linux 12 have Users still required to run on these systems should consider upgrading to a supported version, or use our docker-based installation methods. -For more information, please see [#51333](https://community.openproject.org/projects/openproject/work_packages/51533/activity) and our [installation guides](https://www.openproject.org/docs/installation-and-operations/installation/). +For more information, please see [#51333](https://community.openproject.org/projects/openproject/work_packages/51533/activity) and our [installation guides](../../installation-and-operations/installation/). @@ -154,4 +154,4 @@ A big thanks to Community members for reporting bugs and helping us identifying Jeff Tseung, Richard Richter, Daniel Elkeles, Jörg Mollowitz, Christina Vechkanova, Sven Kunze, Jeff Li, Mario Haustein, Mario Zeppin. -A big thank you to every other dedicated user who has [reported bugs](https://www.openproject.org/docs/development/report-a-bug), supported the community by asking and answering questions in the [forum](https://community.openproject.org/projects/openproject/boards) and provided translations on [CrowdIn](https://crowdin.com/projects/opf). +A big thank you to every other dedicated user who has [reported bugs](../../development/report-a-bug), supported the community by asking and answering questions in the [forum](https://community.openproject.org/projects/openproject/boards) and provided translations on [CrowdIn](https://crowdin.com/projects/opf). diff --git a/docs/release-notes/13-2-0/README.md b/docs/release-notes/13-2-0/README.md index e9175494a301..9cb7974a1578 100644 --- a/docs/release-notes/13-2-0/README.md +++ b/docs/release-notes/13-2-0/README.md @@ -128,4 +128,4 @@ A very special thank you goes to our sponsors for features and improvements of t A big thanks to Community members for reporting bugs and helping us identifying and providing fixes, especially to Arun M, Patrick Massé and Richard Richter. -A big thank you to every other dedicated user who has [reported bugs](https://www.openproject.org/docs/development/report-a-bug), supported the community by asking and answering questions in the [forum](https://community.openproject.org/projects/openproject/boards) and provided translations on [CrowdIn](https://crowdin.com/projects/opf). +A big thank you to every other dedicated user who has [reported bugs](../../development/report-a-bug), supported the community by asking and answering questions in the [forum](https://community.openproject.org/projects/openproject/boards) and provided translations on [CrowdIn](https://crowdin.com/projects/opf). diff --git a/docs/release-notes/13-2-1/README.md b/docs/release-notes/13-2-1/README.md index 7c5bcb386386..5a92860ec790 100644 --- a/docs/release-notes/13-2-1/README.md +++ b/docs/release-notes/13-2-1/README.md @@ -10,7 +10,7 @@ release_date: 2024-01-31 Release date: 2024-01-31 -We released [OpenProject 13.2.1](https://community.openproject.com/versions/1991). +We released [OpenProject 13.2.1](https://community.openproject.org/versions/1991). The release contains several bug fixes and we recommend updating to the newest version. @@ -20,30 +20,30 @@ The release contains several bug fixes and we recommend updating to the newest v -- Bugfix: Underscore is treated as wildcard in search filter \[[#33574](https://community.openproject.com/wp/33574)\] -- Bugfix: Custom actions buttons look inactive until we hover over them and click \[[#45677](https://community.openproject.com/wp/45677)\] -- Bugfix: Remove custom field from all type configurations leaves them active in project, shown in bulk edit \[[#49619](https://community.openproject.com/wp/49619)\] -- Bugfix: Columns in task board not in sync for more than one task (column width not working) \[[#49788](https://community.openproject.com/wp/49788)\] -- Bugfix: IFC conversion fails (libhostfxr.so not found) (reintroduced bug) \[[#50172](https://community.openproject.com/wp/50172)\] -- Bugfix: Please refrain from overwriting logrotate settings with every single update \[[#50477](https://community.openproject.com/wp/50477)\] -- Bugfix: Work packages get lost when Teamplanner's time frame switch from Work week to 2 weeks \[[#50895](https://community.openproject.com/wp/50895)\] -- Bugfix: Can't pay for the Subscription after my trial period has ended \[[#51230](https://community.openproject.com/wp/51230)\] -- Bugfix: Checkboxes are not correclty displayed in the CkEditor \[[#51247](https://community.openproject.com/wp/51247)\] -- Bugfix: Error 500 when trying to view a budget with a running WP timer \[[#51460](https://community.openproject.com/wp/51460)\] -- Bugfix: /opt/openproject/lib/redmine/imap.rb:53:in `new': DEPRECATED: Call Net::IMAP.new with keyword options (StructuredWarnings::StandardWarning) \[[#51799](https://community.openproject.com/wp/51799)\] -- Bugfix: Renaming Work Package Views/ Boards : Edit Lock Issue \[[#51851](https://community.openproject.com/wp/51851)\] -- Bugfix: Date is not correct on the boards cards due to time zone difference \[[#51858](https://community.openproject.com/wp/51858)\] -- Bugfix: Enterprise icon is inconsistently aligned in the sidebar \[[#52097](https://community.openproject.com/wp/52097)\] -- Bugfix: Files tab shows bad error message on request timeout to remote storage \[[#52181](https://community.openproject.com/wp/52181)\] -- Bugfix: OIDC backchannel logout broken as retained session values are not available in the user_logged_in_hook \[[#52185](https://community.openproject.com/wp/52185)\] -- Bugfix: PDF export fails with "undefined method `sourcepos'" \[[#52193](https://community.openproject.com/wp/52193)\] -- Bugfix: Roadmap progress is overflowing \[[#52232](https://community.openproject.com/wp/52232)\] -- Bugfix: Work package "+ Create" button drop down only opening every second time \[[#52260](https://community.openproject.com/wp/52260)\] -- Bugfix: Creating Work Package - Mentions not working anymore \[[#52298](https://community.openproject.com/wp/52298)\] -- Bugfix: remaining hours cropped on task board view \[[#52362](https://community.openproject.com/wp/52362)\] -- Bugfix: Work packages: Create child fails if milestone is first selected type \[[#52373](https://community.openproject.com/wp/52373)\] -- Bugfix: Copying project fails when work package with children is copied \[[#52384](https://community.openproject.com/wp/52384)\] -- Bugfix: Dynamic meeting HTML titles missing \[[#52389](https://community.openproject.com/wp/52389)\] +- Bugfix: Underscore is treated as wildcard in search filter \[[#33574](https://community.openproject.org/wp/33574)\] +- Bugfix: Custom actions buttons look inactive until we hover over them and click \[[#45677](https://community.openproject.org/wp/45677)\] +- Bugfix: Remove custom field from all type configurations leaves them active in project, shown in bulk edit \[[#49619](https://community.openproject.org/wp/49619)\] +- Bugfix: Columns in task board not in sync for more than one task (column width not working) \[[#49788](https://community.openproject.org/wp/49788)\] +- Bugfix: IFC conversion fails (libhostfxr.so not found) (reintroduced bug) \[[#50172](https://community.openproject.org/wp/50172)\] +- Bugfix: Please refrain from overwriting logrotate settings with every single update \[[#50477](https://community.openproject.org/wp/50477)\] +- Bugfix: Work packages get lost when Teamplanner's time frame switch from Work week to 2 weeks \[[#50895](https://community.openproject.org/wp/50895)\] +- Bugfix: Can't pay for the Subscription after my trial period has ended \[[#51230](https://community.openproject.org/wp/51230)\] +- Bugfix: Checkboxes are not correclty displayed in the CkEditor \[[#51247](https://community.openproject.org/wp/51247)\] +- Bugfix: Error 500 when trying to view a budget with a running WP timer \[[#51460](https://community.openproject.org/wp/51460)\] +- Bugfix: /opt/openproject/lib/redmine/imap.rb:53:in `new': DEPRECATED: Call Net::IMAP.new with keyword options (StructuredWarnings::StandardWarning) \[[#51799](https://community.openproject.org/wp/51799)\] +- Bugfix: Renaming Work Package Views/ Boards : Edit Lock Issue \[[#51851](https://community.openproject.org/wp/51851)\] +- Bugfix: Date is not correct on the boards cards due to time zone difference \[[#51858](https://community.openproject.org/wp/51858)\] +- Bugfix: Enterprise icon is inconsistently aligned in the sidebar \[[#52097](https://community.openproject.org/wp/52097)\] +- Bugfix: Files tab shows bad error message on request timeout to remote storage \[[#52181](https://community.openproject.org/wp/52181)\] +- Bugfix: OIDC backchannel logout broken as retained session values are not available in the user_logged_in_hook \[[#52185](https://community.openproject.org/wp/52185)\] +- Bugfix: PDF export fails with "undefined method `sourcepos'" \[[#52193](https://community.openproject.org/wp/52193)\] +- Bugfix: Roadmap progress is overflowing \[[#52232](https://community.openproject.org/wp/52232)\] +- Bugfix: Work package "+ Create" button drop down only opening every second time \[[#52260](https://community.openproject.org/wp/52260)\] +- Bugfix: Creating Work Package - Mentions not working anymore \[[#52298](https://community.openproject.org/wp/52298)\] +- Bugfix: remaining hours cropped on task board view \[[#52362](https://community.openproject.org/wp/52362)\] +- Bugfix: Work packages: Create child fails if milestone is first selected type \[[#52373](https://community.openproject.org/wp/52373)\] +- Bugfix: Copying project fails when work package with children is copied \[[#52384](https://community.openproject.org/wp/52384)\] +- Bugfix: Dynamic meeting HTML titles missing \[[#52389](https://community.openproject.org/wp/52389)\] diff --git a/docs/security-and-privacy/processing-of-personal-data/README.md b/docs/security-and-privacy/processing-of-personal-data/README.md index a0a2df031d43..bb07ad53f805 100644 --- a/docs/security-and-privacy/processing-of-personal-data/README.md +++ b/docs/security-and-privacy/processing-of-personal-data/README.md @@ -630,7 +630,7 @@ flowchart LR * All data the user has permissions to. -> **Note**: Please see the [API documentation](https://www.openproject.org/docs/api) for further information about all API endpoints. +> **Note**: Please see the [API documentation](../../api/) for further information about all API endpoints. #### Security measure diff --git a/docs/use-cases/safe-framework/README.md b/docs/use-cases/safe-framework/README.md index 2478003c4bb5..f60b7a3c4064 100644 --- a/docs/use-cases/safe-framework/README.md +++ b/docs/use-cases/safe-framework/README.md @@ -254,6 +254,6 @@ At a Solution train level, it also allows you to view the work of members across ## Here for you -OpenProject is a powerful and highly-configurable tool that can be customized to fit the needs of your particular scaled agile implementation. Beyond the basics covered in this guide, OpenProject has many additional features and modules (such as [budgets](https://www.openproject.org/docs/user-guide/budgets/), [time and cost tracking](https://www.openproject.org/docs/user-guide/time-and-costs/), [wiki](https://www.openproject.org/docs/user-guide/wiki/), [meetings](https://www.openproject.org/docs/user-guide/meetings/) and [file storage integrations](https://www.openproject.org/docs/development/file-storage-integration/)) that further enable your agile teams to work efficiently and deliver value. +OpenProject is a powerful and highly-configurable tool that can be customized to fit the needs of your particular scaled agile implementation. Beyond the basics covered in this guide, OpenProject has many additional features and modules (such as [budgets](../..s/user-guide/budgets/), [time and cost tracking](../../user-guide/time-and-costs/), [wiki](../../user-guide/wiki/), [meetings](../../user-guide/meetings/) and [file storage integrations](../../development/file-storage-integration/)) that further enable your agile teams to work efficiently and deliver value. If you have questions about how to [use](../../getting-started/) and [configure](../../system-admin-guide/) OpenProject to work for you, please [get in touch](https://www.openproject.org/contact/) or [start a free trial](https://start.openproject.com/) to see for yourself. diff --git a/docs/user-guide/calendar/calendar-faq/README.md b/docs/user-guide/calendar/calendar-faq/README.md index 810623f8f43f..78f34108a746 100644 --- a/docs/user-guide/calendar/calendar-faq/README.md +++ b/docs/user-guide/calendar/calendar-faq/README.md @@ -24,7 +24,7 @@ You can also use the meeting module in OpenProject to organize meetings and invi ## Are holidays considered in the calendar? -Since the [12.3 release](https://www.openproject.org/docs/release-notes/12/12-3-0/) it is possible to specify working and non-working days on an overall instance-level and consequently define a global work week. The default value for non-working days is set to Saturday and Sunday, but can be adjusted to your specific needs. Read more [here](https://www.openproject.org/docs/user-guide/work-packages/set-change-dates/#working-days). +Since the [12.3 release](../../../release-notes/12/12-3-0/) it is possible to specify working and non-working days on an overall instance-level and consequently define a global work week. The default value for non-working days is set to Saturday and Sunday, but can be adjusted to your specific needs. Read more [here](../../../user-guide/work-packages/set-change-dates/#working-days). ## Is there a limit for the number of work packages displayed in the calendar? diff --git a/docs/user-guide/home/global-modules/README.md b/docs/user-guide/home/global-modules/README.md index f433e00e0246..f4b0b9195092 100644 --- a/docs/user-guide/home/global-modules/README.md +++ b/docs/user-guide/home/global-modules/README.md @@ -42,7 +42,7 @@ On the left you will have the following options: **Archived projects** will list all archived projects of which were a member or have the right to see. ->**Note:** You can also access the **Projects** global module by opening the [Select a project dropdown menu](https://www.openproject.org/docs/user-guide/projects/#projects-list ) and by clicking the **Projects list** button, or by clicking on the **Modules** button in the header next to the search bar and the selecting **Projects** in the menu that appears. +>**Note:** You can also access the **Projects** global module by opening the [Select a project dropdown menu](../../../user-guide/projects/#projects-list ) and by clicking the **Projects list** button, or by clicking on the **Modules** button in the header next to the search bar and the selecting **Projects** in the menu that appears. ## Activity diff --git a/docs/user-guide/meetings/dynamic-meetings/README.md b/docs/user-guide/meetings/dynamic-meetings/README.md index 81d98583f201..f2406418bad7 100644 --- a/docs/user-guide/meetings/dynamic-meetings/README.md +++ b/docs/user-guide/meetings/dynamic-meetings/README.md @@ -31,7 +31,7 @@ Introduced in OpenProject 13.1, dynamic meetings offer easier meeting management By selecting **Meetings** in the project menu on the left, you get an overview of all the meetings within a specific project sorted by date. By clicking on a meeting name you can view further details of the meeting. -To get an overview of the meetings across multiple projects, you can select **Meetings** in the [global modules menu](https://www.openproject.org/docs/user-guide/home/global-modules/). +To get an overview of the meetings across multiple projects, you can select **Meetings** in the [global modules menu](../../../user-guide/home/global-modules/). ![Select meetings module from openproject global modules ](openproject_userguide_meetings_module_select.png) diff --git a/docs/user-guide/search/README.md b/docs/user-guide/search/README.md index 0d097fdd24d7..9a64a5a274dd 100644 --- a/docs/user-guide/search/README.md +++ b/docs/user-guide/search/README.md @@ -40,6 +40,7 @@ The title and the description of a work package can also be found by [filtering Aside from full-text search, you can [search work packages based on their attached file name or even within the content of an attachment](../work-packages/work-package-table-configuration/#filter-for-attachment-file-name-and-content). ## Recently viewed work packages -Since [version 13.0](https://www.openproject.org/docs/release-notes/13-0-0/), clicking on the search bar will immediately show your most recently viewed work packages, before you even start typing. -![OpenProject recent work packages](openproject_search_recently_viewed.png) \ No newline at end of file +Since [version 13.0](../../release-notes/13-0-0/), clicking on the search bar will immediately show your most recently viewed work packages, before you even start typing. + +![OpenProject recent work packages](openproject_search_recently_viewed.png) diff --git a/docs/user-guide/time-and-costs/time-and-costs-faq/README.md b/docs/user-guide/time-and-costs/time-and-costs-faq/README.md index 3c821ac2344a..bcf1f2ff92c0 100644 --- a/docs/user-guide/time-and-costs/time-and-costs-faq/README.md +++ b/docs/user-guide/time-and-costs/time-and-costs-faq/README.md @@ -14,7 +14,7 @@ It is not possible to prevent time logging on phases or restrict it to certain w ## Can I log time for another user than myself? -Since [12.2 release](https://www.openproject.org/docs/release-notes/12/12-2-0/) it is possible to log time for a user other than yourself. This right has to be granted by an admin to users with certain roles. You can find out more [here](https://www.openproject.org/docs/user-guide/time-and-costs/time-tracking/#log-and-edit-time-for-other-users). +Since [12.2 release](../../../release-notes/12/12-2-0/) it is possible to log time for a user other than yourself. This right has to be granted by an admin to users with certain roles. You can find out more [here](../../../user-guide/time-and-costs/time-tracking/#log-and-edit-time-for-other-users). ## Is it possible to view all hours assigned to each member in total? If I work on various projects I'd like to know how many hours I accumulated for all tasks assigned to me.