A modular collection of SAP BTP-inspired cloud platform services, built with D and vibe.d, following Clean Architecture and Hexagonal Architecture (Ports & Adapters) principles.
Part of the UIM Platform suite.
UIM Platform is a monorepo containing 15 independently deployable microservices and a shared service library. Each service mirrors the feature set of a corresponding SAP Business Technology Platform capability, re-implemented in the D programming language using the vibe.d HTTP framework and the uim-framework.
All services share a consistent layered architecture:
service/
├── source/
│ ├── app.d # Entry point & HTTP server bootstrap
│ ├── domain/ # Pure business logic (no external dependencies)
│ │ ├── types.d # Type aliases & enums
│ │ ├── entities/ # Domain entities
│ │ ├── ports/ # Repository interfaces (hexagonal boundary)
│ │ └── services/ # Stateless domain services
│ ├── application/ # Use case orchestration
│ │ ├── dto.d # Request/response DTOs
│ │ └── usecases/ # Application services
│ ├── infrastructure/ # Technical adapters
│ │ ├── config.d # Environment-based configuration
│ │ ├── container.d # Manual dependency injection wiring
│ │ └── persistence/ # In-memory repository implementations
│ └── presentation/ # HTTP driving adapters
│ └── http/
│ ├── json_utils.d # JSON helper functions
│ └── *_controller.d # Route controllers
└── dub.sdl
| Service | Description | Port |
|---|---|---|
| service | Shared library — Authorization and Trust Management, Job Scheduling, Malware Scanning, and Datasphere-like business data fabric | — |
| abap-enviroment | SAP BTP ABAP Environment — ABAP development, lifecycle management, and system administration | 8090 |
| analytics | SAP Analytics Cloud — embedded analytics, KPI management, and reporting | — |
| auditlog | SAP Audit Log — audit event capture, retention, and retrieval | — |
| cloud-foundry | SAP BTP Cloud Foundry Runtime — orgs, spaces, apps, services, buildpacks, routes, and domains | 8091 |
| connectivity | SAP BTP Connectivity — destination management, Cloud Connector tunnels, service channels, access control rules, and certificate stores | 8088 |
| data-attribute-recommendation | SAP Data Attribute Recommendation — ML-driven attribute suggestion with dataset, model, and inference management | 8092 |
| data-privacy | SAP Data Privacy Integration — data subject management, consent tracking, and data residency | 8089 |
| data-quality | SAP Data Quality Management — address cleansing, geocoding, and data enrichment | — |
| dms-application | SAP Document Management Service — repositories, folders, documents, versioning, sharing, and access control | 8094 |
| identity-authentication | SAP Cloud Identity Services — authentication policies, identity providers, and application registration | — |
| identity-directory | SAP Cloud Identity Directory — user, group, schema, and attribute management (SCIM-based) | 8082 |
| identity-provisioning | SAP Identity Provisioning — source/target system configuration, provisioning jobs, transformation rules, and audit logging | 8093 |
| integration-automation | SAP Cloud Integration Automation — integration scenarios, task workflows, system connections, and execution runs | 8090 |
| portal | SAP Build Work Zone — portal sites, pages, sections, tiles, catalogs, themes, roles, menus, and i18n | 8083 |
| workzone | SAP Work Zone — collaborative workspaces, integration cards, content management, feeds, notifications, tasks, and channels | 8084 |
- D Compiler (DMD or LDC2)
- DUB package manager
- OpenSSL development headers (for vibe.d TLS)
Build the entire platform (all subpackages):
dub buildBuild a single service:
cd connectivity
dub buildThe compiled binary is placed in the service's build/ directory.
Run tests for the entire platform:
dub testRun tests for a single service:
cd connectivity
dub testAfter building, start a service directly:
./connectivity/build/uim-connectivity-platform-serviceEach service reads its host and port from environment variables (falling back to
0.0.0.0 and the default port listed above):
export CONNECTIVITY_HOST=0.0.0.0
export CONNECTIVITY_PORT=8088
./connectivity/build/uim-connectivity-platform-serviceAll services expose a health endpoint at GET /api/v1/health and expect a
tenant identifier via the X-Tenant-Id HTTP header on every request.
- uim-framework ~>26.4.1 — Core utilities, OOP extensions, JSON helpers
- vibe.d 0.10.x — HTTP server framework
Copyright © 2018–2026, Ozan Nurettin Süel / UI Manufaktur