This guide walks administrators through deploying, configuring, and connecting a dedicated, self-hosted or private cloud OpenProject instance to Digital Index for enterprise BIM issue tracking and data quality management.
Digital Index utilizes a Zero-Token-Burden architecture:
sequenceDiagram
autonumber
actor User as Engineer / Information Manager
participant DI as Digital Index UI
participant Backend as Digital Index Backend Proxy
participant OP as Your BYO OpenProject Server
User->>DI: Triage / Assign / Push Issues
DI->>Backend: POST /api/bcf-bridge/[iTwinId]/topics
Note over Backend: - Injects backend Bot API Token securely (No client token handling) -
Backend->>OP: POST /api/v3/projects & POST /api/v3/work_packages
OP-->>Backend: Created Work Package #101
Backend-->>DI: Returns deep-link [ 🔗 #101 ↗ ]
User->>OP: Clicks [ 🔗 #101 ↗ ] (Opens OpenProject with JIT Member Access)
If you do not already have an active OpenProject instance, deploy via Docker Compose:
version: '3.8'
services:
openproject:
image: openproject/openproject:14-bim
container_name: openproject-cde
restart: always
ports:
- "8080:80"
environment:
OPENPROJECT_HOST__NAME: "opencde.yourdomain.com"
OPENPROJECT_HTTPS: "true"
OPENPROJECT_SECRET_KEY_BASE: "generate-a-secure-random-64-character-secret"
DATABASE_URL: "postgres://postgres:secure_db_pass@db:5432/openproject?pool=10"
OPENPROJECT_RAILS__CACHE__STORE: "redis"
OPENPROJECT_REDIS__CACHE__URL: "redis://cache:6379/0"
volumes:
- op_data:/var/openproject/assets
depends_on:
- db
- cache
db:
image: postgres:15-alpine
restart: always
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: secure_db_pass
POSTGRES_DB: openproject
volumes:
- pg_data:/var/lib/postgresql/data
cache:
image: redis:7-alpine
restart: always
volumes:
op_data:
pg_data:
To enable zero-token user management and automated project provisioning, create a backend bot user in OpenProject:
digital-index-bot@yourdomain.comDigital IndexBotdigital-index-bot@yourdomain.com (or generate the token directly as administrator).4a7b9c...).iTwin.| Field | Setting for BYO OpenProject |
|---|---|
| Preset / Tier | Select Custom / Bring Your Own (BYO) |
| Server URL | https://opencde.yourdomain.com (Must include https://) |
| BCF API Version | 2.1 |
| Default Project ID | 1 (or leave blank to auto-create ring-fenced iTwin projects) |
| Auth Scheme | apikey |
| Auth Token | Paste your bot's API Key from Step 2 |
| Push on Harvest | Optional (Enable to auto-publish new issues after each harvest run) |
A green Connected lozenge confirms that:
Digital Index enforces strict data confidentiality:
public: false):Testing iModels).engineer@contractor.com), OpenProject adds them as standard Member (not Administrator).[ 🔗 #40 ↗ ], Digital Index verifies their project membership in the background, ensuring they never receive a 404 error./issues page).[ 🔗 #issueId ↗ ] badge.| Symptom | Cause | Solution |
|---|---|---|
| Connection Failed: 401 Unauthorized | Invalid or expired bot API token | Regenerate the API token in OpenProject under My Account > Access tokens and re-paste into Section 7. |
| Error 404 on Deep Link | User is not a member of the private project | Click the link from an authenticated Digital Index session to trigger Just-In-Time (JIT) membership registration. |
| CORS Errors in Browser Console | Direct browser requests to external CDE | Handled automatically: Digital Index routes all client requests through the /api/bcf-bridge/[iTwinId]/topics backend proxy. |
| Work Packages Missing Fields | OpenProject statuses not mapped | Digital Index dynamically maps OPEN $\rightarrow$ New, IN_REVIEW $\rightarrow$ In progress, RESOLVED $\rightarrow$ Closed, IGNORED $\rightarrow$ Rejected. Ensure standard statuses exist in your OpenProject instance. |