Admin Page

General Description

The Admin Page provides a centralized interface for managing the Citeck system. It is divided into section groups, each corresponding to a separate microservice and containing links to journals, business processes, and developer tools.

Access to the Admin Page requires the ROLE_ADMIN role.

Configuring Admin Menu Sections

There are two artifact types for configuring admin menu sections. It is important to use the correct mechanism:

Artifact Type

Path

Status

ui/admin-sections-group

artifacts/ui/admin-sections-group/*.json

Deprecated — has no effect on the admin menu in current platform versions

app/artifact-patch

artifacts/app/artifact-patch/*.yml

Current — the correct mechanism for modifying the admin menu

Warning

Artifacts of type ui/admin-sections-group have no effect on the admin menu in current platform versions. To modify the admin menu structure, use app/artifact-patch targeting the ui/menu$admin-workspace-menu artifact. See the Configuration via artifact-patch (Current Mechanism) section below.

Configuration via artifact-patch (Current Mechanism)

Admin menu sections are added using artifact patches of type app/artifact-patch that modify the ui/menu$admin-workspace-menu artifact.

Patch Structure:

---
id: add-my-service-admin-menu-section
name:
  en: Add my service admin section
  ru: Добавить раздел администратора

target: 'ui/menu$admin-workspace-menu'
system: true
order: 500

type: json
config:
  operations:
    - op: add
      path: '$.subMenu.left.items'
      value:
        id: my-service-section
        label:
          en: My Service
          ru: Мой сервис
        hidden: false
        type: SECTION
        config: { }
        items:
          - id: my-service-journal
            label:
              en: My Journal
              ru: Мой журнал
            hidden: false
            type: JOURNAL
            config:
              recordRef: uiserv/journal@my-journal-id

Key Fields:

Field

Description

target

Always ui/menu$admin-workspace-menu for admin sidebar sections

system

Always true for system admin menu patches

order

Patch application order: 500 for active sections, 1000 for legacy/deprecated sections (displayed at the end of the sidebar)

path

$.subMenu.left.items — path for adding a section to the left sidebar

SECTION Menu Item Structure:

Field

Description

id

Unique section identifier

label

Localized section name (object with en and ru keys)

hidden

Visibility flag; false means the section is visible

type

SECTION for a journal group

config

Section configuration (usually an empty object { })

items

List of journal items (type JOURNAL) within the section

JOURNAL Menu Item Structure:

Field

Description

id

Unique item identifier

label

Localized name (object with en and ru keys)

hidden

Visibility flag; false means the item is visible

type

JOURNAL

config.recordRef

Reference to the journal in uiserv/journal@<journal-id> format

Pattern: Extracting Deprecated Sections into a Legacy Group

If a section group has accumulated journals that are no longer actively used, it is recommended to move them to a separate group with the -legacy suffix. This preserves access to legacy data without cluttering the main section.

Conventions:

  • Patch identifier: add-<service>-legacy-admin-menu-section.

  • Section name: { "en": "Legacy", "ru": "Устаревшее" } — a consistent name simplifies navigation.

  • order value: 1000 — the section appears at the end of the sidebar after all other sections.

  • Section identifier: <service>-legacy-section.

Legacy section patch example (add-integrations-legacy-admin-menu-section.yml):

---
id: add-integrations-legacy-admin-menu-section
name:
  en: Add legacy integrations admin section
  ru: Добавить раздел администратора устаревших интеграций

target: 'ui/menu$admin-workspace-menu'
system: true
order: 1000

type: json
config:
  operations:
    - op: add
      path: '$.subMenu.left.items'
      value:
        id: integrations-legacy-section
        label:
          en: Legacy
          ru: Устаревшее
        hidden: false
        type: SECTION
        config: { }
        items:
          - id: integrations-ecos-sync
            label:
              en: Synchronizations
              ru: Синхронизации
            hidden: false
            type: JOURNAL
            config:
              recordRef: uiserv/journal@ecos-sync
          - id: integrations-ecos-credentials
            label:
              en: Credentials
              ru: Учётные данные
            hidden: false
            type: JOURNAL
            config:
              recordRef: uiserv/journal@ecos-credentials

Current ecos-integrations Menu Structure

After splitting into active and deprecated journals, the integrations section in the admin menu looks as follows:

Patch File

order

Contents

add-notifications-admin-menu-section.yml

500

Активные журналы: Data Sources, Records sources, Camel DSL, Camel DSL Instance, Synchronization state, Synchronization log, External portals, Incoming webhooks

add-integrations-legacy-admin-menu-section.yml

1000

Устаревшие журналы: Synchronizations, Credentials, EDI boxes configuration, OSGI Bundles, File import configuration, Files for Import, File import items

Note

The add-notifications-admin-menu-section.yml file has a historical name (it was copied from the notifications service), but its internal identifier is add-integrations-admin-menu-section. Do not rename the file without coordination, but keep this discrepancy in mind when working with admin menu artifacts in the project.

Adding a New Journal to the Admin Menu

When adding a new journal to the admin menu:

  1. Add a new item to config.operations[0].value.items in the corresponding patch file.

  2. Use the identifier template: <service>-<journal-id>.

  3. Use the recordRef template: uiserv/journal@<journal-id>.

  4. Active journals → add-notifications-admin-menu-section.yml.

  5. Deprecated journals → add-integrations-legacy-admin-menu-section.yml.

Warning

Do not modify ui/admin-sections-group/*.json files to change the admin menu — these artifacts have no effect on the menu in current platform versions.

Deprecated Mechanism: ui/admin-sections-group

Deprecated since version 0.0: The following describes ui/admin-sections-group artifacts that have no effect on the admin menu in current platform versions. Documentation is preserved for reference.

Artifacts of type ui/admin-sections-group described section groups in the admin menu.

Standard Section Groups (Historical Reference):

Microservice

Group ID

Order

ecos-apps

application

0

ecos-process

process

10

ecos-model

model

20

ecos-uiserv

user-interface

30

ecos-notifications

notification

40

ecos-integrations

integration

50

ecos-integrations

integration-legacy

1000

Note

The integration-legacy group contains deprecated journals from the ecos-integrations microservice (ecos-sync, ecos-credentials, edi-box, ecos-osgi-bundles, file-import-config, file-import-task, file-import-task-item). The order: 1000 value is intentionally large so that the group appears at the very end of the sidebar, after all other sections. This is the recommended convention for legacy/deprecated section groups.

Section Types (Deprecated Reference)

Type

Parameters

Description

JOURNAL

journalId — journal identifier

Section with a journal

BPM

Section with business processes as tiles or a list

DEV_TOOLS

Developer tools page (dev-tools)

Section Group Model

AdminSectionsGroupDef {
    id: String       // идентификатор группы (должен быть неизменным)
    name: MLText     // локализованное имя группы
    order: Float     // порядок в меню (чем больше, тем ниже)
    sections: List<AdminSectionDef>  // список разделов
}

Section Model

AdminSectionDef {
    name: MLText     // имя раздела (необязательно для типа JOURNAL)
    type: String     // тип раздела: JOURNAL | BPM | DEV_TOOLS
    config: ObjectData  // конфигурация, зависящая от типа раздела
}

Configuration Example (Deprecated)

{
  "id": "user-interface",
  "name": {
    "en": "UI configuration",
    "ru": "Конфигурация UI"
  },
  "order": 30,
  "sections": [
    {
      "type": "JOURNAL",
      "config": {
        "journalId": "ecos-journals"
      }
    },
    {
      "type": "JOURNAL",
      "config": {
        "journalId": "ecos-forms"
      }
    }
  ]
}

Patch Example for ui/admin-sections-group (Deprecated, Non-functional)

id: add-some-journal-to-admin-page

name:
  ru: Добавить журнал "Some Journal" на страницу администратора
  en: Add journal "Some Journal" to admin page

target: ui/admin-sections-group$application

type: json
config:
  operations:
    - op: add
      path: '$.sections'
      value:
        type: JOURNAL
        config:
          journalId: some-journal-id

integration-legacy.json File Example (Deprecated)

{
  "id": "integration-legacy",
  "name": {
    "en": "Legacy",
    "ru": "Устаревшее"
  },
  "order": 1000,
  "sections": [
    { "type": "JOURNAL", "config": { "journalId": "ecos-sync" } },
    { "type": "JOURNAL", "config": { "journalId": "ecos-credentials" } },
    { "type": "JOURNAL", "config": { "journalId": "edi-box" } },
    { "type": "JOURNAL", "config": { "journalId": "ecos-osgi-bundles" } },
    { "type": "JOURNAL", "config": { "journalId": "file-import-config" } },
    { "type": "JOURNAL", "config": { "journalId": "file-import-task" } },
    { "type": "JOURNAL", "config": { "journalId": "file-import-task-item" } }
  ]
}

Note

When splitting a group, verify that the total journal count across all resulting files matches the original. This ensures no journals are lost or duplicated.