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 |
|---|---|---|
|
|
Deprecated — has no effect on the admin menu in current platform versions |
|
|
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 |
|---|---|
|
Always |
|
Always |
|
Patch application order: |
|
|
SECTION Menu Item Structure:
Field |
Description |
|---|---|
|
Unique section identifier |
|
Localized section name (object with |
|
Visibility flag; |
|
|
|
Section configuration (usually an empty object |
|
List of journal items (type |
JOURNAL Menu Item Structure:
Field |
Description |
|---|---|
|
Unique item identifier |
|
Localized name (object with |
|
Visibility flag; |
|
|
|
Reference to the journal in |
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.ordervalue: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 |
|
Contents |
|---|---|---|
|
500 |
Активные журналы: Data Sources, Records sources, Camel DSL, Camel DSL Instance, Synchronization state, Synchronization log, External portals, Incoming webhooks |
|
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:
Add a new item to
config.operations[0].value.itemsin the corresponding patch file.Use the identifier template:
<service>-<journal-id>.Use the
recordReftemplate:uiserv/journal@<journal-id>.Active journals →
add-notifications-admin-menu-section.yml.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.