diff --git a/Dockerfile b/Dockerfile
index 407799f7f009a118da826e6b25c60b447f2443db..4141c396608fee4b74346ac2e62f4e83b7750d49 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -8,16 +8,6 @@ WORKDIR ${APP_HOME}
 
 RUN corepack enable
 
-# # libindy build
-# FROM node:20-bullseye AS ssi-base
-
-# RUN apt-get update \
-#  && apt-get install -y --no-install-recommends libsodium-dev libzmq3-dev
-# RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain '1.58.0'
-# RUN git clone https://github.com/hyperledger/indy-sdk
-# RUN cd indy-sdk/libindy && ~/.cargo/bin/cargo build --release
-# RUN cd indy-sdk/libindy && mv target/release/libindy.so /usr/lib/libindy.so
-
 # Build
 FROM base AS build
 
@@ -37,15 +27,6 @@ RUN pnpm --filter ${SERVICE} build:production
 RUN pnpm --filter ${SERVICE} --prod deploy build
 RUN pnpm --filter shared --prod deploy shared
 
-# This is a way of keeping the generated prisma client in the build folder
-RUN if [ -d ./apps/${SERVICE}/node_modules/\@prisma/client ]; then \
-        GLOBAL_PRISMA_SETUP=`realpath ./apps/${SERVICE}/node_modules/\@prisma/client` \
-        GLOBAL_PRISMA_CLIENT=`readlink -f ${GLOBAL_PRISMA_SETUP}/../../.prisma` \
-        BUILD_PRISMA_SETUP=`realpath ./build/node_modules/\@prisma/client` \
-        BUILD_PRISMA_CLIENT=`readlink -f ${BUILD_PRISMA_SETUP}/../..` \
-        sh -c 'cp -r $GLOBAL_PRISMA_CLIENT $BUILD_PRISMA_CLIENT'; \
-    fi
-
 # Final
 FROM node:20 AS final
 
@@ -69,4 +50,4 @@ RUN node -e "\
     fs.writeFileSync('./package.json', JSON.stringify({ name, version, type }, null, 2));\
 "
 
-# USER node
+USER node
diff --git a/README.md b/README.md
index 91735ec6ceb0bd7113538711791a4d9e87a3ba1b..c23a622fff857d530017fb183e8328aadc289163 100644
--- a/README.md
+++ b/README.md
@@ -1,25 +1,53 @@
-# ocm-engine version 1
+# Organizational Credential Manager (v2)
 
-#### Dependencies
+## Overview
 
-Node 12
-Python 2.5.0 >= <3.0.0
-pnpm
+OCM (Organizational Credential Manager) is a Node.js-based microservice system designed to manage organizational credentials.
 
-### Setup local
+## Prerequisites
 
-1. pnpm install
-2. pnpm prisma:generate
-3. pnpm /app/:build
+* Node.js (version 20 or later)
+* pnpm
+* Docker and Docker Compose for local development
 
-app options: attestation, connection, principal, ssi
+## Installation
 
-### Docker compose
+1. Clone the repository:
 
-1. Go to compose dir
+  ```bash
+  git clone https://gitlab.eclipse.org/eclipse/xfsc/ocm/ocm-engine.git
+  ```
 
-2. docker-compose up
+2. Navigate to the repository directory:
+
+  ```bash
+  cd ocm-engine
+  ```
+
+3. Install dependencies:
+
+  ```bash
+  pnpm i
+  ```
+
+4. Start the services locally:
+
+  ```bash
+  pnpm -F ssi-abstraction start
+  pnpm -F connection-manager start
+  ...
+  ```
+
+5. Or start the whole stack in Docker Compose:
+
+  ```bash
+  docker compose up -d
+  ```
 
 ## Example Flows (OCM Usage)
 
 Please refer to [OCM-flow-overview](documentation/ocm-flow-overview.md)
+
+## License
+
+This project is licensed under the [Apache 2.0 License](LICENSE)
diff --git a/apps/connection-manager/src/connections/connections.service.ts b/apps/connection-manager/src/connections/connections.service.ts
index 4d969e794d2822d8c2e8bc288191ec5b654a763d..a5647cacab3606c881151ef2e0e10b39be552102 100644
--- a/apps/connection-manager/src/connections/connections.service.ts
+++ b/apps/connection-manager/src/connections/connections.service.ts
@@ -27,10 +27,10 @@ export class ConnectionsService {
     tenantId: string,
   ): Observable<EventDidcommConnectionsGetAll['data']> {
     return this.natsClient
-      .send<EventDidcommConnectionsGetAll, EventDidcommConnectionsGetAllInput>(
-        EventDidcommConnectionsGetAll.token,
-        { tenantId },
-      )
+      .send<
+        EventDidcommConnectionsGetAll,
+        EventDidcommConnectionsGetAllInput
+      >(EventDidcommConnectionsGetAll.token, { tenantId })
       .pipe(map((result) => result.data));
   }
 
@@ -62,10 +62,10 @@ export class ConnectionsService {
     idOrDid: string,
   ): Observable<EventDidcommConnectionsBlock['data']> {
     return this.natsClient
-      .send<EventDidcommConnectionsBlock, EventDidcommConnectionsBlockInput>(
-        EventDidcommConnectionsBlock.token,
-        { tenantId, idOrDid },
-      )
+      .send<
+        EventDidcommConnectionsBlock,
+        EventDidcommConnectionsBlockInput
+      >(EventDidcommConnectionsBlock.token, { tenantId, idOrDid })
       .pipe(map((result) => result.data));
   }
 }
diff --git a/apps/schema-manager/src/schemas/schemas.service.ts b/apps/schema-manager/src/schemas/schemas.service.ts
index b6fd0cbd9f85ee084e437ef80f845012ac125dc2..eefa949877eb028731de4779d62249f264b144bd 100644
--- a/apps/schema-manager/src/schemas/schemas.service.ts
+++ b/apps/schema-manager/src/schemas/schemas.service.ts
@@ -25,10 +25,10 @@ export class SchemasService {
     tenantId: string,
   ): Observable<EventAnonCredsSchemasGetAll['data']> {
     return this.natsClient
-      .send<EventAnonCredsSchemasGetAll, EventAnonCredsSchemasGetAllInput>(
-        EventAnonCredsSchemasGetAll.token,
-        { tenantId },
-      )
+      .send<
+        EventAnonCredsSchemasGetAll,
+        EventAnonCredsSchemasGetAllInput
+      >(EventAnonCredsSchemasGetAll.token, { tenantId })
       .pipe(map((result) => result.data));
   }
 
@@ -37,10 +37,10 @@ export class SchemasService {
     schemaId: EventAnonCredsSchemasGetByIdInput['schemaId'],
   ): Observable<EventAnonCredsSchemasGetById['data']> {
     return this.natsClient
-      .send<EventAnonCredsSchemasGetById, EventAnonCredsSchemasGetByIdInput>(
-        EventAnonCredsSchemasGetById.token,
-        { tenantId, schemaId },
-      )
+      .send<
+        EventAnonCredsSchemasGetById,
+        EventAnonCredsSchemasGetByIdInput
+      >(EventAnonCredsSchemasGetById.token, { tenantId, schemaId })
       .pipe(map((result) => result.data));
   }
 
@@ -49,10 +49,10 @@ export class SchemasService {
     payload: Omit<EventAnonCredsSchemasRegisterInput, 'tenantId'>,
   ): Observable<EventAnonCredsSchemasRegister['data']> {
     return this.natsClient
-      .send<EventAnonCredsSchemasRegister, EventAnonCredsSchemasRegisterInput>(
-        EventAnonCredsSchemasRegister.token,
-        { ...payload, tenantId },
-      )
+      .send<
+        EventAnonCredsSchemasRegister,
+        EventAnonCredsSchemasRegisterInput
+      >(EventAnonCredsSchemasRegister.token, { ...payload, tenantId })
       .pipe(map((result) => result.data));
   }
 }
diff --git a/compose/docker-compose.yml b/docker-compose.yml
similarity index 52%
rename from compose/docker-compose.yml
rename to docker-compose.yml
index 15419c89121cbe4b31bedf86a4d3c59a4342f5cd..e3025bbd7a8744f72cd23d19068b0b510fa66777 100644
--- a/compose/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,104 +1,97 @@
 version: '3.9'
 
 services:
-  connection-manager:
-    build:
-      context: ..
-      args:
-        - SERVICE=connection-manager
-    init: true
+  nats:
+    image: nats
     ports:
-      - '3003:3003'
-    depends_on:
-      - db
-      - nats
-      - ssi
+      - '4222:4222' #Nats server port
+      - '8222:8222' #Nats server Monitoring port
 
-  credential-manager:
+  ssi:
     build:
-      context: ..
       args:
-        - SERVICE=credential-manager
+        - SERVICE=ssi-abstraction
     init: true
     ports:
-      - '3011:3011'
+      - '3009:3009'
+      - '3010:3010'
+      - '4000:4000'
+    environment:
+      NATS_URL: nats://nats:4222
+      PORT: 3009
+      AGENT_NAME: ssi-abstraction-agent
+      AGENT_WALLET_ID: ssi-wallet-id
+      AGENT_WALLET_KEY: ssi-wallet-key
+      AGENT_HOST: http://ssi
+      AGENT_PUBLIC_DID_SEED: 6b8b882e2618fa5d45ee7229ca000000
+      AGENT_AUTO_ACCEPT_CONNECTION: true
+      AGENT_AUTO_ACCEPT_CREDENTIAL: contentApproved
+      AGENT_LEDGER_ID: BCOVRIN_TEST
     depends_on:
-      - db
       - nats
-      - ssi
 
   schema-manager:
     build:
-      context: ..
       args:
         - SERVICE=schema-manager
     init: true
+    environment:
+      - HTTP_PORT=3000
+      - NATS_URL=nats://nats:4222
+      - NATS_MONITORING_URL=http://nats:8222
+      - SSI_AGENT_URL=http://ssi:3009
     ports:
-      - '3013:3013'
+      - '4001:3000'
     depends_on:
-      - db
       - nats
       - ssi
 
-  proof-manager:
+  connection-manager:
     build:
-      context: ..
       args:
-        - SERVICE=proof-manager
+        - SERVICE=connection-manager
     init: true
+    environment:
+      - HTTP_PORT=3000
+      - NATS_URL=nats://nats:4222
+      - NATS_MONITORING_URL=http://nats:8222
+      - SSI_AGENT_URL=http://ssi:3009
     ports:
-      - '3007:3007'
+      - '4002:3000'
     depends_on:
-      - db
       - nats
       - ssi
 
-  ssi:
+  credential-manager:
     build:
-      context: ..
       args:
-        - SERVICE=ssi-abstraction
+        - SERVICE=credential-manager
     init: true
-    ports:
-      - '3009:3009'
-      - '3010:3010'
-      - '4000:4000'
     environment:
-      NATS_URL: nats://nats:4222
-      PORT: 3009
-      AGENT_NAME: ssi-abstraction-agent
-      AGENT_WALLET_ID: ssi-wallet-id
-      AGENT_WALLET_KEY: ssi-wallet-key
-      AGENT_HOST: http://localhost
-      AGENT_PUBLIC_DID_SEED: 6b8b882e2618fa5d45ee7229ca000000
-      AGENT_AUTO_ACCEPT_CONNECTION: true
-      AGENT_AUTO_ACCEPT_CREDENTIAL: contentApproved
-      AGENT_LEDGER_ID: BCOVRIN_TEST
+      - HTTP_HOST=0.0.0.0
+      - HTTP_PORT=3000
+      - NATS_URL=nats://nats:4222
+      - NATS_MONITORING_URL=http://nats:8222
+      - SSI_AGENT_URL=http://ssi:3009
+    ports:
+      - '4003:3000'
     depends_on:
-      - db
       - nats
+      - ssi
 
-  db:
-    image: postgres:16
-    volumes:
-      - db-data:/var/lib/postgresql/data
-    ports:
-      - 5432:5432
-    healthcheck:
-      test: ['CMD', 'pg_isready', '-q', '-d', 'postgres', '-U', 'root']
-      timeout: 45s
-      interval: 10s
-      retries: 10
-    restart: always
-    environment:
-      - POSTGRES_USER=root
-      - POSTGRES_PASSWORD=password
-
-  nats:
-    image: nats
-    ports:
-      - '4222:4222' #Nats server port
-      - '8222:8222' #Nats server Monitering port
-
-volumes:
-  db-data:
+  # proof-manager:
+  #   build:
+  #     args:
+  #       - SERVICE=proof-manager
+  #   init: true
+  #   environment:
+  #     - HTTP_HOST=0.0.0.0
+  #     - HTTP_PORT=3000
+  #     - NATS_URL=nats://nats:4222
+  #     - NATS_MONITORING_URL=http://nats:8222
+  #     - SSI_AGENT_URL=http://ssi:3000
+  #   ports:
+  #     - '4004:3000'
+  #   depends_on:
+  #     - nats
+  #     - ssi