---
title: Document Manager
slug: release-notes-en/document-manager
docTags: 
createdAt: 2024-10-10T13:47:36.150Z
---

:::ExpandableHeading
## Release 2.0.1

| Release Information              | Considerations                                       |
| -------------------------------- | ---------------------------------------------------- |
| Application                      | document-manager                                     |
| Version Name                     | 2.0.1                                                |
| Publication Date                 | 10/12/2024                                           |
| Related Cards (Enter card title) | ...                                                  |
| Version Images (Central IT)      | nexus.centralit.io:9091/hyper-document-manager:2.0.1 |

### Fixes

- Removal of Keycloak dependency, as Agility users are now being used
- Temporary removal of email notifications

### Deployment Guidelines

- Deployment guidelines are available in the documentation.
- It's necessary to run the migrations.
:::

:::ExpandableHeading
## Release 2.0.0

| Release Information              | Considerations                                       |
| -------------------------------- | ---------------------------------------------------- |
| Application                      | document-manager                                     |
| Version Name                     | 2.0.0                                                |
| Publication Date                 | 09/02/2024                                           |
| Related Cards (Enter card title) | ...                                                  |
| Version Images (Central IT)      | nexus.centralit.io:9091/hyper-document-manager:2.0.0 |

### Improvements/New Features

- Framework change to Next.js
- Completion of initial scope, including document management, email sending, template creation, and auditing

### Deployment Guidelines

### Implementation

### Dependencies

- Creation of dedicated database and user: The information will be passed to the container via environment variables, so the name doesn't need to be fixed.
- Run migrations: Inside the container, run the command /usr/local/bin/auditum migrate.
- Ensure ports 8080 and 9090 are exposed and that the document manager container has access.

Auditum:



```javascript
<span id="LC1" class="line" lang="yaml"><span class="na">auditum</span><span class="pi">:</span></span>
<span id="LC2" class="line" lang="yaml">    <span class="na">image</span><span class="pi">:</span> <span class="s">auditumio/auditum:0.3.0</span></span>
<span id="LC3" class="line" lang="yaml">    <span class="na">environment</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml">      <span class="na">AUDITUM_store_type</span><span class="pi">:</span> <span class="s">postgres</span></span>
<span id="LC5" class="line" lang="yaml">      <span class="na">AUDITUM_store_postgres_host</span><span class="pi">:</span> <span class="s">postgres</span></span>
<span id="LC6" class="line" lang="yaml">      <span class="na">AUDITUM_store_postgres_port</span><span class="pi">:</span> <span class="m">5432</span></span>
<span id="LC7" class="line" lang="yaml">      <span class="na">AUDITUM_store_postgres_database</span><span class="pi">:</span> <span class="s">auditum</span>  <span class="c1">#(criar banco)</span></span>
<span id="LC8" class="line" lang="yaml">      <span class="na">AUDITUM_store_postgres_username</span><span class="pi">:</span> <span class="s2">"</span><span class="s">auditum"</span></span>
<span id="LC9" class="line" lang="yaml">      <span class="na">AUDITUM_store_postgres_password</span><span class="pi">:</span> <span class="s2">"</span><span class="s">auditum"</span></span>
<span id="LC10" class="line" lang="yaml">      <span class="na">AUDITUM_store_postgres_sslmode</span><span class="pi">:</span> <span class="s">disable</span></span>
<span id="LC11" class="line" lang="yaml">      <span class="na">AUDITUM_store_postgres_logQueries</span><span class="pi">:</span> <span class="no">true</span>  <span class="c1">#(opcional)</span></span>
<span id="LC12" class="line" lang="yaml">    <span class="na">entrypoint</span><span class="pi">:</span> <span class="s">/bin/sh</span></span>
<span id="LC13" class="line" lang="yaml">    <span class="na">command</span><span class="pi">:</span> <span class="s">-c "/usr/local/bin/auditum migrate && /usr/local/bin/auditum serve"</span> <span class="c1">#(roda as migrations)</span></span>
<span id="LC14" class="line" lang="yaml">    <span class="na">depends_on</span><span class="pi">:</span></span>
<span id="LC15" class="line" lang="yaml">      <span class="pi">-</span> <span class="s">postgres</span></span>
<span id="LC16" class="line" lang="yaml">    <span class="na">ports</span><span class="pi">:</span></span>
<span id="LC17" class="line" lang="yaml">      <span class="pi">-</span> <span class="s">8000:8080</span></span>
<span id="LC18" class="line" lang="yaml">      <span class="pi">-</span> <span class="s">9000:9090</span></span>
```

### Deployment guidelines

Keycloak

### Keycloak Configuration

It's necessary to create a group with a role in Keycloak and populate the environment variables `ROLE_DM_USER` and `GROUP_DM_USERS` for user system access. If the variables aren't provided, the default values will be:
`ROLE_DM_USER` and `document_manager_users`.

**Migrations**
To run migrations, execute the following command inside the container:
`npm run db:migrate`

**Kubernetes**

configmap.template.yml

```javascript
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">ConfigMap</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml">  <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml">  <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml">    <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC7" class="line" lang="yaml">    <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC8" class="line" lang="yaml">    <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC9" class="line" lang="yaml">    <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC10" class="line" lang="yaml">    <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC11" class="line" lang="yaml"><span class="na">data</span><span class="pi">:</span></span>
<span id="LC12" class="line" lang="yaml">  <span class="na">AUDIT_SERVICE_URL</span><span class="pi">:</span> <span class="s">auditum.frontmanager-dev-eveo:9000</span></span>
<span id="LC13" class="line" lang="yaml">  <span class="na">DATABASE_URL</span><span class="pi">:</span> <span class="s">postgresql://postgres:postgres@host.docker.internal:5432/document_manager</span></span>
<span id="LC14" class="line" lang="yaml">  <span class="na">EMAIL_SERVICE_URL</span><span class="pi">:</span> <span class="s">http://lowcode.frontmanager-dev-eveo/integrations/disparo_de_email/faas</span></span>
<span id="LC15" class="line" lang="yaml">  <span class="na">KANBAN_API_URL</span><span class="pi">:</span> <span class="s">http://hyper-kanban-api.frontmanager-dev-eveo/api</span></span>
<span id="LC16" class="line" lang="yaml">  <span class="na">KEYCLOAK_BASE_URL</span><span class="pi">:</span> <span class="s">http://keycloak-eveo.keycloak/auth</span></span>
<span id="LC17" class="line" lang="yaml">  <span class="na">KEYCLOAK_CLIENT_ID</span><span class="pi">:</span> <span class="s">admin-cli</span></span>
<span id="LC18" class="line" lang="yaml">  <span class="na">KEYCLOAK_PASSWORD</span><span class="pi">:</span> <span class="s">admin</span></span>
<span id="LC19" class="line" lang="yaml">  <span class="na">KEYCLOAK_USERNAME</span><span class="pi">:</span> <span class="s">admin</span></span>
<span id="LC20" class="line" lang="yaml">  <span class="na">NEXT_PUBLIC_BASE_NAME</span><span class="pi">:</span> <span class="s">/${K8S_APP_NAME}</span></span>
<span id="LC21" class="line" lang="yaml">  <span class="na">ROLE_DM_USER</span><span class="pi">:</span> <span class="s">ROLE_DM_USER</span></span>
<span id="LC22" class="line" lang="yaml">  <span class="na">GROUP_DM_USERS</span><span class="pi">:</span> <span class="s">document_manager_users</span></span>
<span id="LC23" class="line" lang="yaml">  <span class="na">THEME</span><span class="pi">:</span> <span class="s1">'</span><span class="s">{</span><span class="nv"> </span><span class="s">"colorPrimary":</span><span class="nv"> </span><span class="s">"#0f7bc2"</span><span class="nv"> </span><span class="s">}'</span></span>
<span id="LC24" class="line" lang="yaml"></span>
<span id="LC25" class="line" lang="yaml">  <span class="na">AGILITY_SERVICE_NAME</span><span class="pi">:</span> <span class="s">kanban (Campo Opcional, caso não preenchido o default é "kanban")</span></span>
```

deployment.template.yml

```javascript
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">apps/v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">Deployment</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml">  <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml">  <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml">    <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC7" class="line" lang="yaml">    <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC8" class="line" lang="yaml">    <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC9" class="line" lang="yaml">    <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC10" class="line" lang="yaml">    <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC11" class="line" lang="yaml"><span class="na">spec</span><span class="pi">:</span></span>
<span id="LC12" class="line" lang="yaml">  <span class="na">selector</span><span class="pi">:</span></span>
<span id="LC13" class="line" lang="yaml">    <span class="na">matchLabels</span><span class="pi">:</span></span>
<span id="LC14" class="line" lang="yaml">      <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC15" class="line" lang="yaml">  <span class="na">template</span><span class="pi">:</span></span>
<span id="LC16" class="line" lang="yaml">    <span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC17" class="line" lang="yaml">      <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC18" class="line" lang="yaml">        <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC19" class="line" lang="yaml">        <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC20" class="line" lang="yaml">        <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC21" class="line" lang="yaml">        <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC22" class="line" lang="yaml">        <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC23" class="line" lang="yaml">    <span class="na">spec</span><span class="pi">:</span></span>
<span id="LC24" class="line" lang="yaml">      <span class="na">containers</span><span class="pi">:</span></span>
<span id="LC25" class="line" lang="yaml">        <span class="pi">-</span> <span class="na">envFrom</span><span class="pi">:</span></span>
<span id="LC26" class="line" lang="yaml">            <span class="pi">-</span> <span class="na">configMapRef</span><span class="pi">:</span></span>
<span id="LC27" class="line" lang="yaml">                <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC28" class="line" lang="yaml">          <span class="na">image</span><span class="pi">:</span> <span class="s">${K8S_APP_IMAGE}</span></span>
<span id="LC29" class="line" lang="yaml">          <span class="na">imagePullPolicy</span><span class="pi">:</span> <span class="s">IfNotPresent</span></span>
<span id="LC30" class="line" lang="yaml">          <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC31" class="line" lang="yaml">          <span class="na">ports</span><span class="pi">:</span></span>
<span id="LC32" class="line" lang="yaml">            <span class="pi">-</span> <span class="na">containerPort</span><span class="pi">:</span> <span class="m">8080</span></span>
<span id="LC33" class="line" lang="yaml">              <span class="na">protocol</span><span class="pi">:</span> <span class="s">TCP</span></span>
<span id="LC34" class="line" lang="yaml">      <span class="na">imagePullSecrets</span><span class="pi">:</span></span>
<span id="LC35" class="line" lang="yaml">        <span class="pi">-</span> <span class="na">name</span><span class="pi">:</span> <span class="s">4biz-automacao-cdi</span></span>
```

ingress-kong.template.yml

```javascript
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">networking.k8s.io/v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">Ingress</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml">  <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml">  <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml">    <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC7" class="line" lang="yaml">    <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC8" class="line" lang="yaml">    <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC9" class="line" lang="yaml">    <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC10" class="line" lang="yaml">    <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC11" class="line" lang="yaml"><span class="na">spec</span><span class="pi">:</span></span>
<span id="LC12" class="line" lang="yaml">  <span class="na">ingressClassName</span><span class="pi">:</span> <span class="s">nginx</span></span>
<span id="LC13" class="line" lang="yaml">  <span class="na">tls</span><span class="pi">:</span></span>
<span id="LC14" class="line" lang="yaml">    <span class="pi">-</span> <span class="na">hosts</span><span class="pi">:</span></span>
<span id="LC15" class="line" lang="yaml">        <span class="pi">-</span> <span class="s2">"</span><span class="s">*.cloud4biz.com"</span></span>
<span id="LC16" class="line" lang="yaml">      <span class="na">secretName</span><span class="pi">:</span> <span class="s">cloud4biz-tls</span></span>
<span id="LC17" class="line" lang="yaml">  <span class="na">rules</span><span class="pi">:</span></span>
<span id="LC18" class="line" lang="yaml">    <span class="pi">-</span> <span class="na">host</span><span class="pi">:</span> <span class="s2">"</span><span class="s">*.cloud4biz.com"</span></span>
<span id="LC19" class="line" lang="yaml">      <span class="na">http</span><span class="pi">:</span></span>
<span id="LC20" class="line" lang="yaml">        <span class="na">paths</span><span class="pi">:</span></span>
<span id="LC21" class="line" lang="yaml">          <span class="pi">-</span> <span class="na">path</span><span class="pi">:</span> <span class="s">/${K8S_APP_NAME}</span></span>
<span id="LC22" class="line" lang="yaml">            <span class="na">pathType</span><span class="pi">:</span> <span class="s">ImplementationSpecific</span></span>
<span id="LC23" class="line" lang="yaml">            <span class="na">backend</span><span class="pi">:</span></span>
<span id="LC24" class="line" lang="yaml">              <span class="na">service</span><span class="pi">:</span></span>
<span id="LC25" class="line" lang="yaml">                <span class="na">name</span><span class="pi">:</span> <span class="s">kong-eveo-kong-proxy</span></span>
<span id="LC26" class="line" lang="yaml">                <span class="na">port</span><span class="pi">:</span></span>
<span id="LC27" class="line" lang="yaml">                  <span class="na">number</span><span class="pi">:</span> <span class="s">80</span></span>
```

ingress.template.yml

```javascript
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">networking.k8s.io/v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">Ingress</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml">  <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml">  <span class="na">annotations</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml">    <span class="na">konghq.com/plugins</span><span class="pi">:</span> <span class="s">jwt</span></span>
<span id="LC7" class="line" lang="yaml">  <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC8" class="line" lang="yaml">    <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC9" class="line" lang="yaml">    <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC10" class="line" lang="yaml">    <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC11" class="line" lang="yaml">    <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC12" class="line" lang="yaml">    <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC13" class="line" lang="yaml"><span class="na">spec</span><span class="pi">:</span></span>
<span id="LC14" class="line" lang="yaml">  <span class="na">ingressClassName</span><span class="pi">:</span> <span class="s">kong</span></span>
<span id="LC15" class="line" lang="yaml">  <span class="na">tls</span><span class="pi">:</span></span>
<span id="LC16" class="line" lang="yaml">    <span class="pi">-</span> <span class="na">hosts</span><span class="pi">:</span></span>
<span id="LC17" class="line" lang="yaml">        <span class="pi">-</span> <span class="s2">"</span><span class="s">*.cloud4biz.com"</span></span>
<span id="LC18" class="line" lang="yaml">      <span class="na">secretName</span><span class="pi">:</span> <span class="s">cloud4biz-tls</span></span>
<span id="LC19" class="line" lang="yaml">  <span class="na">rules</span><span class="pi">:</span></span>
<span id="LC20" class="line" lang="yaml">    <span class="pi">-</span> <span class="na">host</span><span class="pi">:</span> <span class="s2">"</span><span class="s">*.cloud4biz.com"</span></span>
<span id="LC21" class="line" lang="yaml">      <span class="na">http</span><span class="pi">:</span></span>
<span id="LC22" class="line" lang="yaml">        <span class="na">paths</span><span class="pi">:</span></span>
<span id="LC23" class="line" lang="yaml">          <span class="pi">-</span> <span class="na">path</span><span class="pi">:</span> <span class="s">/${K8S_APP_NAME}</span></span>
<span id="LC24" class="line" lang="yaml">            <span class="na">pathType</span><span class="pi">:</span> <span class="s">ImplementationSpecific</span></span>
<span id="LC25" class="line" lang="yaml">            <span class="na">backend</span><span class="pi">:</span></span>
<span id="LC26" class="line" lang="yaml">              <span class="na">service</span><span class="pi">:</span></span>
<span id="LC27" class="line" lang="yaml">                <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC28" class="line" lang="yaml">                <span class="na">port</span><span class="pi">:</span></span>
<span id="LC29" class="line" lang="yaml">                  <span class="na">number</span><span class="pi">:</span> <span class="s">80</span></span>
```

service.template.yml

```javascript
<span id="LC1" class="line" lang="yaml"><span class="na">apiVersion</span><span class="pi">:</span> <span class="s">v1</span></span>
<span id="LC2" class="line" lang="yaml"><span class="na">kind</span><span class="pi">:</span> <span class="s">Service</span></span>
<span id="LC3" class="line" lang="yaml"><span class="na">metadata</span><span class="pi">:</span></span>
<span id="LC4" class="line" lang="yaml">  <span class="na">name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC5" class="line" lang="yaml">  <span class="na">labels</span><span class="pi">:</span></span>
<span id="LC6" class="line" lang="yaml">    <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC7" class="line" lang="yaml">    <span class="na">app.kubernetes.io/name</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
<span id="LC8" class="line" lang="yaml">    <span class="na">app.kubernetes.io/version</span><span class="pi">:</span> <span class="s">${K8S_APP_VERSION}</span></span>
<span id="LC9" class="line" lang="yaml">    <span class="na">app.kubernetes.io/component</span><span class="pi">:</span> <span class="s">frontend</span></span>
<span id="LC10" class="line" lang="yaml">    <span class="na">app.kubernetes.io/part-of</span><span class="pi">:</span> <span class="s">frontmanager</span></span>
<span id="LC11" class="line" lang="yaml"><span class="na">spec</span><span class="pi">:</span></span>
<span id="LC12" class="line" lang="yaml">  <span class="na">ports</span><span class="pi">:</span></span>
<span id="LC13" class="line" lang="yaml">    <span class="pi">-</span> <span class="na">port</span><span class="pi">:</span> <span class="m">80</span></span>
<span id="LC14" class="line" lang="yaml">      <span class="na">protocol</span><span class="pi">:</span> <span class="s">TCP</span></span>
<span id="LC15" class="line" lang="yaml">      <span class="na">targetPort</span><span class="pi">:</span> <span class="m">8080</span></span>
<span id="LC16" class="line" lang="yaml">  <span class="na">selector</span><span class="pi">:</span></span>
<span id="LC17" class="line" lang="yaml">    <span class="na">app</span><span class="pi">:</span> <span class="s">${K8S_APP_NAME}</span></span>
```


:::

