From e0323efebf91376f9b80bc0dbf01b6077865a694 Mon Sep 17 00:00:00 2001
From: Konstantin Tsabolov <konstantin.tsabolov@spherity.com>
Date: Fri, 22 Dec 2023 12:39:53 +0100
Subject: [PATCH] chore: refactor proof manager

---
 apps/proof-manager/package.json               |   36 +-
 .../application.spec.ts}                      |   17 +-
 apps/proof-manager/src/app.module.ts          |   44 -
 apps/proof-manager/src/application.ts         |   63 +
 apps/proof-manager/src/client/nats.client.ts  |   45 -
 apps/proof-manager/src/client/nats.spec.ts    |   39 -
 apps/proof-manager/src/client/rest.client.ts  |   22 -
 apps/proof-manager/src/common/constants.ts    |   34 +-
 .../src/common/exception.handler.ts           |   42 -
 apps/proof-manager/src/common/response.ts     |    6 -
 apps/proof-manager/src/config/config.ts       |   31 -
 apps/proof-manager/src/config/http.config.ts  |    6 +
 apps/proof-manager/src/config/nats.config.ts  |    6 +
 apps/proof-manager/src/config/ssi.config.ts   |    5 +
 apps/proof-manager/src/config/validation.ts   |   20 +-
 .../src/health/health.controller.ts           |   42 -
 apps/proof-manager/src/health/health.spec.ts  |   26 -
 apps/proof-manager/src/main.ts                |   25 +-
 .../src/middleware/auth.middleware.ts         |   86 -
 .../controller/controller.spec.ts             |  603 -------
 .../controller/controller.ts                  | 1495 -----------------
 .../entities/accept-presentation.dto.ts       |    8 -
 .../entities/accept-proof-request.dto.ts      |    6 -
 .../entities/find-proof-presentation.dto.ts   |   39 -
 .../entities/get-present-proofs.dto.ts        |    6 -
 .../entities/get-proof-request.dto.ts         |   14 -
 .../entities/membership-credential.dto.ts     |   12 -
 .../presentationSubscribeEndPoint.entity.ts   |   11 -
 .../entities/send-proof-request-body.dto.ts   |   47 -
 .../entities/send-proof-request.dto.ts        |   44 -
 .../src/presentationProof/module.spec.ts      |    7 -
 .../src/presentationProof/module.ts           |   35 -
 .../presentationProof.respository.ts          |   71 -
 .../services/service.spec.ts                  |  473 ------
 .../src/presentationProof/services/service.ts |  456 -----
 .../src/prisma/prisma.module.spec.ts          |    7 -
 .../proof-manager/src/prisma/prisma.module.ts |    9 -
 .../src/prisma/prisma.service.ts              |   29 -
 apps/proof-manager/src/prisma/schema.prisma   |   25 -
 .../src/utils/exceptionsFilter.ts             |   79 -
 apps/proof-manager/src/utils/logger.spec.ts   |   15 -
 apps/proof-manager/src/utils/logger.ts        |   17 -
 .../src/utils/pagination.spec.ts              |   17 -
 apps/proof-manager/src/utils/pagination.ts    |   16 -
 apps/proof-manager/test/app.e2e-spec.ts       |   26 -
 apps/proof-manager/test/jest.config.js        |    9 -
 46 files changed, 117 insertions(+), 4054 deletions(-)
 rename apps/proof-manager/src/{app.module.spec.ts => __tests__/application.spec.ts} (52%)
 delete mode 100644 apps/proof-manager/src/app.module.ts
 create mode 100644 apps/proof-manager/src/application.ts
 delete mode 100644 apps/proof-manager/src/client/nats.client.ts
 delete mode 100644 apps/proof-manager/src/client/nats.spec.ts
 delete mode 100644 apps/proof-manager/src/client/rest.client.ts
 delete mode 100644 apps/proof-manager/src/common/exception.handler.ts
 delete mode 100644 apps/proof-manager/src/common/response.ts
 delete mode 100644 apps/proof-manager/src/config/config.ts
 create mode 100644 apps/proof-manager/src/config/http.config.ts
 create mode 100644 apps/proof-manager/src/config/nats.config.ts
 create mode 100644 apps/proof-manager/src/config/ssi.config.ts
 delete mode 100644 apps/proof-manager/src/health/health.controller.ts
 delete mode 100644 apps/proof-manager/src/health/health.spec.ts
 delete mode 100644 apps/proof-manager/src/middleware/auth.middleware.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/controller/controller.spec.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/controller/controller.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/entities/accept-presentation.dto.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/entities/accept-proof-request.dto.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/entities/find-proof-presentation.dto.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/entities/get-present-proofs.dto.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/entities/get-proof-request.dto.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/entities/membership-credential.dto.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/entities/presentationSubscribeEndPoint.entity.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/entities/send-proof-request-body.dto.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/entities/send-proof-request.dto.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/module.spec.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/module.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/repository/presentationProof.respository.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/services/service.spec.ts
 delete mode 100644 apps/proof-manager/src/presentationProof/services/service.ts
 delete mode 100644 apps/proof-manager/src/prisma/prisma.module.spec.ts
 delete mode 100644 apps/proof-manager/src/prisma/prisma.module.ts
 delete mode 100644 apps/proof-manager/src/prisma/prisma.service.ts
 delete mode 100644 apps/proof-manager/src/prisma/schema.prisma
 delete mode 100644 apps/proof-manager/src/utils/exceptionsFilter.ts
 delete mode 100644 apps/proof-manager/src/utils/logger.spec.ts
 delete mode 100644 apps/proof-manager/src/utils/logger.ts
 delete mode 100644 apps/proof-manager/src/utils/pagination.spec.ts
 delete mode 100644 apps/proof-manager/src/utils/pagination.ts
 delete mode 100644 apps/proof-manager/test/app.e2e-spec.ts
 delete mode 100644 apps/proof-manager/test/jest.config.js

diff --git a/apps/proof-manager/package.json b/apps/proof-manager/package.json
index 7faebba..819f35c 100644
--- a/apps/proof-manager/package.json
+++ b/apps/proof-manager/package.json
@@ -25,53 +25,35 @@
     "test:e2e": "jest --config ./test/jest.config.js"
   },
   "dependencies": {
-    "@elastic/ecs-winston-format": "^1.5.0",
-    "@nestjs/axios": "^3.0.1",
-    "@nestjs/common": "^10.2.8",
+    "@nestjs/common": "^10.2.10",
     "@nestjs/config": "^3.1.1",
-    "@nestjs/core": "^10.2.8",
+    "@nestjs/core": "^10.2.10",
     "@nestjs/mapped-types": "^2.0.4",
-    "@nestjs/microservices": "^10.2.8",
+    "@nestjs/microservices": "^10.2.10",
     "@nestjs/platform-express": "^10.2.8",
     "@nestjs/swagger": "^7.1.16",
-    "@nestjs/terminus": "^10.1.1",
-    "@prisma/client": "^5.6.0",
+    "@ocm/shared": "workspace:*",
     "class-validator": "^0.14.0",
     "express": "^4.17.3",
     "joi": "^17.11.0",
-    "js-base64": "^3.7.2",
-    "jsonwebtoken": "^9.0.2",
-    "jwks-rsa": "^3.1.0",
-    "moment": "^2.29.4",
     "nats": "^2.18.0",
-    "pg": "^8.11.3",
     "reflect-metadata": "^0.1.13",
-    "rxjs": "^7.8.1",
-    "winston": "^3.11.0",
-    "winston-elasticsearch": "^0.17.4"
+    "rxjs": "^7.8.1"
   },
   "devDependencies": {
     "@jest/globals": "^29.7.0",
     "@nestjs/cli": "^10.2.1",
     "@nestjs/schematics": "^10.0.3",
-    "@nestjs/testing": "^10.2.8",
+    "@nestjs/testing": "^10.2.10",
     "@swc/cli": "^0.1.62",
     "@swc/core": "^1.3.96",
     "@swc/jest": "^0.2.29",
     "@types/express": "^4.17.21",
-    "@types/jest": "^29.5.8",
-    "@types/jsonwebtoken": "^9.0.5",
-    "@types/node": "^20.9.0",
-    "@types/supertest": "^2.0.16",
+    "@types/jest": "^29.5.9",
+    "@types/node": "^20.9.3",
     "dotenv-cli": "^7.3.0",
     "jest": "^29.7.0",
-    "node-mocks-http": "^1.13.0",
-    "prisma": "^5.6.0",
     "rimraf": "^5.0.5",
-    "source-map-support": "^0.5.21",
-    "supertest": "^6.3.3",
-    "swagger-ui-express": "^5.0.0",
-    "ts-node": "^10.9.1",
-    "typescript": "^5.2.2"
+    "typescript": "^5.3.2"
   }
 }
diff --git a/apps/proof-manager/src/app.module.spec.ts b/apps/proof-manager/src/__tests__/application.spec.ts
similarity index 52%
rename from apps/proof-manager/src/app.module.spec.ts
rename to apps/proof-manager/src/__tests__/application.spec.ts
index e5e685c..3973b1e 100644
--- a/apps/proof-manager/src/app.module.spec.ts
+++ b/apps/proof-manager/src/__tests__/application.spec.ts
@@ -1,27 +1,26 @@
 import type { INestApplication } from '@nestjs/common';
-import type { TestingModule } from '@nestjs/testing';
 
 import { Test } from '@nestjs/testing';
 
-import AppModule from './app.module.js';
+import { Application } from '../application.js';
 
-describe('App Module', () => {
+describe('Application', () => {
   let app: INestApplication;
 
   beforeAll(async () => {
-    const moduleFixture: TestingModule = await Test.createTestingModule({
-      imports: [AppModule],
+    const moduleFixture = await Test.createTestingModule({
+      imports: [Application],
     }).compile();
 
     app = moduleFixture.createNestApplication();
     await app.init();
   });
 
-  it('should work', () => {
-    expect(true).toBe(true);
-  });
-
   afterAll(async () => {
     await app.close();
   });
+
+  it('should be defined', () => {
+    expect(app).toBeDefined();
+  });
 });
diff --git a/apps/proof-manager/src/app.module.ts b/apps/proof-manager/src/app.module.ts
deleted file mode 100644
index 100d223..0000000
--- a/apps/proof-manager/src/app.module.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import type { MiddlewareConsumer, NestModule } from '@nestjs/common';
-
-import { Module, RequestMethod } from '@nestjs/common';
-import { ConfigModule } from '@nestjs/config';
-import { APP_FILTER } from '@nestjs/core';
-import { TerminusModule } from '@nestjs/terminus';
-
-import ExceptionHandler from './common/exception.handler.js';
-import config from './config/config.js';
-import validationSchema from './config/validation.js';
-import HealthController from './health/health.controller.js';
-import { AuthMiddleware } from './middleware/auth.middleware.js';
-import PresentationProofsModule from './presentationProof/module.js';
-
-@Module({
-  imports: [
-    TerminusModule,
-    ConfigModule.forRoot({
-      isGlobal: true,
-      load: [config],
-      validationSchema,
-    }),
-    PresentationProofsModule,
-  ],
-  controllers: [HealthController],
-  providers: [
-    {
-      provide: APP_FILTER,
-      useClass: ExceptionHandler,
-    },
-  ],
-})
-export default class AppModule implements NestModule {
-  public configure(consumer: MiddlewareConsumer) {
-    // eslint-disable-line
-    consumer
-      .apply(AuthMiddleware)
-      .exclude({
-        path: 'v1/health',
-        method: RequestMethod.GET,
-      })
-      .forRoutes('*');
-  }
-}
diff --git a/apps/proof-manager/src/application.ts b/apps/proof-manager/src/application.ts
new file mode 100644
index 0000000..a7e650c
--- /dev/null
+++ b/apps/proof-manager/src/application.ts
@@ -0,0 +1,63 @@
+import type { ConfigType } from '@nestjs/config';
+
+import { Module } from '@nestjs/common';
+import { ConfigModule } from '@nestjs/config';
+import { RouterModule } from '@nestjs/core';
+import { ClientsModule, Transport } from '@nestjs/microservices';
+import { HealthModule } from '@ocm/shared';
+
+import { NATS_CLIENT } from './common/constants.js';
+import { httpConfig } from './config/http.config.js';
+import { natsConfig } from './config/nats.config.js';
+import { ssiConfig } from './config/ssi.config.js';
+import { validationSchema } from './config/validation.js';
+
+@Module({
+  imports: [
+    ConfigModule.forRoot({
+      isGlobal: true,
+      load: [httpConfig, natsConfig, ssiConfig],
+      cache: true,
+      expandVariables: true,
+      validationSchema,
+      validationOptions: {
+        allowUnknown: true,
+        abortEarly: true,
+      },
+    }),
+
+    ClientsModule.registerAsync({
+      isGlobal: true,
+      clients: [
+        {
+          name: NATS_CLIENT,
+          inject: [natsConfig.KEY],
+          useFactory: (config: ConfigType<typeof natsConfig>) => ({
+            transport: Transport.NATS,
+            options: {
+              url: config.url as string,
+            },
+          }),
+        },
+      ],
+    }),
+
+    HealthModule.registerAsync({
+      inject: [natsConfig.KEY],
+      useFactory: (config: ConfigType<typeof natsConfig>) => {
+        const options: Parameters<typeof HealthModule.register>[0] = {};
+
+        if (config.monitoringUrl) {
+          options.nats = {
+            monitoringUrl: config.monitoringUrl as string,
+          };
+        }
+
+        return options;
+      },
+    }),
+
+    RouterModule.register([{ module: HealthModule, path: '/health' }]),
+  ],
+})
+export class Application {}
diff --git a/apps/proof-manager/src/client/nats.client.ts b/apps/proof-manager/src/client/nats.client.ts
deleted file mode 100644
index 223860d..0000000
--- a/apps/proof-manager/src/client/nats.client.ts
+++ /dev/null
@@ -1,45 +0,0 @@
-import type PresentationSubscriptionEndpointDto from '../presentationProof/entities/presentationSubscribeEndPoint.entity.js';
-
-import { Inject, Injectable } from '@nestjs/common';
-import { ClientProxy } from '@nestjs/microservices';
-import { lastValueFrom } from 'rxjs';
-
-import { ATTESTATION, Connection, NATSServices } from '../common/constants.js';
-
-@Injectable()
-export default class NatsClientService {
-  public constructor(
-    @Inject(NATSServices.SERVICE_NAME) private client: ClientProxy,
-  ) {}
-
-  public getConnectionById(connectionId: string) {
-    const pattern = {
-      endpoint: `${Connection.NATS_ENDPOINT}/${Connection.GET_CONNECTION_By_ID}`,
-    };
-    const payload = { connectionId };
-    return lastValueFrom(this.client.send(pattern, payload));
-  }
-
-  public publishPresentation(data: PresentationSubscriptionEndpointDto) {
-    this.client.emit(
-      `${NATSServices.SERVICE_NAME}/${NATSServices.PRESENTATION_SUBSCRIBER_ENDPOINT}`,
-      data,
-    );
-  }
-
-  public getCredentialsTypeDetails(type: string) {
-    const pattern = {
-      endpoint: `${ATTESTATION.ATTESTATION_MANAGER_SERVICE}/${ATTESTATION.GET_MEMBERSHIP_CREDENTIALS_DETAILS}`,
-    };
-    const payload = { type };
-    return lastValueFrom(this.client.send(pattern, payload));
-  }
-
-  public makeConnectionTrusted(connectionId: string) {
-    const pattern = {
-      endpoint: `${Connection.NATS_ENDPOINT}/${Connection.MAKE_CONNECTION_TRUSTED}`,
-    };
-    const payload = { connectionId };
-    return lastValueFrom(this.client.send(pattern, payload));
-  }
-}
diff --git a/apps/proof-manager/src/client/nats.spec.ts b/apps/proof-manager/src/client/nats.spec.ts
deleted file mode 100644
index 2320313..0000000
--- a/apps/proof-manager/src/client/nats.spec.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-// import { ClientProxy } from '@nestjs/microservices';
-import NatsClientService from './nats.client';
-
-describe('Check if the nats client is working', () => {
-  //   let natsClient: NatsClientService;
-  //   let client: ClientProxy;
-
-  //   beforeEach(() => {
-  //     natsClient = new NatsClientService(client);
-  //   });
-
-  //   jest.mock('rxjs', () => {
-  //     const original = jest.requireActual('rxjs');
-
-  //     return {
-  //       ...original,
-  //       lastValueFrom: () => new Promise((resolve, reject) => {
-  //         resolve(true);
-  //       }),
-  //     };
-  //   });
-
-  it('should be defined', () => {
-    expect(NatsClientService).toBeDefined();
-  });
-
-  // it('should call the offer membership credential endpoint', async () => {
-  //     const data = {
-  //         status: 'complete',
-  //         connectionId: 'connectionId',
-  //         theirLabel: 'theirLabel',
-  //         participantId: 'participantId',
-  //         participantDID: 'participantDID'
-  //     };
-  //     jest.spyOn(client, 'send').mockReturnValue(of(data));
-  //     const response = await natsClient.OfferMembershipCredential(data);
-  //     expect(response).toBeTruthy();
-  // });
-});
diff --git a/apps/proof-manager/src/client/rest.client.ts b/apps/proof-manager/src/client/rest.client.ts
deleted file mode 100644
index 42d0fca..0000000
--- a/apps/proof-manager/src/client/rest.client.ts
+++ /dev/null
@@ -1,22 +0,0 @@
-import { HttpService } from '@nestjs/axios';
-import { Injectable } from '@nestjs/common';
-import { lastValueFrom, map } from 'rxjs';
-
-@Injectable()
-export default class RestClientService {
-  public constructor(private readonly httpService: HttpService) {}
-
-  public async post(url: string, payload: object) {
-    return lastValueFrom(
-      this.httpService
-        .post(url, payload)
-        .pipe(map((response) => response.data)),
-    );
-  }
-
-  public async get(url: string) {
-    return lastValueFrom(
-      this.httpService.get(url).pipe(map((response) => response.data)),
-    );
-  }
-}
diff --git a/apps/proof-manager/src/common/constants.ts b/apps/proof-manager/src/common/constants.ts
index 60254b1..4a290a9 100644
--- a/apps/proof-manager/src/common/constants.ts
+++ b/apps/proof-manager/src/common/constants.ts
@@ -1,32 +1,2 @@
-export enum LoggerConfig {
-  FILE_PATH = 'logs/log.json',
-  LOG_DIR = './logs',
-}
-
-export enum NATSServices {
-  SERVICE_NAME = 'PROOF_MANAGER_SERVICE',
-  PRESENTATION_SUBSCRIBER_ENDPOINT = 'PresentationSubscriberEndpoint',
-}
-
-export enum Abstraction {
-  NATS_ENDPOINT = 'SSI_ABSTRACTION_SERVICE',
-  PROOF_STATE_CHANGED = 'ProofStateChanged',
-}
-
-export enum Connection {
-  GET_CONNECTION_By_ID = 'getConnectionById',
-  NATS_ENDPOINT = 'CONNECTION_MANAGER_SERVICE',
-  MAKE_CONNECTION_TRUSTED = 'makeConnectionTrusted',
-}
-
-export enum ATTESTATION {
-  ATTESTATION_MANAGER_SERVICE = 'ATTESTATION_MANAGER_SERVICE',
-  GET_MEMBERSHIP_CREDENTIALS_DETAILS = 'getCredentialsTypeDetails',
-  CREDENTIAL_TYPE = 'principalMemberCredential',
-}
-
-export enum States {
-  RequestSent = 'request-sent',
-  PresentationReceived = 'presentation-received',
-  Done = 'done',
-}
+export const SERVICE_NAME = 'PROOF_MANAGER_SERVICE';
+export const NATS_CLIENT = Symbol('NATS_CLIENT');
diff --git a/apps/proof-manager/src/common/exception.handler.ts b/apps/proof-manager/src/common/exception.handler.ts
deleted file mode 100644
index aab81f9..0000000
--- a/apps/proof-manager/src/common/exception.handler.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import type ResponseType from './response.js';
-import type { ArgumentsHost, ExceptionFilter } from '@nestjs/common';
-
-import { Catch, HttpException, HttpStatus } from '@nestjs/common';
-import { HttpAdapterHost } from '@nestjs/core';
-
-@Catch()
-export default class ExceptionHandler implements ExceptionFilter {
-  public constructor(private readonly httpAdapterHost: HttpAdapterHost) {}
-
-  // eslint-disable-next-line @typescript-eslint/no-explicit-any
-  public catch(exception: any, host: ArgumentsHost): void {
-    // In certain situations `httpAdapter` might not be available in the
-    // constructor method, thus we should resolve it here.
-    const { httpAdapter } = this.httpAdapterHost;
-
-    const ctx = host.switchToHttp();
-    const response = ctx.getResponse();
-
-    let statusCode = HttpStatus.INTERNAL_SERVER_ERROR;
-    let message =
-      exception.message.error || exception.message || 'Something went wrong!';
-
-    if (exception instanceof HttpException) {
-      const errorResponse: string | object = exception.getResponse();
-
-      statusCode = exception.getStatus();
-      message =
-        (typeof errorResponse === 'object' &&
-          Reflect.get(errorResponse, 'error')) ||
-        message;
-    }
-
-    const responseBody: ResponseType = {
-      statusCode,
-      message,
-      error: exception.message,
-    };
-
-    httpAdapter.reply(response, responseBody, statusCode);
-  }
-}
diff --git a/apps/proof-manager/src/common/response.ts b/apps/proof-manager/src/common/response.ts
deleted file mode 100644
index 45f4ccb..0000000
--- a/apps/proof-manager/src/common/response.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-export default interface ResponseType {
-  statusCode: number;
-  message: string;
-  data?: unknown;
-  error?: unknown;
-}
diff --git a/apps/proof-manager/src/config/config.ts b/apps/proof-manager/src/config/config.ts
deleted file mode 100644
index 1a4a398..0000000
--- a/apps/proof-manager/src/config/config.ts
+++ /dev/null
@@ -1,31 +0,0 @@
-import { fileURLToPath } from 'node:url';
-
-const parentDirectory = fileURLToPath(new URL('..', import.meta.url));
-
-const config = () => ({
-  PORT: Number(process.env.PORT),
-  APP_URL: process.env.PROOF_MANAGER_URL,
-  nats: {
-    url: process.env.NATS_URL,
-  },
-  auth: {
-    useAuth: process.env.USE_AUTH || 'false',
-    clientId: process.env.OAUTH_CLIENT_ID,
-    clientSecret: process.env.OAUTH_CLIENT_SECRET,
-    tokenUrl: process.env.OAUTH_TOKEN_URL,
-  },
-  agent: {
-    agentUrl: process.env.AGENT_URL,
-    didcommUrl: process.env.DIDCOMM_URL,
-  },
-  DATABASE: {
-    type: 'postgres',
-    port: 5432,
-    synchronize: false,
-    logging: false,
-    entities: [`${parentDirectory}/../**/**.model{.ts,.js}`],
-  },
-  ECSURL: process.env.ECSURL,
-  ACCEPT_PRESENTATION_CONFIG: process.env.ACCEPT_PRESENTATION_CONFIG,
-});
-export default config;
diff --git a/apps/proof-manager/src/config/http.config.ts b/apps/proof-manager/src/config/http.config.ts
new file mode 100644
index 0000000..0bb4d4c
--- /dev/null
+++ b/apps/proof-manager/src/config/http.config.ts
@@ -0,0 +1,6 @@
+import { registerAs } from '@nestjs/config';
+
+export const httpConfig = registerAs('http', () => ({
+  host: process.env.HOST,
+  port: Number(process.env.PORT),
+}));
diff --git a/apps/proof-manager/src/config/nats.config.ts b/apps/proof-manager/src/config/nats.config.ts
new file mode 100644
index 0000000..023e923
--- /dev/null
+++ b/apps/proof-manager/src/config/nats.config.ts
@@ -0,0 +1,6 @@
+import { registerAs } from '@nestjs/config';
+
+export const natsConfig = registerAs('nats', () => ({
+  url: process.env.NATS_URL,
+  monitoringUrl: process.env.NATS_MONITORING_URL,
+}));
diff --git a/apps/proof-manager/src/config/ssi.config.ts b/apps/proof-manager/src/config/ssi.config.ts
new file mode 100644
index 0000000..1779919
--- /dev/null
+++ b/apps/proof-manager/src/config/ssi.config.ts
@@ -0,0 +1,5 @@
+import { registerAs } from '@nestjs/config';
+
+export const ssiConfig = registerAs('ssi', () => ({
+  agentUrl: process.env.SSI_AGENT_URL,
+}));
diff --git a/apps/proof-manager/src/config/validation.ts b/apps/proof-manager/src/config/validation.ts
index f7b2536..a7fe2f8 100644
--- a/apps/proof-manager/src/config/validation.ts
+++ b/apps/proof-manager/src/config/validation.ts
@@ -1,15 +1,11 @@
 import Joi from 'joi';
 
-const validationSchema = Joi.object({
-  AGENT_URL: Joi.string().required(),
-  DATABASE_URL: Joi.string().required(),
-  NATS_URL: Joi.string().required(),
-  PORT: Joi.number().required(),
-  ACCEPT_PRESENTATION_CONFIG: Joi.string().required(),
-  USE_AUTH: Joi.string(),
-  OAUTH_CLIENT_ID: Joi.string(),
-  OAUTH_CLIENT_SECRET: Joi.string(),
-  OAUTH_TOKEN_URL: Joi.string(),
-});
+export const validationSchema = Joi.object({
+  HTTP_HOST: Joi.string().default('0.0.0.0'),
+  HTTP_PORT: Joi.number().default(3000),
+
+  NATS_URL: Joi.string().uri().default('nats://localhost:4222'),
+  NATS_MONITORING_URL: Joi.string().uri().default('http://localhost:8222'),
 
-export default validationSchema;
+  SSI_AGENT_URL: Joi.string().default('http://localhost:3010'),
+});
diff --git a/apps/proof-manager/src/health/health.controller.ts b/apps/proof-manager/src/health/health.controller.ts
deleted file mode 100644
index d1ec52d..0000000
--- a/apps/proof-manager/src/health/health.controller.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import type ResponseType from '../common/response.js';
-
-import { Controller, Get, HttpStatus, Version } from '@nestjs/common';
-import { ApiOperation, ApiResponse } from '@nestjs/swagger';
-
-@Controller('health')
-export default class HealthController {
-  public res: ResponseType;
-
-  @Version(['1'])
-  @Get()
-  @ApiOperation({
-    summary: 'Health check',
-    description:
-      'This call provides the capability to check the service is working and up. The call returns 200 Status Code and current server time in json body',
-  })
-  @ApiResponse({
-    status: HttpStatus.OK,
-    description: 'Service is up and running.',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Service is up and running.': {
-            value: {
-              statusCode: 200,
-              message:
-                'Thu Jan 01 1970 00:00:00 GMT+0000 (Coordinated Universal Time)',
-            },
-          },
-        },
-      },
-    },
-  })
-  public getHealth() {
-    this.res = {
-      statusCode: HttpStatus.OK,
-      message: `${new Date()}`,
-    };
-    return this.res;
-  }
-}
diff --git a/apps/proof-manager/src/health/health.spec.ts b/apps/proof-manager/src/health/health.spec.ts
deleted file mode 100644
index 4babe4b..0000000
--- a/apps/proof-manager/src/health/health.spec.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import type { TestingModule } from '@nestjs/testing';
-
-import { HttpStatus } from '@nestjs/common';
-import { Test } from '@nestjs/testing';
-
-import HealthController from './health.controller.js';
-
-describe('Health', () => {
-  let healthController: HealthController;
-  beforeEach(async () => {
-    const module: TestingModule = await Test.createTestingModule({
-      imports: [],
-      controllers: [HealthController],
-      providers: [],
-    }).compile();
-    healthController = module.get<HealthController>(HealthController);
-  });
-  it('should be defined', () => {
-    expect(healthController).toBeDefined();
-  });
-
-  it('should call getHealth', () => {
-    const response = healthController.getHealth();
-    expect(response.statusCode).toBe(HttpStatus.OK);
-  });
-});
diff --git a/apps/proof-manager/src/main.ts b/apps/proof-manager/src/main.ts
index 0df0209..84f089d 100644
--- a/apps/proof-manager/src/main.ts
+++ b/apps/proof-manager/src/main.ts
@@ -1,22 +1,22 @@
+/* c8 ignore start */
 import type { MicroserviceOptions } from '@nestjs/microservices';
 
 import { VersioningType } from '@nestjs/common';
 import { ConfigService } from '@nestjs/config';
-import { HttpAdapterHost, NestFactory } from '@nestjs/core';
+import { NestFactory } from '@nestjs/core';
 import { Transport } from '@nestjs/microservices';
 import { DocumentBuilder, SwaggerModule } from '@nestjs/swagger';
 
-import AppModule from './app.module.js';
-import AllExceptionsFilter from './utils/exceptionsFilter.js';
-import logger from './utils/logger.js';
+import { Application } from './application.js';
 
-const app = await NestFactory.create(AppModule);
+const app = await NestFactory.create(Application);
 const configService = app.get(ConfigService);
 app.enableCors();
+
 app.connectMicroservice<MicroserviceOptions>({
   transport: Transport.NATS,
   options: {
-    servers: [configService.get('nats')?.url],
+    servers: [configService.get('nats').url],
   },
 });
 
@@ -26,10 +26,9 @@ app.enableVersioning({
 });
 
 const swaggerConfig = new DocumentBuilder()
-  .setTitle('Gaia-x Proof Manager API')
-  .setDescription('API documentation for GAIA-X Proof Manager')
+  .setTitle('Gaia-X OCM Proof Manager API')
+  .setDescription('API documentation for Gaia-X OCM Proof Manager')
   .setVersion('1.0')
-  .addServer(`localhost:${configService.get('PORT')}`)
   .build();
 
 const document = SwaggerModule.createDocument(app, swaggerConfig);
@@ -37,9 +36,5 @@ const document = SwaggerModule.createDocument(app, swaggerConfig);
 SwaggerModule.setup('/swagger', app, document);
 await app.startAllMicroservices();
 
-const httpAdapter = app.get(HttpAdapterHost);
-app.useGlobalFilters(new AllExceptionsFilter(httpAdapter));
-
-await app.listen(configService.get('PORT') || 3000, () => {
-  logger.info(`Listening on Port:${configService.get('PORT')}` || 3000);
-});
+await app.listen(configService.get('PORT') || 3000);
+/* c8 ignore stop */
diff --git a/apps/proof-manager/src/middleware/auth.middleware.ts b/apps/proof-manager/src/middleware/auth.middleware.ts
deleted file mode 100644
index 26d29bb..0000000
--- a/apps/proof-manager/src/middleware/auth.middleware.ts
+++ /dev/null
@@ -1,86 +0,0 @@
-import type { NestMiddleware } from '@nestjs/common';
-import type { NextFunction, Request, Response } from 'express';
-
-import { HttpStatus, Injectable } from '@nestjs/common';
-import { ConfigService } from '@nestjs/config';
-import jwt from 'jsonwebtoken';
-import jwksClient from 'jwks-rsa';
-
-import logger from '../utils/logger.js';
-
-@Injectable()
-export class AuthMiddleware implements NestMiddleware {
-  public constructor(private readonly configService: ConfigService) {}
-
-  /* eslint-disable */
-  async use(req: Request, res: Response, next: NextFunction) {
-    if (this.configService.get('auth.useAuth') === 'false') {
-      return next();
-    }
-
-    logger.info('Request at middleware');
-
-    const authHeader = req.headers.authorization;
-    const authToken = authHeader && authHeader?.split(' ')[1];
-
-    if (!authToken) {
-      logger.error('No access token provided.');
-      res.json({
-        status: HttpStatus.UNAUTHORIZED,
-        message: 'Unauthorized. No Access token provided.',
-        data: undefined,
-      });
-      return;
-    }
-
-    const getKey = (
-      header: jwt.JwtHeader,
-      callback: jwt.SigningKeyCallback,
-    ): void => {
-      const jwksUri = this.configService.get('auth.tokenUrl') || '';
-      const client = jwksClient({ jwksUri, timeout: 30000 });
-
-      client
-        .getSigningKey(header.kid)
-        .then((key) => callback(null, key.getPublicKey()))
-        .catch(callback);
-    };
-
-    function verify(token: string): Promise<any> | undefined {
-      return new Promise(
-        (resolve: (decoded: any) => void, reject: (error: Error) => void) => {
-          const verifyCallback: jwt.VerifyCallback<jwt.JwtPayload | string> = (
-            error: jwt.VerifyErrors | null,
-            decoded: any,
-          ): void => {
-            if (error) {
-              return reject(error);
-            }
-            return resolve(decoded);
-          };
-
-          jwt.verify(token, getKey, verifyCallback);
-        },
-      );
-    }
-
-    const result = await verify(authToken as string);
-
-    if (!result) {
-      logger.error('Invalid access token provided.');
-      res.json({
-        status: HttpStatus.UNAUTHORIZED,
-        message: 'Unauthorized. Invalid Access token provided.',
-        data: undefined,
-      });
-      return;
-    }
-
-    next();
-  }
-  /* eslint-enable */
-}
-
-export default {
-  AuthMiddleware,
-};
diff --git a/apps/proof-manager/src/presentationProof/controller/controller.spec.ts b/apps/proof-manager/src/presentationProof/controller/controller.spec.ts
deleted file mode 100644
index 8391bb1..0000000
--- a/apps/proof-manager/src/presentationProof/controller/controller.spec.ts
+++ /dev/null
@@ -1,603 +0,0 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-import type FindProofPresentationDto from '../entities/find-proof-presentation.dto.js';
-import type SendProofRequest from '../entities/send-proof-request.dto.js';
-import type { TestingModule } from '@nestjs/testing';
-
-import { HttpModule } from '@nestjs/axios';
-import { HttpStatus } from '@nestjs/common';
-import { ConfigModule } from '@nestjs/config';
-import { ClientsModule, Transport } from '@nestjs/microservices';
-import { Test } from '@nestjs/testing';
-import { createResponse } from 'node-mocks-http';
-
-import NatsClientService from '../../client/nats.client.js';
-import RestClientService from '../../client/rest.client.js';
-import { NATSServices } from '../../common/constants.js';
-import PrismaService from '../../prisma/prisma.service.js';
-import PresentationProofsService from '../services/service.js';
-
-import PresentationProofsController from './controller.js';
-
-describe.skip('Proof Presentation Controller', () => {
-  let controller: PresentationProofsController;
-  let service: PresentationProofsService;
-  let natsClient: NatsClientService;
-  beforeEach(async () => {
-    const module: TestingModule = await Test.createTestingModule({
-      imports: [
-        ConfigModule,
-        HttpModule,
-        ClientsModule.register([
-          {
-            name: NATSServices.SERVICE_NAME,
-            transport: Transport.NATS,
-          },
-        ]),
-      ],
-      controllers: [PresentationProofsController],
-      providers: [
-        PresentationProofsService,
-        PrismaService,
-        NatsClientService,
-        RestClientService,
-      ],
-      exports: [PrismaService],
-    }).compile();
-
-    service = module.get<PresentationProofsService>(PresentationProofsService);
-    controller = module.get<PresentationProofsController>(
-      PresentationProofsController,
-    );
-    natsClient = module.get<NatsClientService>(NatsClientService);
-  });
-
-  it('should be defined', () => {
-    expect(controller).toBeDefined();
-  });
-
-  describe('get all proof presentation', () => {
-    it('should return an array of proof presentation', async () => {
-      const query: FindProofPresentationDto = {
-        pageSize: '0',
-        page: '0',
-      };
-
-      const serviceResult: any = [
-        1,
-        {
-          id: '3b5e9083-2c2d-4acf-8b18-13f43e31c7df',
-          proof_record_id: '0448de40-415c-4448-bfa0-456fd8936f91',
-          participant_id: '7780cd24-af13-423e-b1ff-ae944ab6fd71',
-          connectionId: '9c80d8c0-8893-4638-97d2-221024f5bafa',
-          credential_def_id: 'LC5aqqDP6sB7Nyn3GHn4eC:3:CL:242017:UID',
-          schemaId: '',
-          their_did: '',
-          status: 'done',
-          created_date: '2022-04-19T12:45:38.872Z',
-          updated_date: '2022-04-19T12:45:55.541Z',
-        },
-      ];
-
-      const result: any = {
-        count: 1,
-        records: {
-          id: '3b5e9083-2c2d-4acf-8b18-13f43e31c7df',
-          proof_record_id: '0448de40-415c-4448-bfa0-456fd8936f91',
-          participant_id: '7780cd24-af13-423e-b1ff-ae944ab6fd71',
-          connectionId: '9c80d8c0-8893-4638-97d2-221024f5bafa',
-          credential_def_id: 'LC5aqqDP6sB7Nyn3GHn4eC:3:CL:242017:UID',
-          schemaId: '',
-          their_did: '',
-          status: 'done',
-          created_date: '2022-04-19T12:45:38.872Z',
-          updated_date: '2022-04-19T12:45:55.541Z',
-        },
-      };
-
-      const response = createResponse();
-
-      jest
-        .spyOn(service, 'findProofPresentation')
-        .mockResolvedValueOnce(serviceResult);
-      const res: any = await controller.findProofPresentation(query, response);
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(res.statusCode).toBe(HttpStatus.OK);
-      expect(resData.data).toStrictEqual(result);
-    });
-
-    it('should return an no data found', async () => {
-      const query: FindProofPresentationDto = {
-        pageSize: '0',
-        page: '0',
-      };
-      const serviceResult: any = [0, []];
-
-      const result: any = { statusCode: 404, message: 'No Data found' };
-      const response = createResponse();
-      jest
-        .spyOn(service, 'findProofPresentation')
-        .mockResolvedValueOnce(serviceResult);
-      const res: any = await controller.findProofPresentation(query, response);
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(resData.statusCode).toBe(HttpStatus.NOT_FOUND);
-      expect(resData).toStrictEqual(result);
-    });
-  });
-
-  describe('find-by-presentation-id', () => {
-    it('should return an proof presentation', async () => {
-      const query = {
-        proof_record_id: '6703e2e3-4bb3-463d-b2e4-5ea41ccd031f',
-        participant_id: '7780cd24-af13-423e-b1ff-ae944ab6fd71',
-      };
-      const serviceResult: any = {
-        _tags: {
-          state: 'done',
-          connectionId: 'f2e80e21-f3ab-4b27-abbc-319141457a5b',
-          threadId: '1a1a6abf-e730-4d60-b33d-702527f81563',
-        },
-        metadata: {},
-        id: '6703e2e3-4bb3-463d-b2e4-5ea41ccd031f',
-        createdAt: '2022-04-19T11:13:10.825Z',
-        requestMessage: {
-          '@type': 'https://didcomm.org/present-proof/1.0/request-presentation',
-          '@id': '1a1a6abf-e730-4d60-b33d-702527f81563',
-          comment: 'Tested participant',
-          'request_presentations~attach': [
-            {
-              '@id': 'libindy-request-presentation-0',
-              'mime-type': 'application/json',
-              data: {
-                base64:
-                  'eyJuYW1lIjoiUHJvb2YgUmVxdWVzdCIsInZlcnNpb24iOiJQcm9vZiBSZXF1ZXN0Iiwibm9uY2UiOiI1MjY2MTI4Mjg3NjAiLCJyZXF1ZXN0ZWRfYXR0cmlidXRlcyI6eyJhZGRpdGlvbmFsUHJvcDEiOnsibmFtZXMiOlsiZk5hbWUiXSwicmVzdHJpY3Rpb25zIjpbeyJjcmVkX2RlZl9pZCI6IkxDNWFxcURQNnNCN055bjNHSG40ZUM6MzpDTDoyNDIwMTc6VUlEIn1dfX0sInJlcXVlc3RlZF9wcmVkaWNhdGVzIjp7fX0=',
-              },
-            },
-          ],
-        },
-        state: 'done',
-        connectionId: 'f2e80e21-f3ab-4b27-abbc-319141457a5b',
-        threadId: '1a1a6abf-e730-4d60-b33d-702527f81563',
-        isVerified: true,
-      };
-
-      const result: any = {
-        _tags: {
-          state: 'done',
-          connectionId: 'f2e80e21-f3ab-4b27-abbc-319141457a5b',
-          threadId: '1a1a6abf-e730-4d60-b33d-702527f81563',
-        },
-        metadata: {},
-        id: '6703e2e3-4bb3-463d-b2e4-5ea41ccd031f',
-        createdAt: '2022-04-19T11:13:10.825Z',
-        requestMessage: {
-          '@type': 'https://didcomm.org/present-proof/1.0/request-presentation',
-          '@id': '1a1a6abf-e730-4d60-b33d-702527f81563',
-          comment: 'Tested participant',
-          'request_presentations~attach': [
-            {
-              '@id': 'libindy-request-presentation-0',
-              'mime-type': 'application/json',
-              data: {
-                base64:
-                  'eyJuYW1lIjoiUHJvb2YgUmVxdWVzdCIsInZlcnNpb24iOiJQcm9vZiBSZXF1ZXN0Iiwibm9uY2UiOiI1MjY2MTI4Mjg3NjAiLCJyZXF1ZXN0ZWRfYXR0cmlidXRlcyI6eyJhZGRpdGlvbmFsUHJvcDEiOnsibmFtZXMiOlsiZk5hbWUiXSwicmVzdHJpY3Rpb25zIjpbeyJjcmVkX2RlZl9pZCI6IkxDNWFxcURQNnNCN055bjNHSG40ZUM6MzpDTDoyNDIwMTc6VUlEIn1dfX0sInJlcXVlc3RlZF9wcmVkaWNhdGVzIjp7fX0=',
-              },
-            },
-          ],
-        },
-        state: 'done',
-        connectionId: 'f2e80e21-f3ab-4b27-abbc-319141457a5b',
-        threadId: '1a1a6abf-e730-4d60-b33d-702527f81563',
-        isVerified: true,
-      };
-
-      const response = createResponse();
-
-      jest
-        .spyOn(service, 'findProofByProofRecordId')
-        .mockResolvedValueOnce(serviceResult);
-      const res: any = await controller.findProofByProofRecordId(
-        query,
-        response,
-      );
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(res.statusCode).toBe(HttpStatus.OK);
-      expect(resData.data).toStrictEqual(result);
-    });
-
-    it('should return an presentation request required following attributes ( proof_record_id, participant_id )', async () => {
-      const query = {
-        proof_record_id: '',
-        participant_id: '',
-      };
-      const serviceResult: any = [];
-      const response = createResponse();
-      response.status(HttpStatus.BAD_REQUEST);
-      const result = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Find presentation request required following attributes ( proof_record_id, participant_id )',
-      };
-      jest
-        .spyOn(service, 'findProofByProofRecordId')
-        .mockImplementation(() => serviceResult);
-
-      const res: any = await controller.findProofByProofRecordId(
-        query,
-        response,
-      );
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(res.statusCode).toBe(HttpStatus.BAD_REQUEST);
-      expect(resData).toStrictEqual(result);
-    });
-
-    it('should return an proof presentation no data found', async () => {
-      const query = {
-        proof_record_id: '6703e2e3-4bb3-463d-b2e4-5ea41ccd031f',
-        participant_id: '7780cd24-af13-423e-b1ff-ae944ab6fd71',
-      };
-      const serviceResult: any = '';
-      const result: any = { statusCode: 404, message: 'No Data found' };
-      const response = createResponse();
-      jest
-        .spyOn(service, 'findProofByProofRecordId')
-        .mockResolvedValueOnce(serviceResult);
-      const res: any = await controller.findProofByProofRecordId(
-        query,
-        response,
-      );
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(resData.statusCode).toBe(HttpStatus.NOT_FOUND);
-      expect(resData).toStrictEqual(result);
-    });
-  });
-
-  describe('send presentation request', () => {
-    it('should return an presentation request required following attributes ( connectionId, credential_def_id, attributes )', async () => {
-      const query: SendProofRequest = {
-        credentialDefId: '',
-        connectionId: '',
-        attributes: [
-          {
-            attribute_name: 'email',
-            value: '',
-            condition: '',
-          },
-        ],
-        participantId: '',
-        proofRecordId: '',
-      };
-      const serviceResult: any = [];
-      const response = createResponse();
-      response.status(HttpStatus.BAD_REQUEST);
-      const result = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Send presentation request required following attributes ( connectionId, credential_def_id, attributes )',
-      };
-      jest
-        .spyOn(service, 'sendPresentationRequest')
-        .mockImplementation(() => serviceResult);
-
-      const res: any = await controller.sendPresentationRequest(
-        query,
-        response,
-      );
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(res.statusCode).toBe(HttpStatus.BAD_REQUEST);
-      expect(resData).toStrictEqual(result);
-    });
-
-    it('should return an presentation request send successfully', async () => {
-      const query: SendProofRequest = {
-        credentialDefId:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        attributes: [
-          {
-            attribute_name: 'email',
-            value: '',
-            condition: '',
-          },
-        ],
-        participantId: '',
-        proofRecordId: '',
-      };
-      const serviceResult: any = {
-        _tags: {},
-        metadata: {},
-        id: '03469be8-a70e-4190-952c-d1b3778e81e5',
-        createdAt: '2022-04-21T10:07:10.070Z',
-        requestMessage: {
-          '@type': 'https://didcomm.org/present-proof/1.0/request-presentation',
-          '@id': 'caa5a5e8-8965-4457-8df0-a6db6e18617b',
-          comment: 'Gaia-x Test',
-          'request_presentations~attach': [[Object]],
-        },
-        state: 'request-sent',
-        connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        threadId: 'caa5a5e8-8965-4457-8df0-a6db6e18617b',
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        theirDid: 'CePQGVFWkpWBN2trZuZSx4',
-      };
-
-      const response = createResponse();
-
-      const result: any = {
-        id: 'aa74842c-6bf5-4647-864c-4c45012cfef3',
-        proof_record_id: '03469be8-a70e-4190-952c-d1b3778e81e5',
-        participant_id: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        credential_def_id:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        schemaId: '',
-        their_did: '',
-        status: 'request-sent',
-        created_date: '2022-04-21T10:07:10.179Z',
-        updated_date: '2022-04-21T10:07:10.179Z',
-      };
-
-      jest
-        .spyOn(service, 'sendPresentationRequest')
-        .mockImplementation(() => serviceResult);
-      jest
-        .spyOn(service, 'createPresentationRequest')
-        .mockImplementation(() => result);
-
-      const res: any = await controller.sendPresentationRequest(
-        query,
-        response,
-      );
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(res.statusCode).toBe(HttpStatus.CREATED);
-      expect(resData.data).toStrictEqual(result);
-    });
-
-    it('should return an could not get agent details. please try again.', async () => {
-      const query: SendProofRequest = {
-        credentialDefId:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        attributes: [
-          {
-            attribute_name: 'email',
-            value: '',
-            condition: '',
-          },
-        ],
-        participantId: '',
-        proofRecordId: '',
-      };
-      const serviceResult: any = {
-        state: 'request-sent',
-        connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        threadId: 'caa5a5e8-8965-4457-8df0-a6db6e18617b',
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        theirDid: 'CePQGVFWkpWBN2trZuZSx4',
-      };
-
-      const response = createResponse();
-
-      const result: any = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message: 'Could not get agent details. please try again.',
-      };
-
-      jest
-        .spyOn(service, 'sendPresentationRequest')
-        .mockImplementation(() => serviceResult);
-
-      const res: any = await controller.sendPresentationRequest(
-        query,
-        response,
-      );
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(res.statusCode).toBe(HttpStatus.BAD_REQUEST);
-      expect(resData).toStrictEqual(result);
-    });
-  });
-
-  describe('send out of band presentation request', () => {
-    it('should return an presentation request required following attributes ( participant_id, credential_def_id, attributes )', async () => {
-      const query: SendProofRequest = {
-        credentialDefId: '',
-        connectionId: '',
-        attributes: [
-          {
-            attribute_name: 'email',
-            value: '',
-            condition: '',
-          },
-        ],
-        participantId: '',
-        proofRecordId: '',
-      };
-      const serviceResult: any = [];
-      const response = createResponse();
-      response.status(HttpStatus.BAD_REQUEST);
-      const result = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Send presentation request required following attributes ( participant_id, credential_def_id, attributes )',
-      };
-      jest
-        .spyOn(service, 'sendOutOfBandPresentationRequest')
-        .mockImplementation(() => serviceResult);
-
-      const res: any = await controller.sendOutOfBandPresentationRequest(
-        query,
-        response,
-      );
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(res.statusCode).toBe(HttpStatus.BAD_REQUEST);
-      expect(resData).toStrictEqual(result);
-    });
-
-    it('should return an presentation request send successfully', async () => {
-      const query: SendProofRequest = {
-        credentialDefId:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        attributes: [
-          {
-            attribute_name: 'email',
-            value: '',
-            condition: '',
-          },
-        ],
-        participantId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        proofRecordId: '',
-      };
-      const serviceResult: any = {
-        message:
-          'http://3.111.77.38:4001/?d_m=eyJAdHlwZSI6ImRpZDpzb3Y6QnpDYnNOWWhNcmpIaXFaRFRVQVNIZztzcGVjL3ByZXNlbnQtcHJvb2YvMS4wL3JlcXVlc3QtcHJlc2VudGF0aW9uIiwiQGlkIjoiNGFlNTU0N2YtNmFmMi00MTQzLThiNWYtY2JkNWRiZWI5NGIyIiwiY29tbWVudCI6IlRlc3RlZCBCeSBTcHJpbnQgNCIsInJlcXVlc3RfcHJlc2VudGF0aW9uc35hdHRhY2giOlt7IkBpZCI6ImxpYmluZHktcmVxdWVzdC1wcmVzZW50YXRpb24tMCIsIm1pbWUtdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJkYXRhIjp7ImJhc2U2NCI6ImV5SnVZVzFsSWpvaVQzVjBJRTltSUVKaGJtUWdVSEp2YjJZZ1VtVnhkV1Z6ZENJc0luWmxjbk5wYjI0aU9pSlBkWFFnVDJZZ1FtRnVaQ0JRY205dlppQlNaWEYxWlhOMElpd2libTl1WTJVaU9pSXlNamM0TURnM01UazFOakkwSWl3aWNtVnhkV1Z6ZEdWa1gyRjBkSEpwWW5WMFpYTWlPbnNpWVdSa2FYUnBiMjVoYkZCeWIzQXhJanA3SW01aGJXVnpJanBiSW1WdFlXbHNJaXdpYVhOemRXVnlSRWxFSWwwc0luSmxjM1J5YVdOMGFXOXVjeUk2VzNzaVkzSmxaRjlrWldaZmFXUWlPaUpMYm5kNk5FdEhPVGQwWVRaRmJrTTFRbFEzZFVnek9qTTZRMHc2TWpReE9UQXhPbWRoYVdFdGVDQndjbWx1WTJsd1lXd2diV1Z0WW1WeUlHTnlaV1JsYm5ScFlXd2dNQzR5SW4xZGZYMHNJbkpsY1hWbGMzUmxaRjl3Y21Wa2FXTmhkR1Z6SWpwN2ZYMD0ifX1dLCJ-c2VydmljZSI6eyJyZWNpcGllbnRLZXlzIjpbIkJCRmZVdmVVUTZjdEJUR3liWG9XWWkzNjJuS2h6NHV0WDZ4aVF3WHNzc3pRIl0sInJvdXRpbmdLZXlzIjpbXSwic2VydmljZUVuZHBvaW50IjoiaHR0cDovLzMuMTExLjc3LjM4OjQwMDEifX0',
-        proofRecord: {
-          _tags: {},
-          metadata: {},
-          id: '98c9840b-f47e-4572-8666-f17c13a6efa8',
-          createdAt: '2022-04-21T11:24:43.014Z',
-          requestMessage: {
-            '@type':
-              'https://didcomm.org/present-proof/1.0/request-presentation',
-            '@id': '4ae5547f-6af2-4143-8b5f-cbd5dbeb94b2',
-            comment: 'Tested By Sprint 4',
-            'request_presentations~attach': [Array],
-            '~service': [Object],
-          },
-          state: 'request-sent',
-          threadId: '4ae5547f-6af2-4143-8b5f-cbd5dbeb94b2',
-          autoAcceptProof: 'always',
-        },
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-      };
-
-      const response = createResponse();
-
-      const result: any = {
-        id: '4cb19a07-0a3c-4a73-bbd6-006b73b26eeb',
-        proof_record_id: '98c9840b-f47e-4572-8666-f17c13a6efa8',
-        participant_id: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        connectionId: '',
-        credential_def_id:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        schemaId: '',
-        their_did: '',
-        status: 'request-sent',
-        created_date: '2022-04-21T11:24:43.042Z',
-        updated_date: '2022-04-21T11:24:43.042Z',
-        presentationMessage:
-          'http://3.111.77.38:4001/?d_m=eyJAdHlwZSI6ImRpZDpzb3Y6QnpDYnNOWWhNcmpIaXFaRFRVQVNIZztzcGVjL3ByZXNlbnQtcHJvb2YvMS4wL3JlcXVlc3QtcHJlc2VudGF0aW9uIiwiQGlkIjoiNGFlNTU0N2YtNmFmMi00MTQzLThiNWYtY2JkNWRiZWI5NGIyIiwiY29tbWVudCI6IlRlc3RlZCBCeSBTcHJpbnQgNCIsInJlcXVlc3RfcHJlc2VudGF0aW9uc35hdHRhY2giOlt7IkBpZCI6ImxpYmluZHktcmVxdWVzdC1wcmVzZW50YXRpb24tMCIsIm1pbWUtdHlwZSI6ImFwcGxpY2F0aW9uL2pzb24iLCJkYXRhIjp7ImJhc2U2NCI6ImV5SnVZVzFsSWpvaVQzVjBJRTltSUVKaGJtUWdVSEp2YjJZZ1VtVnhkV1Z6ZENJc0luWmxjbk5wYjI0aU9pSlBkWFFnVDJZZ1FtRnVaQ0JRY205dlppQlNaWEYxWlhOMElpd2libTl1WTJVaU9pSXlNamM0TURnM01UazFOakkwSWl3aWNtVnhkV1Z6ZEdWa1gyRjBkSEpwWW5WMFpYTWlPbnNpWVdSa2FYUnBiMjVoYkZCeWIzQXhJanA3SW01aGJXVnpJanBiSW1WdFlXbHNJaXdpYVhOemRXVnlSRWxFSWwwc0luSmxjM1J5YVdOMGFXOXVjeUk2VzNzaVkzSmxaRjlrWldaZmFXUWlPaUpMYm5kNk5FdEhPVGQwWVRaRmJrTTFRbFEzZFVnek9qTTZRMHc2TWpReE9UQXhPbWRoYVdFdGVDQndjbWx1WTJsd1lXd2diV1Z0WW1WeUlHTnlaV1JsYm5ScFlXd2dNQzR5SW4xZGZYMHNJbkpsY1hWbGMzUmxaRjl3Y21Wa2FXTmhkR1Z6SWpwN2ZYMD0ifX1dLCJ-c2VydmljZSI6eyJyZWNpcGllbnRLZXlzIjpbIkJCRmZVdmVVUTZjdEJUR3liWG9XWWkzNjJuS2h6NHV0WDZ4aVF3WHNzc3pRIl0sInJvdXRpbmdLZXlzIjpbXSwic2VydmljZUVuZHBvaW50IjoiaHR0cDovLzMuMTExLjc3LjM4OjQwMDEifX0',
-      };
-
-      jest
-        .spyOn(service, 'sendOutOfBandPresentationRequest')
-        .mockImplementation(() => serviceResult);
-      jest
-        .spyOn(service, 'createPresentationRequest')
-        .mockImplementation(() => result);
-
-      const res: any = await controller.sendOutOfBandPresentationRequest(
-        query,
-        response,
-      );
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(res.statusCode).toBe(HttpStatus.CREATED);
-      expect(resData.data).toStrictEqual(result);
-    });
-
-    it('should return an could not get agent details. please try again.', async () => {
-      const query: SendProofRequest = {
-        credentialDefId:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        attributes: [
-          {
-            attribute_name: 'email',
-            value: '',
-            condition: '',
-          },
-        ],
-        participantId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        proofRecordId: '',
-      };
-      const serviceResult: any = {
-        state: 'request-sent',
-        connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        threadId: 'caa5a5e8-8965-4457-8df0-a6db6e18617b',
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        theirDid: 'CePQGVFWkpWBN2trZuZSx4',
-      };
-
-      const response = createResponse();
-
-      const result: any = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message: 'Could not get agent details. please try again.',
-      };
-
-      jest
-        .spyOn(service, 'sendOutOfBandPresentationRequest')
-        .mockImplementation(() => serviceResult);
-
-      const res: any = await controller.sendOutOfBandPresentationRequest(
-        query,
-        response,
-      );
-      // eslint-disable-next-line no-underscore-dangle
-      const resData = res._getData();
-      expect(res.statusCode).toBe(HttpStatus.BAD_REQUEST);
-      expect(resData).toStrictEqual(result);
-    });
-  });
-
-  describe('webHookCredentials()', () => {
-    it('should return an presentation states noted.', async () => {
-      const query: any = {
-        body: {
-          connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-          id: '1d50f39b-200a-460d-8198-c2dac92d813a',
-          state: 'done',
-          isVerified: true,
-        },
-      };
-
-      const serviceResult: any = {
-        state: 'request-sent',
-        connectionId: '1d50f39b-200a-460d-8198-c2dac92d813a',
-        threadId: 'caa5a5e8-8965-4457-8df0-a6db6e18617b',
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        theirDid: 'CePQGVFWkpWBN2trZuZSx4',
-      };
-
-      const result: any = {
-        statusCode: HttpStatus.OK,
-        message: 'Presentation states noted.',
-      };
-
-      jest
-        .spyOn(service, 'updatePresentationStatus')
-        .mockImplementation(() => serviceResult);
-
-      jest
-        .spyOn(service, 'makeConnectionTrusted')
-        .mockImplementation(() => serviceResult);
-
-      jest
-        .spyOn(natsClient, 'makeConnectionTrusted')
-        .mockResolvedValueOnce(serviceResult);
-
-      const res: any = await controller.webhookGetProofPresentation(query);
-      expect(res.statusCode).toBe(HttpStatus.OK);
-      expect(res).toStrictEqual(result);
-    });
-  });
-});
diff --git a/apps/proof-manager/src/presentationProof/controller/controller.ts b/apps/proof-manager/src/presentationProof/controller/controller.ts
deleted file mode 100644
index 882b935..0000000
--- a/apps/proof-manager/src/presentationProof/controller/controller.ts
+++ /dev/null
@@ -1,1495 +0,0 @@
-import type ResponseType from '../../common/response.js';
-import type GetProofRequest from '../entities/get-proof-request.dto.js';
-import type MembershipCredentialDto from '../entities/membership-credential.dto.js';
-import type PresentationSubscriptionEndpointDto from '../entities/presentationSubscribeEndPoint.entity.js';
-// eslint-disable-next-line @typescript-eslint/consistent-type-imports
-import type { Response } from 'express';
-
-import {
-  Body,
-  Controller,
-  Get,
-  HttpStatus,
-  Param,
-  Post,
-  Query,
-  Res,
-  Version,
-} from '@nestjs/common';
-import { ConfigService } from '@nestjs/config';
-import { EventPattern, MessagePattern } from '@nestjs/microservices';
-import {
-  ApiBody,
-  ApiOperation,
-  ApiQuery,
-  ApiResponse,
-  ApiTags,
-} from '@nestjs/swagger';
-import { Base64 } from 'js-base64';
-
-import {
-  ATTESTATION,
-  Abstraction,
-  NATSServices,
-  States,
-} from '../../common/constants.js';
-import logger from '../../utils/logger.js';
-import AcceptPresentationDto from '../entities/accept-presentation.dto.js';
-import AcceptProofRequestDto from '../entities/accept-proof-request.dto.js';
-import FindProofPresentationDto from '../entities/find-proof-presentation.dto.js';
-import GetPresentProofsDto from '../entities/get-present-proofs.dto.js';
-import SendProofRequestBody from '../entities/send-proof-request-body.dto.js';
-import SendProofRequest from '../entities/send-proof-request.dto.js';
-import PresentationProofsService from '../services/service.js';
-
-@ApiTags('Proofs')
-@Controller()
-export default class PresentationProofsController {
-  public constructor(
-    private readonly presentationProofsService: PresentationProofsService,
-    private configService: ConfigService,
-  ) {}
-
-  @Version(['1'])
-  @ApiQuery({ name: 'page', required: false })
-  @ApiQuery({ name: 'pageSize', required: false })
-  @ApiQuery({ name: 'proofRecordId', required: false })
-  @ApiQuery({ name: 'connectionId', required: false })
-  @ApiQuery({ name: 'credentialDefId', required: false })
-  @ApiQuery({ name: 'schemaId', required: false })
-  @ApiQuery({ name: 'theirDid', required: false })
-  @ApiQuery({ name: 'status', required: false })
-  @ApiQuery({ name: 'createdDateStart', required: false })
-  @ApiQuery({ name: 'createdDateEnd', required: false })
-  @ApiQuery({ name: 'updatedDateStart', required: false })
-  @ApiQuery({ name: 'updatedDateEnd', required: false })
-  @Get('find-proof-presentation')
-  @ApiOperation({
-    summary: 'Fetch list of proof requests',
-    description:
-      'This call provides the capability to search proofs (Credential Presentation) by using pagination and filter parameters. This call returns a list of proof requests (Proof Presentations) and overall count of records. Filter supports following parameters: page, pageSize, proofRecordId, connectionId, credentialDefId, schemaId, theirDid, status, createdDateStart, createdDateEnd, updatedDateStart, updatedDateEnd',
-  })
-  @ApiResponse({
-    status: HttpStatus.OK,
-    description: 'Proof presentations fetched successfully',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Proof presentations fetched successfully': {
-            value: {
-              statusCode: 200,
-              message: 'Proof presentations fetched successfully',
-              data: {
-                count: 1,
-                records: [
-                  {
-                    id: '30774a7e',
-                    proofRecordId: '9b4ab922',
-                    connectionId: '',
-                    credentialDefId: '',
-                    schemaId: '',
-                    theirDid: '',
-                    status: 'request-sent',
-                    createdDate: '1970-01-01T00:00:00.642Z',
-                    updatedDate: '1970-01-01T00:00:00.642Z',
-                  },
-                ],
-              },
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.NOT_FOUND,
-    description: 'No Data found',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'No Data found': {
-            value: {
-              statusCode: 404,
-              message: 'No Data found',
-            },
-          },
-        },
-      },
-    },
-  })
-  public async findProofPresentation(
-    @Query() query: FindProofPresentationDto,
-    @Res() response: Response,
-  ) {
-    let res: ResponseType;
-    const result = await this.presentationProofsService.findProofPresentation(
-      query.pageSize ? parseInt(query.pageSize, 10) : 10,
-      query.page ? parseInt(query.page, 10) : 0,
-      query.proofRecordId ? query.proofRecordId : false,
-      query.connectionId ? query.connectionId : false,
-      query.credentialDefId ? query.credentialDefId : false,
-      query.schemaId ? query.schemaId : false,
-      query.theirDid ? query.theirDid : false,
-      query.status ? query.status : false,
-      query.createdDateStart ? query.createdDateStart : false,
-      query.createdDateEnd ? query.createdDateEnd : false,
-      query.updatedDateStart ? query.updatedDateStart : false,
-      query.updatedDateEnd ? query.updatedDateEnd : false,
-    );
-    if (Array.isArray(result) && result[0] > 0) {
-      response.status(HttpStatus.OK);
-      res = {
-        statusCode: HttpStatus.OK,
-        message: 'Proof presentations fetched successfully',
-        data: {
-          count: result[0],
-          records: result[1],
-        },
-      };
-      logger.info('Proof presentations fetched successfully');
-      return response.send(res);
-    }
-    response.status(HttpStatus.NOT_FOUND);
-    res = {
-      statusCode: HttpStatus.NOT_FOUND,
-      message: 'No Data found',
-    };
-    return response.send(res);
-  }
-
-  @ApiQuery({ name: 'proofRecordId', required: true })
-  @Version(['1'])
-  @Get('find-by-presentation-id')
-  @ApiOperation({
-    summary: 'Fetch proof presentation by proofRequestId',
-    description:
-      'This call provides the capability to get proof request by providing proofRecordId (presentationId). The call returns an information about proof request and also (if user accepted proof request) information about requested user credentials',
-  })
-  @ApiResponse({
-    status: HttpStatus.OK,
-    description: 'Proof presentation fetched successfully',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Proof presentation fetched successfully': {
-            value: {
-              statusCode: 200,
-              message: 'Proof presentation fetched successfully',
-              data: {
-                state: 'request-sent',
-                presentations: [
-                  {
-                    schemaId: '',
-                    credDefId: '',
-                    revRegId: '',
-                    timestamp: '',
-                    credentialSubject: {},
-                  },
-                ],
-              },
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.NOT_FOUND,
-    description: 'No Data found',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'No Data found': {
-            value: {
-              statusCode: 404,
-              message: 'No Data found',
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description:
-      'Find presentation request required following attributes: ( proofRecordId )',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Find presentation request required following attributes: ( proofRecordId )':
-            {
-              value: {
-                statusCode: 400,
-                message:
-                  'Find presentation request required following attributes: ( proofRecordId )',
-              },
-            },
-        },
-      },
-    },
-  })
-  public async findProofByProofRecordId(
-    @Query() query: AcceptPresentationDto,
-    @Res() response: Response,
-  ) {
-    let res: ResponseType;
-
-    if (!query.proofRecordId) {
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Find presentation request required following attributes: ( proofRecordId )',
-      };
-      return response.status(HttpStatus.BAD_REQUEST).send(res);
-    }
-    const result =
-      await this.presentationProofsService.findProofByProofRecordId(
-        query.proofRecordId,
-      );
-    let schemaId: string;
-    let credDefId: string;
-    let revRegId: string;
-    let timestamp: string;
-    let resData: {
-      presentations: {
-        schemaId: string;
-        credDefId: string;
-        revRegId: string;
-        timestamp: string;
-        credentialSubject: Record<string, string>;
-      }[];
-      state: string;
-    };
-    if (result) {
-      if (result.state === 'done') {
-        const data = JSON.parse(
-          Base64.decode(
-            result.presentationMessage['presentations~attach'][0].data.base64,
-          ),
-        );
-
-        resData = {
-          state: result.state,
-          presentations: [],
-        };
-
-        const revealedAttrGroupsKeys = Object.keys(
-          data.requested_proof.revealed_attr_groups,
-        );
-
-        for (let i = 0; i < revealedAttrGroupsKeys.length; i += 1) {
-          const revealedAttrGroupsKey = revealedAttrGroupsKeys[i];
-          const subIndex =
-            data.requested_proof.revealed_attr_groups[revealedAttrGroupsKey]
-              .sub_proof_index;
-
-          const presentationData: (typeof resData)['presentations'][number] = {
-            schemaId: data.identifiers[subIndex].schema_id,
-            credDefId: data.identifiers[subIndex].cred_def_id,
-            revRegId: data.identifiers[subIndex].rev_reg_id,
-            timestamp: data.identifiers[subIndex].timestamp,
-            credentialSubject: {},
-          };
-
-          const keys = Object.keys(
-            data.requested_proof.revealed_attr_groups[revealedAttrGroupsKey]
-              .values,
-          );
-
-          keys.forEach((key) => {
-            // eslint-disable-next-line max-len
-            presentationData.credentialSubject[key] =
-              data.requested_proof.revealed_attr_groups[
-                revealedAttrGroupsKey
-              ].values[key].raw;
-          });
-
-          resData.presentations.push(presentationData);
-        }
-      } else {
-        schemaId = '';
-        credDefId = '';
-        revRegId = '';
-        timestamp = '';
-
-        resData = {
-          state: result.state,
-          presentations: [
-            {
-              schemaId,
-              credDefId,
-              revRegId,
-              timestamp,
-              credentialSubject: {},
-            },
-          ],
-        };
-      }
-
-      response.status(HttpStatus.OK);
-      res = {
-        statusCode: HttpStatus.OK,
-        message: 'Proof presentation fetched successfully',
-        data: resData,
-      };
-      return response.send(res);
-    }
-    response.status(HttpStatus.NOT_FOUND);
-    res = {
-      statusCode: HttpStatus.NOT_FOUND,
-      message: 'No Data found',
-    };
-    return response.send(res);
-  }
-
-  @MessagePattern({
-    endpoint: `${NATSServices.SERVICE_NAME}/sendMembershipProofRequest`,
-  })
-  public async sendPrincipalCredentialPresentationRequest(data: {
-    connectionId: string;
-  }) {
-    let res: ResponseType;
-    if (data.connectionId) {
-      // eslint-disable-next-line max-len
-      const principalCredentialDetail =
-        await this.presentationProofsService.getCredentialsTypeDetails(
-          ATTESTATION.CREDENTIAL_TYPE,
-        );
-      const attributes: {
-        attributeName: string;
-        schemaId: string;
-        value: string;
-        condition: string;
-      }[] = [];
-      principalCredentialDetail.schema.attribute.forEach(
-        (member: { name: string }) => {
-          attributes.push({
-            attributeName: member.name,
-            schemaId: principalCredentialDetail.schema.schemaID,
-            value: '',
-            condition: '',
-          });
-        },
-      );
-
-      const sendProofRes: MembershipCredentialDto = {
-        connectionId: data.connectionId,
-        attributes,
-      };
-
-      // eslint-disable-next-line max-len
-      const resp =
-        await this.presentationProofsService.sendPrincipalCredentialPresentationRequest(
-          sendProofRes,
-        );
-      const sendProofPayload: SendProofRequest = {
-        proofRecordId: resp.id,
-        theirDID: resp.theirDid,
-        status: resp.state,
-        attributes,
-        connectionId: data.connectionId,
-      };
-
-      res = {
-        statusCode: HttpStatus.CREATED,
-        message: 'Presentation request send successfully',
-        data: await this.presentationProofsService.createPresentationRequest(
-          sendProofPayload,
-        ),
-      };
-      logger.info('Presentation request send successfully');
-    } else {
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message: 'Required following attributes ( connectionId )',
-      };
-    }
-    return res;
-  }
-
-  @EventPattern({
-    endpoint: `${Abstraction.NATS_ENDPOINT}/${Abstraction.PROOF_STATE_CHANGED}`,
-  })
-  public async webhookGetProofPresentation(body: {
-    proofRecord: GetProofRequest;
-  }) {
-    const getProofRequest = body.proofRecord;
-    let res: ResponseType;
-    let getProofRequestDTO: GetProofRequest;
-    const presentationSubscriptionEndpointDto: PresentationSubscriptionEndpointDto =
-      {
-        proofRecordId: getProofRequest.id,
-        status: getProofRequest.state,
-      };
-
-    /**
-     * Sent Connection updates to subscriber
-     */
-    this.presentationProofsService.publishPresentationSubscriberEndpoint(
-      presentationSubscriptionEndpointDto,
-    );
-
-    if (
-      getProofRequest.state === States.PresentationReceived ||
-      getProofRequest.state === States.Done
-    ) {
-      getProofRequestDTO = {
-        id: getProofRequest.id ? getProofRequest.id : '',
-        state: getProofRequest.state ? getProofRequest.state : '',
-        connectionId: getProofRequest.connectionId
-          ? getProofRequest.connectionId
-          : '',
-      };
-      const getResponse =
-        await this.presentationProofsService.updatePresentationStatus(
-          getProofRequestDTO,
-        );
-      if (
-        this.configService.get('ACCEPT_PRESENTATION_CONFIG') === 'AUTO' &&
-        getProofRequest.state === States.PresentationReceived
-      ) {
-        res = {
-          statusCode: HttpStatus.ACCEPTED,
-          message: 'Presentation received request accepted successfully',
-          data: await this.presentationProofsService.acceptPresentation(
-            getResponse.proofRecordId,
-          ),
-        };
-        return res;
-      }
-      if (getProofRequest.state === States.Done) {
-        await this.presentationProofsService.makeConnectionTrusted(
-          getProofRequest.connectionId,
-        );
-      }
-    }
-    res = {
-      statusCode: HttpStatus.OK,
-      message: 'Presentation states noted.',
-    };
-    return res;
-  }
-
-  @Version(['1'])
-  @ApiBody({ type: SendProofRequest })
-  @Post('send-presentation-request')
-  @ApiOperation({
-    summary: 'Send presentation request',
-    description:
-      'This call provides the capability to create a new presentation request bound to existing connection. It is mandatory to provide a schema for every requested attribute and attribute name in the body information of the connection. The call returns an information about proof request (proofRecordId, connectionId, credentialDefId, schemaId, theirDid, status, createdDate, updatedDate, threadId)',
-  })
-  @ApiResponse({
-    status: HttpStatus.CREATED,
-    description: 'Presentation request sent successfully',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Presentation request sent successfully': {
-            value: {
-              statusCode: 201,
-              message: 'Presentation request sent successfully',
-              data: {
-                id: 'a7ccc2f7',
-                proofRecordId: 'fb556018-1907-47c1-a6d6-c7cbca7d23b4',
-                connectionId: 'a9371aed-67ed-4448-ace0-d773e7b30e1c',
-                credentialDefId: '',
-                schemaId: '',
-                theirDid: '',
-                status: 'request-sent',
-                createdDate: '2023-03-02T13:02:43.656Z',
-                updatedDate: '2023-03-02T13:02:43.656Z',
-                threadId: '75045c1b-f0ef-4f10-831e-4e4f301333af',
-              },
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description:
-      'Find presentation request required following attributes: ( proofRecordId )',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Find presentation request required following attributes: ( proofRecordId )':
-            {
-              value: {
-                statusCode: 400,
-                message:
-                  'Find presentation request required following attributes: ( proofRecordId )',
-              },
-            },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description:
-      'Could not get schema or connection details. please try again.',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Could not get schema or connection details. please try again.': {
-            value: {
-              statusCode: 400,
-              message:
-                'Could not get schema or connection details. please try again.',
-            },
-          },
-        },
-      },
-    },
-  })
-  public async sendPresentationRequest(
-    @Body() sendProofRequest: SendProofRequest,
-    @Res() response: Response,
-  ) {
-    let res: ResponseType;
-    if (
-      !(
-        sendProofRequest.connectionId &&
-        Array.isArray(sendProofRequest.attributes) &&
-        sendProofRequest.attributes.every(
-          (i) =>
-            (typeof i.schemaId === 'string' && i.schemaId.trim().length > 0) ||
-            (typeof i.credentialDefId === 'string' &&
-              i.credentialDefId.trim().length > 0),
-        )
-      )
-    ) {
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Send presentation request required following attributes ( connectionId, attributes,schemaId or credentialDefId)', // eslint-disable-line
-      };
-      return response.status(HttpStatus.BAD_REQUEST).send(res);
-    }
-    const resp =
-      await this.presentationProofsService.sendPresentationRequest(
-        sendProofRequest,
-      );
-    logger.info(`sendPresentationRequest response ${JSON.stringify(resp)}`);
-    if (resp?.id) {
-      const sendProofRes: SendProofRequest = sendProofRequest;
-      sendProofRes.proofRecordId = resp.id;
-      sendProofRes.theirDID = resp.theirDid;
-      sendProofRes.status = resp.state;
-      response.status(HttpStatus.CREATED);
-
-      // eslint-disable-next-line max-len
-      const createPresentationRequestRes =
-        await this.presentationProofsService.createPresentationRequest(
-          // eslint-disable-line
-          sendProofRes,
-        );
-      res = {
-        statusCode: HttpStatus.CREATED,
-        message: 'Presentation request sent successfully',
-        data: {
-          ...createPresentationRequestRes,
-          threadId: resp.threadId,
-        },
-      };
-      logger.info('Presentation request send successfully');
-    } else {
-      response.status(HttpStatus.BAD_REQUEST);
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Could not get schema or connection details. please try again.',
-      };
-    }
-    return response.send(res);
-  }
-
-  @Version(['1'])
-  @ApiBody({ type: SendProofRequestBody })
-  @Post('send-out-of-band-presentation-request')
-  @ApiOperation({
-    summary: 'Send out of band presentation request',
-    description:
-      'This call provides the capability to create a new presentation request not bound to any proposal or existing connection. The call returns an information about presentation request',
-  })
-  @ApiResponse({
-    status: HttpStatus.CREATED,
-    description: 'Presentation request sent successfully',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Presentation request sent successfully': {
-            value: {
-              statusCode: 201,
-              message: 'Presentation request sent successfully',
-              data: {
-                id: 'd6667caa',
-                proofRecordId: '600dd422',
-                connectionId: '',
-                credentialDefId: '',
-                schemaId: '',
-                theirDid: '',
-                status: 'request-sent',
-                createdDate: '1970-01-01T00:00:00.934Z',
-                updatedDate: '1970-01-01T00:00:00.934Z',
-                presentationMessage:
-                  'https://serviceEndpointUrl.com:443/ocm/didcomm/?d_m=eyJAdHlwZSI6I',
-                presentationMessageShort: 'https://selfUrl.com/v1/url/1234abcd',
-              },
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description:
-      'Send presentation request required following attributes( attributes, schemaId or credentialDefinitionId )',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Send presentation request required following attributes( attributes, schemaId or credentialDefinitionId )':
-            {
-              value: {
-                statusCode: 400,
-                message:
-                  'Send presentation request required following attributes( attributes, schemaId or credentialDefinitionId )',
-              },
-            },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description: 'Could not get schema details. please try again.',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Could not get schema details. please try again.': {
-            value: {
-              statusCode: 400,
-              message: 'Could not get schema details. please try again.',
-            },
-          },
-        },
-      },
-    },
-  })
-  public async sendOutOfBandPresentationRequest(
-    @Body() sendProofRequestBody: SendProofRequestBody,
-    @Res() response: Response,
-  ) {
-    const sendProofRequest: SendProofRequest = {
-      attributes: [],
-    };
-    // sendProofRequest.credentialDefId = sendProofRequestBody.options?.credentialDefinitionId;
-
-    let res: ResponseType;
-    if (
-      !(
-        Array.isArray(sendProofRequestBody.attributes) &&
-        sendProofRequestBody.attributes.every(
-          (i) =>
-            (typeof i.schemaId === 'string' && i.schemaId.trim().length > 0) ||
-            (typeof i.credentialDefId === 'string' &&
-              i.credentialDefId.trim().length > 0),
-        )
-      )
-    ) {
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Send presentation request required following attributes( attributes, schemaId or credentialDefinitionId )',
-      };
-      return response.status(HttpStatus.BAD_REQUEST).send(res);
-    }
-    // REVIEW:
-    // const valideSchemaIdOrCredentialId = await Promise.allSettled([
-    //   this.presentationProofsService.getSchemaById(
-    //     `${sendProofRequest.schemaId}`,
-    //   ),
-    //   this.presentationProofsService.getCredentialDefinitionsById(
-    //     `${sendProofRequest.credentialDefId}`,
-    //   ),
-    // ]);
-    // logger.info(
-    //   `valideSchemaIdOrCredentialId[0].status ${valideSchemaIdOrCredentialId[0].status}`,
-    // );
-    // logger.info(
-    //   `valideSchemaIdOrCredentialId[1].status ${valideSchemaIdOrCredentialId[1].status}`,
-    // );
-    // if (
-    //   valideSchemaIdOrCredentialId[0].status !== 'fulfilled'
-    //   && valideSchemaIdOrCredentialId[1].status !== 'fulfilled'
-    // ) {
-    //   res = {
-    //     statusCode: HttpStatus.BAD_REQUEST,
-    //     message: 'Please provide a valid schema ID or credential def ID',
-    //   };
-    //   return response.status(HttpStatus.BAD_REQUEST).send(res);
-    // }
-
-    sendProofRequestBody.attributes.forEach((element) => {
-      sendProofRequest.attributes.push({
-        attributeName: element.attributeName,
-        value: element.value,
-        condition: element.condition,
-        schemaId: element.schemaId,
-        credentialDefId: element.credentialDefId,
-      });
-    });
-
-    const resp =
-      await this.presentationProofsService.sendOutOfBandPresentationRequest(
-        sendProofRequest,
-      );
-    logger.info(`agent response ${JSON.stringify(resp)}`);
-    if (resp?.proofRecord?.id) {
-      const sendProofRes: SendProofRequest = sendProofRequest;
-      sendProofRes.proofRecordId = resp.proofRecord.id;
-      sendProofRes.theirDID = resp.theirDid;
-      sendProofRes.status = resp.proofRecord.state;
-      response.status(HttpStatus.CREATED);
-      const getResult =
-        await this.presentationProofsService.createPresentationRequest(
-          sendProofRes,
-        );
-      const resResult = {
-        ...getResult,
-        presentationMessage: resp.message,
-        presentationMessageShort: resp.messageShort,
-      };
-      res = {
-        statusCode: HttpStatus.CREATED,
-        message: 'Presentation request sent successfully',
-        data: resResult,
-      };
-      logger.info('Presentation request sent successfully');
-    } else {
-      response.status(HttpStatus.BAD_REQUEST);
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message: 'Could not get schema details. please try again.',
-      };
-    }
-    return response.send(res);
-  }
-
-  @Version(['1'])
-  @ApiQuery({ name: 'type', required: true })
-  @Post('out-of-band-proof')
-  @ApiOperation({
-    summary: 'Send out of band proof',
-    description:
-      'This call provides the capability to create a new presentation request not bound to any proposal or existing connection but it creates just on type defined in attestation manager (type is bound to schema id there). The call returns an information about presentation request',
-  })
-  @ApiResponse({
-    status: HttpStatus.CREATED,
-    description: 'Presentation request sent successfully',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Presentation request sent successfully': {
-            value: {
-              statusCode: 201,
-              message: 'Presentation request sent successfully',
-              data: {
-                id: '60f38aa4',
-                proofRecordId: '852ee278',
-                connectionId: '',
-                credentialDefId: '',
-                schemaId: '',
-                theirDid: '',
-                status: 'request-sent',
-                createdDate: '2023-03-02T13:12:38.934Z',
-                updatedDate: '2023-03-02T13:12:38.934Z',
-                presentationMessage:
-                  'https://serviceEndpointUrl.com:443/ocm/didcomm/?d_m=eyJAdHlwZSI6Imh0dHBzOi8',
-                presentationMessageShort: 'https://selfUrl/v1/url/1234abcd',
-              },
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description: 'Could not get schema details. please try again.',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Could not get schema details. please try again.': {
-            value: {
-              statusCode: 400,
-              message: 'Could not get schema details. please try again.',
-            },
-          },
-        },
-      },
-    },
-  })
-  public async outOfBandProof(
-    @Query() query: { type: string },
-    @Res() response: Response,
-  ) {
-    let res: ResponseType;
-    // eslint-disable-next-line max-len
-    const typesArr = query.type.split(',');
-
-    const principalCredentialDetailPromiseArr = [];
-
-    for (let i = 0; i < typesArr.length; i += 1) {
-      principalCredentialDetailPromiseArr.push(
-        this.presentationProofsService.getCredentialsTypeDetails(typesArr[i]),
-      );
-    }
-
-    const principalCredentialDetail = await Promise.all(
-      principalCredentialDetailPromiseArr,
-    );
-    const attributes: {
-      attributeName: string;
-      schemaId: string;
-      value: '';
-      condition: '';
-    }[] = [];
-    for (let i = 0; i < principalCredentialDetail.length; i += 1) {
-      principalCredentialDetail[i].schema.attribute.forEach(
-        (member: { name: string }) => {
-          attributes.push({
-            attributeName: member.name,
-            schemaId: principalCredentialDetail[i].schema.schemaID,
-            value: '',
-            condition: '',
-          });
-        },
-      );
-    }
-
-    const sendProofRequest: SendProofRequest = {
-      attributes,
-      connectionId: '',
-      proofRecordId: '',
-    };
-    const resp =
-      await this.presentationProofsService.sendOutOfBandPresentationRequest(
-        sendProofRequest,
-      );
-    if (resp?.proofRecord?.id) {
-      const sendProofRes: SendProofRequest = sendProofRequest;
-      sendProofRes.proofRecordId = resp.proofRecord.id;
-      sendProofRes.theirDID = resp.theirDid;
-      sendProofRes.status = resp.proofRecord.state;
-      response.status(HttpStatus.CREATED);
-      const getResult =
-        await this.presentationProofsService.createPresentationRequest(
-          sendProofRes,
-        );
-      const resResult = {
-        ...getResult,
-        presentationMessage: resp.message,
-        presentationMessageShort: resp.messageShort,
-      };
-      res = {
-        statusCode: HttpStatus.CREATED,
-        message: 'Presentation request sent successfully',
-        data: resResult,
-      };
-      logger.info('Presentation request sent successfully');
-    } else {
-      response.status(HttpStatus.BAD_REQUEST);
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message: 'Could not get schema details. please try again.',
-      };
-    }
-    return response.send(res);
-  }
-
-  @Version(['1'])
-  @Post('accept-presentation/:proofRecordId')
-  @ApiOperation({
-    summary: 'Accept presentation request by proofRecordId',
-    description:
-      'Accept a presentation as prover (by sending a presentation acknowledgement message) to the connection associated with the proof record.',
-  })
-  @ApiResponse({
-    status: HttpStatus.OK,
-    description: 'Presentation accepted successfully',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Presentation accepted successfully': {
-            value: {}, // TODO: example
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description:
-      'Accept presentation request required following attributes ( proof_record_id )',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Accept presentation request required following attributes ( proof_record_id )':
-            {
-              value: {
-                statusCode: 400,
-                message:
-                  'Accept presentation request required following attributes ( proof_record_id )',
-              },
-            },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.INTERNAL_SERVER_ERROR,
-    description: 'Internal Server Error',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Internal Server Error': {
-            value: {
-              statusCode: 500,
-              timestamp: '1970-01-01T00:00:00.891Z',
-              message: 'Something went wrong: Lorem Ipsum',
-            },
-          },
-        },
-      },
-    },
-  })
-  public async acceptPresentation(
-    @Param() params: AcceptPresentationDto,
-    @Res() response: Response,
-  ) {
-    let res: ResponseType;
-    if (!params.proofRecordId) {
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Accept presentation request required following attributes ( proof_record_id )',
-      };
-      return response.status(HttpStatus.BAD_REQUEST).send(res);
-    }
-    logger.info('Presentation accepted successfully');
-    res = {
-      statusCode: HttpStatus.OK,
-      message: 'Presentation accepted successfully',
-      data: await this.presentationProofsService.acceptPresentation(
-        params.proofRecordId,
-      ),
-    };
-    return response.status(HttpStatus.OK).send(res);
-  }
-
-  @Version(['1'])
-  @Post('accept-proof-request/:proofRecordId')
-  @ApiOperation({
-    summary: 'Accept proof request by proofRecordId',
-    description:
-      'Accept a presentation request as prover (by sending a presentation message) to the connection associated with the proof record.',
-  })
-  @ApiResponse({
-    status: HttpStatus.OK,
-    description: 'Request accepted successfully',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Request accepted successfully': {
-            value: {
-              statusCode: 200,
-              message: 'Request accepted successfully',
-              data: {
-                _tags: {
-                  threadId: '6b5c57b3',
-                  state: 'request-received',
-                  connectionId: '653b8cdc',
-                },
-                metadata: {},
-                id: '19c5269f',
-                createdAt: '1970-01-01T00:00:00.498Z',
-                requestMessage: {
-                  '@type':
-                    'https://didcomm.org/present-proof/1.0/request-presentation',
-                  '@id': '6b5c57b3',
-                  comment: 'Proof Presenation',
-                  'request_presentations~attach': [
-                    {
-                      '@id': 'libindy-request-presentation-0',
-                      'mime-type': 'application/json',
-                      data: {
-                        base64: 'eyJuYW=',
-                      },
-                    },
-                  ],
-                },
-                state: 'presentation-sent',
-                connectionId: '653b8cdc',
-                threadId: '6b5c57b3',
-                presentationMessage: {
-                  '@type': 'https://didcomm.org/present-proof/1.0/presentation',
-                  '@id': 'c1089096',
-                  'presentations~attach': [
-                    {
-                      '@id': 'libindy-presentation-0',
-                      'mime-type': 'application/json',
-                      data: {
-                        base64: 'eyJwcm9vZ',
-                      },
-                    },
-                  ],
-                  '~thread': {
-                    thid: '6b5c57b3',
-                  },
-                },
-              },
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description:
-      'Accept proof request required following attributes ( proofRecordId )',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Accept proof request required following attributes ( proofRecordId )':
-            {
-              value: {
-                statusCode: 400,
-                timestamp: '1970-01-01T00:00:00.891Z',
-                message:
-                  'Accept proof request required following attributes ( proofRecordId )',
-              },
-            },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.INTERNAL_SERVER_ERROR,
-    description: 'Internal Server Error',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Internal Server Error': {
-            value: {
-              statusCode: 500,
-              timestamp: '1970-01-01T00:00:00.891Z',
-              message: 'Something went wrong: Lorem Ipsum',
-            },
-          },
-        },
-      },
-    },
-  })
-  public async acceptProofRequest(
-    @Param() params: AcceptProofRequestDto,
-    @Res() response: Response,
-  ) {
-    let res: ResponseType;
-    if (!params.proofRecordId) {
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Accept proof request required following attributes ( proofRecordId )',
-      };
-      return response.status(HttpStatus.BAD_REQUEST).send(res);
-    }
-    logger.info('Request accepted successfully');
-    res = {
-      statusCode: HttpStatus.OK,
-      message: 'Request accepted successfully',
-      data: await this.presentationProofsService.acceptProofRequest(
-        params.proofRecordId,
-      ),
-    };
-    return response.status(HttpStatus.OK).send(res);
-  }
-
-  @Version(['1'])
-  @Post('delete-proof-request/:proofRecordId')
-  @ApiOperation({
-    summary: 'Delete proof request by proofRecordId',
-    description: 'Deletes a proofRecord in the proof repository.',
-  })
-  @ApiResponse({
-    status: HttpStatus.OK,
-    description: 'Delete proof request',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Delete proof request': {
-            value: {
-              statusCode: 200,
-              message: 'Proof request deleted successfully',
-              data: '',
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description:
-      'Delete proof request required following attributes ( proofRecordId )',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Delete proof request required following attributes ( proofRecordId )':
-            {
-              value: {
-                statusCode: 400,
-                timestamp: '1970-01-01T00:00:00.891Z',
-                message:
-                  'Delete proof request required following attributes ( proofRecordId )',
-              },
-            },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.INTERNAL_SERVER_ERROR,
-    description: 'Internal Server Error',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Internal Server Error': {
-            value: {
-              statusCode: 500,
-              timestamp: '1970-01-01T00:00:00.891Z',
-              message: 'Something went wrong: Lorem Ipsum',
-            },
-          },
-        },
-      },
-    },
-  })
-  public async deleteProofRequest(
-    @Param() params: AcceptProofRequestDto,
-    @Res() response: Response,
-  ) {
-    let res: ResponseType;
-    if (!params.proofRecordId) {
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Delete proof request required following attributes ( proofRecordId )',
-      };
-      return response.status(HttpStatus.BAD_REQUEST).send(res);
-    }
-    logger.info('Proof request deleting');
-    res = {
-      statusCode: HttpStatus.OK,
-      message: 'Proof request deleted successfully',
-      data: await this.presentationProofsService.deleteProofRequest(
-        params.proofRecordId,
-      ),
-    };
-    return response.status(HttpStatus.OK).send(res);
-  }
-
-  @Version(['1'])
-  @Post('decline-proof-request/:proofRecordId')
-  @ApiOperation({
-    summary: 'Decline proof request by proofRecordId',
-    description:
-      'Decline proof request as prover (by sending a presentation message) to the connection associated with the proof record.',
-  })
-  @ApiResponse({
-    status: HttpStatus.OK,
-    description: 'Request declined successfully',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Request declined successfully': {
-            value: {
-              statusCode: 200,
-              message: 'Request declined successfully',
-              data: {
-                _tags: {
-                  threadId: '6b5c57b3',
-                  state: 'request-received',
-                  connectionId: '653b8cdc',
-                },
-                metadata: {},
-                id: '19c5269f',
-                createdAt: '1970-01-01T00:00:00.498Z',
-                requestMessage: {
-                  '@type':
-                    'https://didcomm.org/present-proof/1.0/request-presentation',
-                  '@id': '6b5c57b3',
-                  comment: 'Proof Presenation',
-                  'request_presentations~attach': [
-                    {
-                      '@id': 'libindy-request-presentation-0',
-                      'mime-type': 'application/json',
-                      data: {
-                        base64: 'eyJuYW=',
-                      },
-                    },
-                  ],
-                },
-                state: 'presentation-sent',
-                connectionId: '653b8cdc',
-                threadId: '6b5c57b3',
-                presentationMessage: {
-                  '@type': 'https://didcomm.org/present-proof/1.0/presentation',
-                  '@id': 'c1089096',
-                  'presentations~attach': [
-                    {
-                      '@id': 'libindy-presentation-0',
-                      'mime-type': 'application/json',
-                      data: {
-                        base64: 'eyJwcm9vZ',
-                      },
-                    },
-                  ],
-                  '~thread': {
-                    thid: '6b5c57b3',
-                  },
-                },
-              },
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.BAD_REQUEST,
-    description:
-      'Accept proof request required following attributes ( proofRecordId )',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Accept proof request required following attributes ( proofRecordId )':
-            {
-              value: {
-                statusCode: 400,
-                timestamp: '1970-01-01T00:00:00.891Z',
-                message:
-                  'Accept proof request required following attributes ( proofRecordId )',
-              },
-            },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.INTERNAL_SERVER_ERROR,
-    description: 'Internal Server Error',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Internal Server Error': {
-            value: {
-              statusCode: 500,
-              timestamp: '1970-01-01T00:00:00.891Z',
-              message: 'Something went wrong: Lorem Ipsum',
-            },
-          },
-        },
-      },
-    },
-  })
-  public async declineProofRequest(
-    @Param() params: AcceptProofRequestDto,
-    @Res() response: Response,
-  ) {
-    let res: ResponseType;
-    if (!params.proofRecordId) {
-      res = {
-        statusCode: HttpStatus.BAD_REQUEST,
-        message:
-          'Decline proof request required following attributes ( proofRecordId )',
-      };
-      return response.status(HttpStatus.BAD_REQUEST).send(res);
-    }
-    logger.info('Request decline in progress...');
-    res = await this.presentationProofsService.declineProofRequest(
-      params.proofRecordId,
-    );
-    return response.status(HttpStatus.OK).send(res);
-  }
-
-  @Version(['1'])
-  @ApiQuery({ name: 'threadId', required: false })
-  @Get('agent-proofs')
-  @ApiOperation({
-    summary: 'Fetch all proofs directly from the agent',
-    description:
-      'This call provides the capability to get all proof records directly from agent. Pagination and sorting does not implemented in that version of Aries Framework Javascript',
-  })
-  @ApiResponse({
-    status: HttpStatus.OK,
-    description: 'Proofs fetched successfully',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Proofs fetched successfully': {
-            value: {
-              statusCode: 200,
-              message: 'Proofs fetched successfully',
-              data: [
-                {
-                  _tags: {
-                    threadId: '75045c1b',
-                    state: 'request-received',
-                    connectionId: 'e6d30380',
-                  },
-                  metadata: {},
-                  id: '6f776996',
-                  createdAt: '1970-01-01T00:00:00.640Z',
-                  requestMessage: {
-                    '@type':
-                      'https://didcomm.org/present-proof/1.0/request-presentation',
-                    '@id': '75045c1b',
-                    comment: 'Proof Presenation',
-                    'request_presentations~attach': [
-                      {
-                        '@id': 'libindy-request-presentation-0',
-                        'mime-type': 'application/json',
-                        data: {
-                          base64: 'eyJ',
-                        },
-                      },
-                    ],
-                  },
-                  state: 'request-received',
-                  connectionId: 'e6d30380',
-                  threadId: '75045c1b',
-                },
-                {
-                  _tags: {
-                    connectionId: 'a9371aed',
-                    state: 'request-sent',
-                    threadId: '75045c1b',
-                  },
-                  metadata: {},
-                  id: 'fb556018',
-                  createdAt: '1970-01-01T00:00:00.568Z',
-                  requestMessage: {
-                    '@type':
-                      'https://didcomm.org/present-proof/1.0/request-presentation',
-                    '@id': '75045c1b',
-                    comment: 'Proof Presenation',
-                    'request_presentations~attach': [
-                      {
-                        '@id': 'libindy-request-presentation-0',
-                        'mime-type': 'application/json',
-                        data: {
-                          base64: 'eyJ',
-                        },
-                      },
-                    ],
-                  },
-                  state: 'request-sent',
-                  connectionId: 'a9371aed',
-                  threadId: '75045c1b',
-                },
-              ],
-            },
-          },
-        },
-      },
-    },
-  })
-  @ApiResponse({
-    status: HttpStatus.INTERNAL_SERVER_ERROR,
-    description: 'Internal Server Error',
-    content: {
-      'application/json': {
-        schema: {},
-        examples: {
-          'Internal Server Error': {
-            value: {
-              statusCode: 500,
-              timestamp: '1970-01-01T00:00:00.891Z',
-              message: 'Something went wrong: Lorem Ipsum',
-            },
-          },
-        },
-      },
-    },
-  })
-  public async getAllProofRequest(
-    @Query() query: { threadId: string },
-    @Res() response: Response,
-  ) {
-    const res: ResponseType = {
-      statusCode: HttpStatus.OK,
-      message: 'Proofs fetched successfully',
-      data: await this.presentationProofsService.getAllProofRequest(
-        query.threadId,
-      ),
-    };
-    return response.status(HttpStatus.OK).send(res);
-  }
-
-  @MessagePattern({
-    endpoint: `${NATSServices.SERVICE_NAME}/getPresentProofs`,
-  })
-  public async getPresentProofs(data: GetPresentProofsDto) {
-    return this.presentationProofsService.getPresentProofs(data);
-  }
-
-  @Version(['1'])
-  @Get('url/:id')
-  @ApiOperation({
-    summary: 'Get full url from short url id',
-    description: 'Get full url from short url id',
-  })
-  public async redirectToOriginalUrl(
-    @Param('id') id: string,
-    @Res() response: Response,
-  ) {
-    const result = await this.presentationProofsService.findUrlByShortUrlId(id);
-    if (!result) {
-      throw new Error('Not found');
-    }
-    response.writeHead(302, {
-      location: result.originalUrl,
-    });
-    return response.end();
-  }
-}
diff --git a/apps/proof-manager/src/presentationProof/entities/accept-presentation.dto.ts b/apps/proof-manager/src/presentationProof/entities/accept-presentation.dto.ts
deleted file mode 100644
index d4c498c..0000000
--- a/apps/proof-manager/src/presentationProof/entities/accept-presentation.dto.ts
+++ /dev/null
@@ -1,8 +0,0 @@
-import { ApiProperty } from '@nestjs/swagger';
-import { IsString } from 'class-validator';
-
-export default class AcceptPresentationDto {
-  @IsString()
-  @ApiProperty()
-  public proofRecordId: string;
-}
diff --git a/apps/proof-manager/src/presentationProof/entities/accept-proof-request.dto.ts b/apps/proof-manager/src/presentationProof/entities/accept-proof-request.dto.ts
deleted file mode 100644
index b232485..0000000
--- a/apps/proof-manager/src/presentationProof/entities/accept-proof-request.dto.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { IsString } from 'class-validator';
-
-export default class AcceptProofRequestDto {
-  @IsString()
-  public proofRecordId: string;
-}
diff --git a/apps/proof-manager/src/presentationProof/entities/find-proof-presentation.dto.ts b/apps/proof-manager/src/presentationProof/entities/find-proof-presentation.dto.ts
deleted file mode 100644
index 7b8dead..0000000
--- a/apps/proof-manager/src/presentationProof/entities/find-proof-presentation.dto.ts
+++ /dev/null
@@ -1,39 +0,0 @@
-import { IsDateString, IsNumber, IsString } from 'class-validator';
-
-export default class FindProofPresentationDto {
-  @IsNumber()
-  public page: string;
-
-  @IsNumber()
-  public pageSize: string;
-
-  @IsString()
-  public proofRecordId: string;
-
-  @IsString()
-  public connectionId: string;
-
-  @IsString()
-  public credentialDefId: string;
-
-  @IsString()
-  public schemaId: string;
-
-  @IsString()
-  public theirDid: string;
-
-  @IsString()
-  public status: string;
-
-  @IsDateString()
-  public createdDateStart: string;
-
-  @IsDateString()
-  public createdDateEnd: string;
-
-  @IsDateString()
-  public updatedDateStart: string;
-
-  @IsDateString()
-  public updatedDateEnd: string;
-}
diff --git a/apps/proof-manager/src/presentationProof/entities/get-present-proofs.dto.ts b/apps/proof-manager/src/presentationProof/entities/get-present-proofs.dto.ts
deleted file mode 100644
index faa8f59..0000000
--- a/apps/proof-manager/src/presentationProof/entities/get-present-proofs.dto.ts
+++ /dev/null
@@ -1,6 +0,0 @@
-import { IsString } from 'class-validator';
-
-export default class GetPresentProofsDto {
-  @IsString()
-  public connectionId: string;
-}
diff --git a/apps/proof-manager/src/presentationProof/entities/get-proof-request.dto.ts b/apps/proof-manager/src/presentationProof/entities/get-proof-request.dto.ts
deleted file mode 100644
index b7d4f09..0000000
--- a/apps/proof-manager/src/presentationProof/entities/get-proof-request.dto.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { IsString } from 'class-validator';
-
-export default class GetProofRequest {
-  @IsString()
-  public state: string;
-
-  @IsString()
-  public id: string;
-
-  @IsString()
-  public connectionId: string;
-
-  public isVerified?: boolean;
-}
diff --git a/apps/proof-manager/src/presentationProof/entities/membership-credential.dto.ts b/apps/proof-manager/src/presentationProof/entities/membership-credential.dto.ts
deleted file mode 100644
index 48e3521..0000000
--- a/apps/proof-manager/src/presentationProof/entities/membership-credential.dto.ts
+++ /dev/null
@@ -1,12 +0,0 @@
-import { IsString } from 'class-validator';
-
-export default class MembershipCredentialDto {
-  @IsString()
-  public connectionId: string;
-
-  public attributes: {
-    attributeName: string;
-    schemaId?: string;
-    credentialDefId?: string;
-  }[];
-}
diff --git a/apps/proof-manager/src/presentationProof/entities/presentationSubscribeEndPoint.entity.ts b/apps/proof-manager/src/presentationProof/entities/presentationSubscribeEndPoint.entity.ts
deleted file mode 100644
index c6dabeb..0000000
--- a/apps/proof-manager/src/presentationProof/entities/presentationSubscribeEndPoint.entity.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { IsString, IsNotEmpty } from 'class-validator';
-
-export default class PresentationSubscriptionEndpointDto {
-  @IsString()
-  @IsNotEmpty()
-  public proofRecordId: string;
-
-  @IsString()
-  @IsNotEmpty()
-  public status: string;
-}
diff --git a/apps/proof-manager/src/presentationProof/entities/send-proof-request-body.dto.ts b/apps/proof-manager/src/presentationProof/entities/send-proof-request-body.dto.ts
deleted file mode 100644
index a952a47..0000000
--- a/apps/proof-manager/src/presentationProof/entities/send-proof-request-body.dto.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import { ApiProperty } from '@nestjs/swagger';
-import { IsString } from 'class-validator';
-
-import GetProofRequest from './get-proof-request.dto.js';
-
-export default class SendProofRequestBody {
-  @ApiProperty({ example: 'comments' })
-  public comment?: string;
-
-  @IsString()
-  public status?: string;
-
-  @ApiProperty({ example: 'WgWxqztrNooG92RXvxSTWv:3:CL:20:tag' })
-  @IsString()
-  public schemaId: string;
-
-  @IsString()
-  public theirDID?: string;
-
-  @IsString()
-  public presentationMessage?: string;
-
-  @ApiProperty({
-    example: {
-      type: 'Aries1.0',
-      credentialDefinitionId: 'credentialDefinitionId',
-    },
-  })
-  public options?: {
-    type: string;
-    credentialDefinitionId: string;
-  };
-
-  @IsString()
-  public invitation?: GetProofRequest;
-
-  @ApiProperty({ example: ['attributeName'] })
-  public attributes: [
-    {
-      attributeName: string;
-      schemaId: string;
-      credentialDefId: string;
-      value: string;
-      condition: string;
-    },
-  ];
-}
diff --git a/apps/proof-manager/src/presentationProof/entities/send-proof-request.dto.ts b/apps/proof-manager/src/presentationProof/entities/send-proof-request.dto.ts
deleted file mode 100644
index 5f14fd9..0000000
--- a/apps/proof-manager/src/presentationProof/entities/send-proof-request.dto.ts
+++ /dev/null
@@ -1,44 +0,0 @@
-import { ApiProperty } from '@nestjs/swagger';
-import { IsString } from 'class-validator';
-
-import GetProofRequest from './get-proof-request.dto.js';
-
-export default class SendProofRequest {
-  @ApiProperty({ example: 'comments' })
-  public comment?: string;
-
-  @ApiProperty({ example: '3fa85f64-5717-4562-b3fc-2c963f66afa6' })
-  public connectionId?: string;
-
-  @IsString()
-  public proofRecordId?: string;
-
-  @IsString()
-  public status?: string;
-
-  @IsString()
-  public theirDID?: string;
-
-  @IsString()
-  public presentationMessage?: string;
-
-  @IsString()
-  public invitation?: GetProofRequest;
-
-  @ApiProperty({
-    example: [
-      {
-        attributeName: 'attributeName',
-        schemaId: 'schemaId',
-        credentialDefId: 'credentialDefId',
-      },
-    ],
-  })
-  public attributes: {
-    attributeName: string;
-    schemaId?: string;
-    credentialDefId?: string;
-    value: string;
-    condition: string;
-  }[];
-}
diff --git a/apps/proof-manager/src/presentationProof/module.spec.ts b/apps/proof-manager/src/presentationProof/module.spec.ts
deleted file mode 100644
index 4d9b6af..0000000
--- a/apps/proof-manager/src/presentationProof/module.spec.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import PresentationProofsModule from './module';
-
-describe('Check if the module is working', () => {
-  it('should be defined', () => {
-    expect(PresentationProofsModule).toBeDefined();
-  });
-});
diff --git a/apps/proof-manager/src/presentationProof/module.ts b/apps/proof-manager/src/presentationProof/module.ts
deleted file mode 100644
index 33e0f41..0000000
--- a/apps/proof-manager/src/presentationProof/module.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-import { HttpModule } from '@nestjs/axios';
-import { Module } from '@nestjs/common';
-import { ClientsModule, Transport } from '@nestjs/microservices';
-
-import NatsClientService from '../client/nats.client.js';
-import RestClientService from '../client/rest.client.js';
-import { NATSServices } from '../common/constants.js';
-import config from '../config/config.js';
-import PrismaService from '../prisma/prisma.service.js';
-
-import PresentationProofsController from './controller/controller.js';
-import PresentationProofsService from './services/service.js';
-
-@Module({
-  imports: [
-    HttpModule,
-    ClientsModule.register([
-      {
-        name: NATSServices.SERVICE_NAME,
-        transport: Transport.NATS,
-        options: {
-          servers: [config().nats.url as string],
-        },
-      },
-    ]),
-  ],
-  controllers: [PresentationProofsController],
-  providers: [
-    PresentationProofsService,
-    PrismaService,
-    NatsClientService,
-    RestClientService,
-  ],
-})
-export default class PresentationProofsModule {}
diff --git a/apps/proof-manager/src/presentationProof/repository/presentationProof.respository.ts b/apps/proof-manager/src/presentationProof/repository/presentationProof.respository.ts
deleted file mode 100644
index 8fd00b5..0000000
--- a/apps/proof-manager/src/presentationProof/repository/presentationProof.respository.ts
+++ /dev/null
@@ -1,71 +0,0 @@
-import type { Prisma } from '@prisma/client';
-
-import { Injectable } from '@nestjs/common';
-
-import PrismaService from '../../prisma/prisma.service.js';
-
-@Injectable()
-export default class PresentationProofRepository {
-  public constructor(private readonly prismaService: PrismaService) {}
-
-  public async createPresentationProof(data: Prisma.ProofCreateInput) {
-    return this.prismaService.proof.create({
-      data,
-    });
-  }
-
-  public async updatePresentationStatus(params: {
-    where: Prisma.ProofWhereUniqueInput;
-    data: Prisma.ProofUpdateInput;
-  }) {
-    const { where, data } = params;
-    return this.prismaService.proof.update({
-      data,
-      where,
-    });
-  }
-
-  public async findProofPresentation(params: {
-    skip?: number;
-    take?: number;
-    cursor?: Prisma.ProofWhereUniqueInput;
-    where?: Prisma.ProofWhereInput;
-    orderBy?: Prisma.ProofOrderByWithRelationInput;
-  }) {
-    const { skip, take, cursor, where, orderBy } = params;
-    return this.prismaService.$transaction([
-      this.prismaService.proof.count({
-        where,
-      }),
-      this.prismaService.proof.findMany({
-        skip,
-        take,
-        cursor,
-        where,
-        orderBy,
-      }),
-    ]);
-  }
-
-  public async deleteProofRequest(proofRecordId: string) {
-    return this.prismaService.proof.delete({
-      where: { proofRecordId },
-    });
-  }
-
-  public async createShortUrl(originalUrl: string) {
-    return this.prismaService.shortUrl.create({
-      data: {
-        originalUrl,
-      },
-    });
-  }
-
-  public async getShortUrl(id: string) {
-    return this.prismaService.shortUrl.findUnique({
-      where: {
-        id,
-      },
-    });
-  }
-}
diff --git a/apps/proof-manager/src/presentationProof/services/service.spec.ts b/apps/proof-manager/src/presentationProof/services/service.spec.ts
deleted file mode 100644
index d82d22e..0000000
--- a/apps/proof-manager/src/presentationProof/services/service.spec.ts
+++ /dev/null
@@ -1,473 +0,0 @@
-/* eslint-disable @typescript-eslint/no-explicit-any */
-import type MembershipCredentialDto from '../entities/membership-credential.dto.js';
-import type SendProofRequest from '../entities/send-proof-request.dto.js';
-import type { TestingModule } from '@nestjs/testing';
-
-import { HttpModule } from '@nestjs/axios';
-import { ConfigModule } from '@nestjs/config';
-import { ClientsModule, Transport } from '@nestjs/microservices';
-import { Test } from '@nestjs/testing';
-
-import NatsClientService from '../../client/nats.client.js';
-import RestClientService from '../../client/rest.client.js';
-import { NATSServices } from '../../common/constants.js';
-import PrismaService from '../../prisma/prisma.service.js';
-
-import PresentationProofsService from './service.js';
-
-describe.skip('ConnectionsService', () => {
-  let service: PresentationProofsService;
-  let prismaService: PrismaService;
-  let natsClient: NatsClientService;
-  let restClient: RestClientService;
-  beforeEach(async () => {
-    const module: TestingModule = await Test.createTestingModule({
-      imports: [
-        ConfigModule,
-        HttpModule,
-        ClientsModule.register([
-          {
-            name: NATSServices.SERVICE_NAME,
-            transport: Transport.NATS,
-          },
-        ]),
-      ],
-      providers: [
-        PresentationProofsService,
-        PrismaService,
-        NatsClientService,
-        RestClientService,
-      ],
-      exports: [PrismaService],
-    }).compile();
-    prismaService = module.get<PrismaService>(PrismaService);
-    service = module.get<PresentationProofsService>(PresentationProofsService);
-    natsClient = module.get<NatsClientService>(NatsClientService);
-    restClient = module.get<RestClientService>(RestClientService);
-  });
-
-  it('should be defined', () => {
-    expect(service).toBeDefined();
-  });
-
-  describe('find proof presentation function', () => {
-    it('find proof presentation by ID', async () => {
-      const getAgentDetails: any = {
-        statusCode: 200,
-        message: 'Agent',
-        data: {
-          id: '15b9c7d6-8bc9-47cb-b78e-314e6c12bf16',
-          participant_id: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          agent_url: 'http://3.111.77.38:4001',
-          invitation_url:
-            'http://3.111.77.38:4001?c_i=eyJAdHlwZSI6ImRpZDpzb3Y6QnpDYnNOWWhNcmpIaXFaRFRVQVNIZztzcGVjL2Nvbm5lY3Rpb25zLzEuMC9pbnZpdGF0aW9uIiwiQGlkIjoiZGVhMGY1NTYtOWM4MS00OTcyLTkxZjktODhmNWQ3MDNlNDRiIiwibGFiZWwiOiJPcmdfT25lIiwicmVjaXBpZW50S2V5cyI6WyI0eFFSMVVCUXV0TGg5S2tFc1lLZ2FZNDg5VEFtMUtRTVREcnR4WEdQNnNQUiJdLCJzZXJ2aWNlRW5kcG9pbnQiOiJodHRwOi8vMy4xMTEuNzcuMzg6NDAwMSIsInJvdXRpbmdLZXlzIjpbXX0',
-          public_did: 'Knwz4KG97ta6EnC5BT7uH3',
-          wallet_name: 'Org_One',
-          service_endpoint: 'http://3.111.77.38:4000',
-          status: true,
-          created_by: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          created_date: '2022-04-14T16:33:14.152Z',
-          updated_by: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          updated_date: '2022-04-26T06:03:32.178Z',
-        },
-      };
-
-      const result: any = {
-        _tags: {
-          connectionId: 'b6724f85-a633-43ee-9c1c-736eaccbb6f9',
-          state: 'request-sent',
-          threadId: '34881067-b9fc-49a4-814d-dee4668b4f90',
-        },
-        metadata: {},
-        id: '117631fe-06c8-4b2c-9132-9e9f775709d8',
-        createdAt: '2022-04-26T08:18:19.206Z',
-        requestMessage: {
-          '@type': 'https://didcomm.org/present-proof/1.0/request-presentation',
-          '@id': '34881067-b9fc-49a4-814d-dee4668b4f90',
-          comment: 'Gaia-x Test',
-          'request_presentations~attach': [
-            {
-              '@id': 'libindy-request-presentation-0',
-              'mime-type': 'application/json',
-              data: {
-                base64:
-                  'eyJuYW1lIjoiUHJvb2YgUmVxdWVzdCIsInZlcnNpb24iOiJQcm9vZiBSZXF1ZXN0Iiwibm9uY2UiOiIxMjM4NzU3NTMwMTU2IiwicmVxdWVzdGVkX2F0dHJpYnV0ZXMiOnsiYWRkaXRpb25hbFByb3AxIjp7Im5hbWVzIjpbImVtYWlsIiwiaXNzdWVyRElEIl0sInJlc3RyaWN0aW9ucyI6W3siY3JlZF9kZWZfaWQiOiJLbnd6NEtHOTd0YTZFbkM1QlQ3dUgzOjM6Q0w6MjQxOTAxOmdhaWEteCBwcmluY2lwYWwgbWVtYmVyIGNyZWRlbnRpYWwgMC4yIn1dfX0sInJlcXVlc3RlZF9wcmVkaWNhdGVzIjp7fX0=',
-              },
-            },
-          ],
-        },
-        state: 'request-sent',
-        connectionId: 'b6724f85-a633-43ee-9c1c-736eaccbb6f9',
-        threadId: '34881067-b9fc-49a4-814d-dee4668b4f90',
-      };
-      jest
-        .spyOn(natsClient, 'getConnectionById')
-        .mockResolvedValueOnce(getAgentDetails);
-
-      jest.spyOn(restClient, 'get').mockResolvedValueOnce(result);
-
-      const res: any = await service.findProofByProofRecordId(
-        '117631fe-06c8-4b2c-9132-9e9f775709d8',
-      );
-
-      expect(res).toStrictEqual(result);
-    });
-
-    it('find connections by participant Id and status', async () => {
-      const repositoryResult: any = [
-        2,
-        [
-          {
-            id: '77e98b6d-cbd0-41e4-b878-8161888ff489',
-            proof_record_id: '698fa724-675b-437d-bee9-b9e86a520572',
-            participant_id: '66398cf4-e14d-4d92-9dc4-b40a48ae97dd',
-            connectionId: '',
-            credential_def_id:
-              'S2YLfsoaWyePckkhLDqn4j:3:CL:183415:gaia-x test new test',
-            schemaId: '',
-            their_did: '',
-            status: 'request-sent',
-            created_date: '2022-04-13T13:14:10.057Z',
-            updated_date: '2022-04-13T13:14:10.057Z',
-          },
-          {
-            id: 'c02f4723-510a-4966-b3fa-de7ef6d8f1aa',
-            proof_record_id: 'ab0b3681-eccb-4c5d-9c2f-4dabc1828255',
-            participant_id: '66398cf4-e14d-4d92-9dc4-b40a48ae97dd',
-            connectionId: 'b213f9bd-3774-40dd-8f1f-085950c10c30',
-            credential_def_id:
-              'TP6CJhQ9xuPnTPpVu1kinR:3:CL:221970:gaia-x test sprint 4',
-            schemaId: '',
-            their_did: '',
-            status: 'request-sent',
-            created_date: '2022-04-08T12:53:46.193Z',
-            updated_date: '2022-04-08T12:53:46.196Z',
-          },
-        ],
-      ];
-
-      const result: any = [
-        2,
-        [
-          {
-            id: '77e98b6d-cbd0-41e4-b878-8161888ff489',
-            proof_record_id: '698fa724-675b-437d-bee9-b9e86a520572',
-            participant_id: '66398cf4-e14d-4d92-9dc4-b40a48ae97dd',
-            connectionId: '',
-            credential_def_id:
-              'S2YLfsoaWyePckkhLDqn4j:3:CL:183415:gaia-x test new test',
-            schemaId: '',
-            their_did: '',
-            status: 'request-sent',
-            created_date: '2022-04-13T13:14:10.057Z',
-            updated_date: '2022-04-13T13:14:10.057Z',
-          },
-          {
-            id: 'c02f4723-510a-4966-b3fa-de7ef6d8f1aa',
-            proof_record_id: 'ab0b3681-eccb-4c5d-9c2f-4dabc1828255',
-            participant_id: '66398cf4-e14d-4d92-9dc4-b40a48ae97dd',
-            connectionId: 'b213f9bd-3774-40dd-8f1f-085950c10c30',
-            credential_def_id:
-              'TP6CJhQ9xuPnTPpVu1kinR:3:CL:221970:gaia-x test sprint 4',
-            schemaId: '',
-            their_did: '',
-            status: 'request-sent',
-            created_date: '2022-04-08T12:53:46.193Z',
-            updated_date: '2022-04-08T12:53:46.196Z',
-          },
-        ],
-      ];
-      jest
-        .spyOn(prismaService, '$transaction')
-        .mockResolvedValueOnce(repositoryResult);
-
-      const res: any = await service.findProofPresentation(0, 0);
-
-      expect(res).toStrictEqual(result);
-    });
-  });
-
-  describe('create presentation request function', () => {
-    it('create presentation request', async () => {
-      const serviceDto: any = [
-        {
-          proof_record_id: '698fa724-675b-437d-bee9-b9e86a520572',
-          participant_id: '66398cf4-e14d-4d92-9dc4-b40a48ae97dd',
-          connectionId: '',
-          credential_def_id:
-            'S2YLfsoaWyePckkhLDqn4j:3:CL:183415:gaia-x test new test',
-          schemaId: '',
-          status: 'request-sent',
-          created_date: '2022-04-13T13:14:10.057Z',
-          updated_date: '2022-04-13T13:14:10.057Z',
-        },
-      ];
-
-      const repositoryResult: any = {
-        id: 'c7e06b9e-d796-4a54-b8f2-9746d3188c97',
-        proof_record_id: '117631fe-06c8-4b2c-9132-9e9f775709d8',
-        participant_id: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        connectionId: 'b6724f85-a633-43ee-9c1c-736eaccbb6f9',
-        credential_def_id:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        schemaId: '',
-        their_did: '',
-        status: 'request-sent',
-        created_date: '2022-04-26T08:18:18.644Z',
-        updated_date: '2022-04-26T08:18:18.646Z',
-      };
-
-      const result: any = {
-        id: 'c7e06b9e-d796-4a54-b8f2-9746d3188c97',
-        proof_record_id: '117631fe-06c8-4b2c-9132-9e9f775709d8',
-        participant_id: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        connectionId: 'b6724f85-a633-43ee-9c1c-736eaccbb6f9',
-        credential_def_id:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        schemaId: '',
-        their_did: '',
-        status: 'request-sent',
-        created_date: '2022-04-26T08:18:18.644Z',
-        updated_date: '2022-04-26T08:18:18.646Z',
-      };
-
-      jest
-        .spyOn(prismaService.proof, 'create')
-        .mockResolvedValueOnce(repositoryResult);
-
-      const res: any = await service.createPresentationRequest(serviceDto);
-      expect(res).toStrictEqual(result);
-    });
-  });
-
-  describe('send presentation request function', () => {
-    it('send presentation request', async () => {
-      const serviceDto: SendProofRequest = {
-        comment: 'Gaia-x Test',
-        attributes: [
-          {
-            attributeName: 'email',
-            value: '',
-            condition: '',
-          },
-          {
-            attributeName: 'issuerDID',
-            value: '',
-            condition: '',
-          },
-        ],
-        credentialDefId:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        connectionId: 'b6724f85-a633-43ee-9c1c-736eaccbb6f9',
-        participantId: '',
-        proofRecordId: '',
-      };
-
-      const getAgentDetails: any = {
-        statusCode: 200,
-        message: 'Agent',
-        data: {
-          id: '15b9c7d6-8bc9-47cb-b78e-314e6c12bf16',
-          participant_id: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          agent_url: 'http://3.111.77.38:4001',
-          invitation_url:
-            'http://3.111.77.38:4001?c_i=eyJAdHlwZSI6ImRpZDpzb3Y6QnpDYnNOWWhNcmpIaXFaRFRVQVNIZztzcGVjL2Nvbm5lY3Rpb25zLzEuMC9pbnZpdGF0aW9uIiwiQGlkIjoiZGVhMGY1NTYtOWM4MS00OTcyLTkxZjktODhmNWQ3MDNlNDRiIiwibGFiZWwiOiJPcmdfT25lIiwicmVjaXBpZW50S2V5cyI6WyI0eFFSMVVCUXV0TGg5S2tFc1lLZ2FZNDg5VEFtMUtRTVREcnR4WEdQNnNQUiJdLCJzZXJ2aWNlRW5kcG9pbnQiOiJodHRwOi8vMy4xMTEuNzcuMzg6NDAwMSIsInJvdXRpbmdLZXlzIjpbXX0',
-          public_did: 'Knwz4KG97ta6EnC5BT7uH3',
-          wallet_name: 'Org_One',
-          service_endpoint: 'http://3.111.77.38:4000',
-          status: true,
-          created_by: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          created_date: '2022-04-14T16:33:14.152Z',
-          updated_by: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          updated_date: '2022-04-26T06:03:32.178Z',
-        },
-      };
-
-      const natsConnectionIdResponce: any = {
-        id: '480f4738-3d34-4b80-8160-d59e7ad91b52',
-        connectionId: 'b6724f85-a633-43ee-9c1c-736eaccbb6f9',
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        status: 'complete',
-        participantDid: 'SQVgKy9CHSYN2TLRsg999E',
-        theirDid: '4D9hPSoWZLCkrCr57pqMqs',
-        theirLabel: 'Org_Two',
-        createdDate: '2022-04-26T08:17:45.295Z',
-        updatedDate: '2022-04-26T08:18:02.218Z',
-        isActive: false,
-      };
-
-      const result: any = {
-        _tags: {},
-        metadata: {},
-        id: '10ff9df7-c98b-48d4-b540-d5df0d91f7cd',
-        createdAt: '2022-04-26T10:02:59.310Z',
-        requestMessage: {
-          '@type': 'https://didcomm.org/present-proof/1.0/request-presentation',
-          '@id': 'cb5df550-36a4-4cba-8afc-3b89cedbc6bb',
-          comment: 'Gaia-x Test',
-          'request_presentations~attach': [[Object]],
-        },
-        state: 'request-sent',
-        connectionId: 'b6724f85-a633-43ee-9c1c-736eaccbb6f9',
-        threadId: 'cb5df550-36a4-4cba-8afc-3b89cedbc6bb',
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        theirDid: '4D9hPSoWZLCkrCr57pqMqs',
-      };
-
-      jest
-        .spyOn(natsClient, 'getConnectionById')
-        .mockResolvedValueOnce(natsConnectionIdResponce);
-
-      jest
-        .spyOn(natsClient, 'getConnectionById')
-        .mockResolvedValueOnce(getAgentDetails);
-
-      jest.spyOn(restClient, 'post').mockResolvedValueOnce(result);
-
-      const res: any = await service.sendPresentationRequest(serviceDto);
-
-      expect(res).toStrictEqual(result);
-    });
-  });
-
-  describe('send out of band presentation request function', () => {
-    it('send out of band presentation request', async () => {
-      const serviceDto: SendProofRequest = {
-        comment: 'Gaia-x Test',
-        attributes: [
-          {
-            attributeName: 'email',
-            value: '',
-            condition: '',
-          },
-          {
-            attributeName: 'issuerDID',
-            value: '',
-            condition: '',
-          },
-        ],
-        credentialDefId:
-          'Knwz4KG97ta6EnC5BT7uH3:3:CL:241901:gaia-x principal member credential 0.2',
-        connectionId: '',
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        proofRecordId: '',
-      };
-
-      const getAgentDetails: any = {
-        statusCode: 200,
-        message: 'Agent',
-        data: {
-          id: '15b9c7d6-8bc9-47cb-b78e-314e6c12bf16',
-          participant_id: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          agent_url: 'http://3.111.77.38:4001',
-          invitation_url:
-            'http://3.111.77.38:4001?c_i=eyJAdHlwZSI6ImRpZDpzb3Y6QnpDYnNOWWhNcmpIaXFaRFRVQVNIZztzcGVjL2Nvbm5lY3Rpb25zLzEuMC9pbnZpdGF0aW9uIiwiQGlkIjoiZGVhMGY1NTYtOWM4MS00OTcyLTkxZjktODhmNWQ3MDNlNDRiIiwibGFiZWwiOiJPcmdfT25lIiwicmVjaXBpZW50S2V5cyI6WyI0eFFSMVVCUXV0TGg5S2tFc1lLZ2FZNDg5VEFtMUtRTVREcnR4WEdQNnNQUiJdLCJzZXJ2aWNlRW5kcG9pbnQiOiJodHRwOi8vMy4xMTEuNzcuMzg6NDAwMSIsInJvdXRpbmdLZXlzIjpbXX0',
-          public_did: 'Knwz4KG97ta6EnC5BT7uH3',
-          wallet_name: 'Org_One',
-          service_endpoint: 'http://3.111.77.38:4000',
-          status: true,
-          created_by: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          created_date: '2022-04-14T16:33:14.152Z',
-          updated_by: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          updated_date: '2022-04-26T06:03:32.178Z',
-        },
-      };
-
-      const result: any = {
-        _tags: {},
-        metadata: {},
-        id: '10ff9df7-c98b-48d4-b540-d5df0d91f7cd',
-        createdAt: '2022-04-26T10:02:59.310Z',
-        requestMessage: {
-          '@type': 'https://didcomm.org/present-proof/1.0/request-presentation',
-          '@id': 'cb5df550-36a4-4cba-8afc-3b89cedbc6bb',
-          comment: 'Gaia-x Test',
-          'request_presentations~attach': [[Object]],
-        },
-        state: 'request-sent',
-        connectionId: 'b6724f85-a633-43ee-9c1c-736eaccbb6f9',
-        threadId: 'cb5df550-36a4-4cba-8afc-3b89cedbc6bb',
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        theirDid: '4D9hPSoWZLCkrCr57pqMqs',
-      };
-
-      jest
-        .spyOn(natsClient, 'getConnectionById')
-        .mockResolvedValueOnce(getAgentDetails);
-
-      jest.spyOn(restClient, 'post').mockResolvedValueOnce(result);
-
-      const res: any =
-        await service.sendOutOfBandPresentationRequest(serviceDto);
-
-      expect(res).toStrictEqual(result);
-    });
-  });
-
-  describe('send membership credential presentation request function', () => {
-    it('send membership credential presentation request', async () => {
-      const serviceDto: MembershipCredentialDto = {
-        attributes: [
-          {
-            attributeName: 'email',
-          },
-          {
-            attributeName: 'issuerDID',
-          },
-        ],
-        connectionId: '',
-        participant_id: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        schemaId: '',
-      };
-
-      const getAgentDetails: any = {
-        statusCode: 200,
-        message: 'Agent',
-        data: {
-          id: '15b9c7d6-8bc9-47cb-b78e-314e6c12bf16',
-          participant_id: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          agent_url: 'http://3.111.77.38:4001',
-          invitation_url:
-            'http://3.111.77.38:4001?c_i=eyJAdHlwZSI6ImRpZDpzb3Y6QnpDYnNOWWhNcmpIaXFaRFRVQVNIZztzcGVjL2Nvbm5lY3Rpb25zLzEuMC9pbnZpdGF0aW9uIiwiQGlkIjoiZGVhMGY1NTYtOWM4MS00OTcyLTkxZjktODhmNWQ3MDNlNDRiIiwibGFiZWwiOiJPcmdfT25lIiwicmVjaXBpZW50S2V5cyI6WyI0eFFSMVVCUXV0TGg5S2tFc1lLZ2FZNDg5VEFtMUtRTVREcnR4WEdQNnNQUiJdLCJzZXJ2aWNlRW5kcG9pbnQiOiJodHRwOi8vMy4xMTEuNzcuMzg6NDAwMSIsInJvdXRpbmdLZXlzIjpbXX0',
-          public_did: 'Knwz4KG97ta6EnC5BT7uH3',
-          wallet_name: 'Org_One',
-          service_endpoint: 'http://3.111.77.38:4000',
-          status: true,
-          created_by: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          created_date: '2022-04-14T16:33:14.152Z',
-          updated_by: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-          updated_date: '2022-04-26T06:03:32.178Z',
-        },
-      };
-
-      const result: any = {
-        _tags: {},
-        metadata: {},
-        id: '10ff9df7-c98b-48d4-b540-d5df0d91f7cd',
-        createdAt: '2022-04-26T10:02:59.310Z',
-        requestMessage: {
-          '@type': 'https://didcomm.org/present-proof/1.0/request-presentation',
-          '@id': 'cb5df550-36a4-4cba-8afc-3b89cedbc6bb',
-          comment: 'Gaia-x Test',
-          'request_presentations~attach': [[Object]],
-        },
-        state: 'request-sent',
-        connectionId: 'b6724f85-a633-43ee-9c1c-736eaccbb6f9',
-        threadId: 'cb5df550-36a4-4cba-8afc-3b89cedbc6bb',
-        participantId: '662dc769-a4de-4c95-934c-f6dab8cf432c',
-        theirDid: '4D9hPSoWZLCkrCr57pqMqs',
-      };
-
-      jest
-        .spyOn(natsClient, 'getConnectionById')
-        .mockResolvedValueOnce(getAgentDetails);
-
-      jest.spyOn(restClient, 'post').mockResolvedValueOnce(result);
-
-      const res: any =
-        await service.sendPrincipalCredentialPresentationRequest(serviceDto);
-
-      expect(res).toStrictEqual(result);
-    });
-  });
-});
diff --git a/apps/proof-manager/src/presentationProof/services/service.ts b/apps/proof-manager/src/presentationProof/services/service.ts
deleted file mode 100644
index f8ac973..0000000
--- a/apps/proof-manager/src/presentationProof/services/service.ts
+++ /dev/null
@@ -1,456 +0,0 @@
-import type GetPresentProofsDto from '../entities/get-present-proofs.dto.js';
-import type GetProofRequest from '../entities/get-proof-request.dto.js';
-import type MembershipCredentialDto from '../entities/membership-credential.dto.js';
-import type PresentationSubscriptionEndpointDto from '../entities/presentationSubscribeEndPoint.entity.js';
-import type SendProofRequest from '../entities/send-proof-request.dto.js';
-import type { Prisma } from '@prisma/client';
-
-import { HttpService } from '@nestjs/axios';
-import { Injectable } from '@nestjs/common';
-import { ConfigService } from '@nestjs/config';
-import { lastValueFrom, map } from 'rxjs';
-
-import NatsClientService from '../../client/nats.client.js';
-import RestClientService from '../../client/rest.client.js';
-import PrismaService from '../../prisma/prisma.service.js';
-import logger from '../../utils/logger.js';
-import pagination from '../../utils/pagination.js';
-import PresentationProofRepository from '../repository/presentationProof.respository.js';
-
-@Injectable()
-export default class PresentationProofsService {
-  private presentationProofRepository;
-
-  private agentURL;
-
-  private didcommUrl;
-
-  public constructor(
-    private readonly natsClient: NatsClientService,
-    private readonly prismaService: PrismaService,
-    private readonly httpService: HttpService,
-    private readonly restClient: RestClientService,
-    private readonly configService: ConfigService,
-  ) {
-    this.presentationProofRepository = new PresentationProofRepository(
-      this.prismaService,
-    );
-
-    this.agentURL = this.configService.get('agent').agentUrl;
-    this.didcommUrl = this.configService.get('agent').didcommUrl;
-  }
-
-  public getAppUrl() {
-    return this.configService.get('APP_URL');
-  }
-
-  public static readonly connectionStatus = {
-    TRUSTED: 'trusted',
-  };
-
-  public async findProofByProofRecordId(proof_record_id: string) {
-    return this.restClient.get(`${this.agentURL}/proofs/${proof_record_id}`);
-  }
-
-  public async findProofPresentation(
-    pageSize: number,
-    page: number,
-    proofRecordId?: string | false,
-    connectionId?: string | false,
-    credentialDefId?: string | false,
-    schemaId?: string | false,
-    theirDid?: string | false,
-    status?: string | false,
-    createdDateStart?: string | false,
-    createdDateEnd?: string | false,
-    updatedDateStart?: string | false,
-    updatedDateEnd?: string | false,
-  ) {
-    let query: {
-      skip?: number;
-      take?: number;
-      cursor?: Prisma.ProofWhereUniqueInput;
-      where: Prisma.ProofWhereInput;
-      orderBy?: Prisma.ProofOrderByWithRelationInput;
-    } = {
-      where: {},
-    };
-
-    if (status) {
-      const states: string[] = status.split(',');
-      query.where.status = { in: states };
-    }
-    if (proofRecordId) {
-      query.where.proofRecordId = proofRecordId;
-    }
-    if (connectionId) {
-      query.where.connectionId = connectionId;
-    }
-    if (credentialDefId) {
-      query.where.credentialDefId = credentialDefId;
-    }
-    if (schemaId) {
-      query.where.schemaId = schemaId;
-    }
-    if (theirDid) {
-      query.where.theirDid = theirDid;
-    }
-    if (createdDateStart) {
-      query.where.createdDate = { gte: createdDateStart };
-    }
-    if (createdDateEnd) {
-      // eslint-disable-next-line prefer-object-spread
-      query.where.createdDate = Object.assign({}, query.where.createdDate, {
-        lte: createdDateEnd,
-      });
-    }
-    if (updatedDateStart) {
-      query.where.updatedDate = { gte: updatedDateStart };
-    }
-    if (updatedDateEnd) {
-      // eslint-disable-next-line prefer-object-spread
-      query.where.updatedDate = Object.assign({}, query.where.updatedDate, {
-        lte: updatedDateEnd,
-      });
-    }
-
-    query = { ...query, ...pagination(pageSize, page) };
-    return this.presentationProofRepository.findProofPresentation(query);
-  }
-
-  public async createPresentationRequest(sendProofRequest: SendProofRequest) {
-    const query: Prisma.ProofCreateInput = {
-      proofRecordId: sendProofRequest.proofRecordId || '',
-      connectionId: sendProofRequest.connectionId,
-      status: sendProofRequest.status,
-    };
-    return this.presentationProofRepository.createPresentationProof(query);
-  }
-
-  public async getConnectionByID(connectionID: string) {
-    const connection = await this.natsClient.getConnectionById(connectionID);
-
-    return connection;
-  }
-
-  public async sendPresentationRequest(sendProofRequest: SendProofRequest) {
-    const getPayloadRes =
-      PresentationProofsService.createCommonPresentationRequestPaylod(
-        sendProofRequest,
-      );
-
-    const proofRequestPayload = {
-      comment: getPayloadRes.comment,
-      connectionId: sendProofRequest.connectionId,
-      // trace: true,
-      autoAcceptProof: 'always',
-      proofRequest: {
-        name: 'Proof Request',
-        version: '1.0',
-        // nonce: getPayloadRes.nonce.toString(),
-        requested_attributes: getPayloadRes.requested_attributes,
-        requested_predicates: getPayloadRes.requested_predicates,
-        ver: '1.0',
-      },
-    };
-
-    logger.info(
-      `proofRequestPayload for proof request ${JSON.stringify(
-        proofRequestPayload,
-      )}`,
-    );
-
-    let responseData = null;
-
-    const getConnection = await this.getConnectionByID(
-      sendProofRequest.connectionId || '',
-    );
-
-    if (
-      getConnection?.status !==
-      PresentationProofsService.connectionStatus.TRUSTED
-    ) {
-      responseData = {
-        message: 'Connection is not trusted',
-      };
-      return responseData;
-    }
-
-    responseData = await this.restClient.post(
-      `${this.agentURL}/proofs/request-proof`,
-      proofRequestPayload,
-    );
-
-    responseData.theirDid = getConnection.theirDid;
-    return responseData;
-  }
-
-  public static createCommonPresentationRequestPaylod(
-    sendProofRequest: SendProofRequest,
-  ) {
-    const requestedAttributes: {
-      [key: string]: {
-        names: string[];
-        restrictions: {
-          schema_id?: string;
-          cred_def_id?: string;
-        }[];
-      };
-    } = {};
-    const requestedPredicates: {
-      [key: string]: Record<string, Array<object> | number>;
-    } = {};
-    const generateNonce: number = Math.floor(Math.random() * 10000000000000);
-    const comment = sendProofRequest.comment ? sendProofRequest.comment : '';
-
-    for (let i = 0; i < sendProofRequest.attributes.length; i += 1) {
-      const attribute = sendProofRequest.attributes[i];
-      const key = `${attribute.schemaId}_${attribute.credentialDefId}`;
-      requestedAttributes[key] = requestedAttributes[key] || {
-        names: [],
-        restrictions: [],
-      };
-
-      if (attribute.schemaId) {
-        requestedAttributes[key].restrictions[0] =
-          requestedAttributes[key].restrictions[0] || {};
-        requestedAttributes[key].restrictions[0].schema_id = attribute.schemaId;
-      }
-
-      if (attribute.credentialDefId) {
-        requestedAttributes[key].restrictions[0] =
-          requestedAttributes[key].restrictions[0] || {};
-        requestedAttributes[key].restrictions[0].cred_def_id =
-          attribute.credentialDefId;
-      }
-
-      if (attribute.attributeName) {
-        requestedAttributes[key].names.push(attribute.attributeName);
-      }
-    }
-
-    const payload = {
-      comment,
-      nonce: generateNonce.toString(),
-      requested_attributes: Object.fromEntries(
-        Object.entries(requestedAttributes).map(([, value], index) => [
-          `additionalProp${index + 1}`,
-          value,
-        ]),
-      ),
-      requested_predicates: requestedPredicates,
-    };
-    return payload;
-  }
-
-  public async sendOutOfBandPresentationRequest(
-    sendProofRequest: SendProofRequest,
-  ) {
-    const getPayloadRes =
-      PresentationProofsService.createCommonPresentationRequestPaylod(
-        sendProofRequest,
-      );
-
-    const proofRequestPayload = {
-      comment: getPayloadRes.comment,
-      autoAcceptProof: 'always',
-      proofRequest: {
-        name: 'Out Of Band Proof Request',
-        version: '1.0',
-        nonce: getPayloadRes.nonce.toString(),
-        requested_attributes: getPayloadRes.requested_attributes,
-        requested_predicates: getPayloadRes.requested_predicates,
-        ver: '1.0',
-      },
-    };
-    let responseData = null;
-
-    responseData = await this.restClient.post(
-      `${this.agentURL}/proofs/request-outofband-proof`,
-      proofRequestPayload,
-    );
-
-    const shortRow = await this.presentationProofRepository.createShortUrl(
-      responseData.message,
-    );
-    const appUrl = this.getAppUrl();
-    responseData.messageShort = `${appUrl}/v1/url/${shortRow.id}`;
-
-    return responseData;
-  }
-
-  public async sendPrincipalCredentialPresentationRequest(
-    sendProofRequest: MembershipCredentialDto,
-  ) {
-    const requestedAttributes: {
-      [key: string]: Record<string, Array<{ schema_id: string }>>;
-    } = {};
-    const requestedPredicates: {
-      [key: string]: Record<string, Array<object> | number>;
-    } = {};
-    const generateNonce: number = Math.floor(Math.random() * 10000000000000);
-    const comment = '';
-
-    for (
-      let index = 0;
-      index < sendProofRequest.attributes.length;
-      index += 1
-    ) {
-      const attributeElement = sendProofRequest.attributes[index];
-      const attributeReferent = `additionalProp${index + 1}`;
-      const keys = Object.keys(requestedAttributes);
-      if (keys.length > 0) {
-        keys.forEach((attr, i) => {
-          if (
-            attributeElement.schemaId &&
-            requestedAttributes[attr].restrictions[i].schema_id ===
-              attributeElement.schemaId
-          ) {
-            requestedAttributes[attr].names.push({
-              schema_id: attributeElement.schemaId,
-            });
-          } else if (keys.length === i + 1) {
-            requestedAttributes[attributeReferent] = {
-              names: [attributeElement.attributeName],
-              restrictions: [
-                {
-                  schema_id: attributeElement.schemaId || '',
-                },
-              ],
-            } as any; // eslint-disable-line @typescript-eslint/no-explicit-any
-          }
-        });
-      } else {
-        requestedAttributes[attributeReferent] = {
-          names: [attributeElement.attributeName],
-          restrictions: [
-            {
-              schema_id: attributeElement.schemaId || '',
-            },
-          ],
-        } as any; // eslint-disable-line @typescript-eslint/no-explicit-any
-      }
-    }
-
-    const proofRequestPayload = {
-      comment,
-      connectionId: sendProofRequest.connectionId,
-      trace: true,
-      proofRequest: {
-        name: 'Membership Credential Proof Request',
-        version: '1.0',
-        nonce: generateNonce.toString(),
-        requested_attributes: requestedAttributes,
-        requested_predicates: requestedPredicates,
-      },
-    };
-
-    let responseData = null;
-
-    responseData = await this.restClient.post(
-      `${this.agentURL}/proofs/request-proof`,
-      proofRequestPayload,
-    );
-
-    return responseData;
-  }
-
-  public async updatePresentationStatus(getProofRequest: GetProofRequest) {
-    const getRes =
-      await this.presentationProofRepository.updatePresentationStatus({
-        where: { proofRecordId: getProofRequest.id },
-        data: {
-          status: getProofRequest.state,
-          updatedDate: new Date(),
-        },
-      });
-    return getRes;
-  }
-
-  public async acceptPresentation(proof_record_id: string) {
-    return lastValueFrom(
-      this.httpService
-        .post(`${this.agentURL}/proofs/${proof_record_id}/accept-presentation`)
-        .pipe(map((response) => response.data)),
-    );
-  }
-
-  public async acceptProofRequest(proofRecordId: string) {
-    return lastValueFrom(
-      this.httpService
-        .post(`${this.agentURL}/proofs/${proofRecordId}/accept-request`)
-        .pipe(map((response) => response.data)),
-    );
-  }
-
-  public async deleteProofRequest(proofRecordId: string) {
-    const response = lastValueFrom(
-      this.httpService
-        .delete(`${this.agentURL}/proofs/${proofRecordId}`)
-        .pipe(map((response) => response.data)),
-    );
-
-    await this.presentationProofRepository.deleteProofRequest(proofRecordId);
-
-    return response;
-  }
-
-  public async declineProofRequest(proofRecordId: string) {
-    return lastValueFrom(
-      this.httpService
-        .post(`${this.didcommUrl}/v1/agent/proofs/declineRequest`, {
-          data: [proofRecordId],
-        })
-        .pipe(map((response) => response.data)),
-    );
-  }
-
-  public async getAllProofRequest(threadId: string) {
-    const url = threadId
-      ? `${this.agentURL}/proofs/?threadId=${threadId}`
-      : `${this.agentURL}/proofs/`;
-    return lastValueFrom(
-      this.httpService.get(url).pipe(map((response) => response.data)),
-    );
-  }
-
-  public async getSchemaById(schemaId: string) {
-    const url = `${this.agentURL}/schemas/${schemaId}`;
-    return lastValueFrom(
-      this.httpService.get(url).pipe(map((response) => response.data)),
-    );
-  }
-
-  public async getCredentialDefinitionsById(credentialDefinitionsId: string) {
-    const url = `${this.agentURL}/credential-definitions/${credentialDefinitionsId}`;
-    return lastValueFrom(
-      this.httpService.get(url).pipe(map((response) => response.data)),
-    );
-  }
-
-  public publishPresentationSubscriberEndpoint(
-    data: PresentationSubscriptionEndpointDto,
-  ) {
-    this.natsClient.publishPresentation(data);
-  }
-
-  public getCredentialsTypeDetails(type: string) {
-    return this.natsClient.getCredentialsTypeDetails(type);
-  }
-
-  public makeConnectionTrusted(connectionId: string) {
-    return this.natsClient.makeConnectionTrusted(connectionId);
-  }
-
-  public async getPresentProofs(data: GetPresentProofsDto) {
-    return this.presentationProofRepository.findProofPresentation({
-      where: {
-        connectionId: data.connectionId,
-      },
-    });
-  }
-
-  public async findUrlByShortUrlId(id: string) {
-    return this.presentationProofRepository.getShortUrl(id);
-  }
-}
diff --git a/apps/proof-manager/src/prisma/prisma.module.spec.ts b/apps/proof-manager/src/prisma/prisma.module.spec.ts
deleted file mode 100644
index e557fe1..0000000
--- a/apps/proof-manager/src/prisma/prisma.module.spec.ts
+++ /dev/null
@@ -1,7 +0,0 @@
-import PrismaModule from './prisma.module';
-
-describe('Check if the module is working', () => {
-  it('should be defined', () => {
-    expect(PrismaModule).toBeDefined();
-  });
-});
diff --git a/apps/proof-manager/src/prisma/prisma.module.ts b/apps/proof-manager/src/prisma/prisma.module.ts
deleted file mode 100644
index c0d718c..0000000
--- a/apps/proof-manager/src/prisma/prisma.module.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { Module } from '@nestjs/common';
-
-import PrismaService from './prisma.service.js';
-
-@Module({
-  providers: [PrismaService],
-  exports: [PrismaService],
-})
-export default class PrismaModule {}
diff --git a/apps/proof-manager/src/prisma/prisma.service.ts b/apps/proof-manager/src/prisma/prisma.service.ts
deleted file mode 100644
index b0f25f5..0000000
--- a/apps/proof-manager/src/prisma/prisma.service.ts
+++ /dev/null
@@ -1,29 +0,0 @@
-import type { OnModuleDestroy, OnModuleInit } from '@nestjs/common';
-
-import { Injectable } from '@nestjs/common';
-import { ConfigService } from '@nestjs/config';
-import { PrismaClient } from '@prisma/client';
-
-@Injectable()
-export default class PrismaService
-  extends PrismaClient
-  implements OnModuleInit, OnModuleDestroy
-{
-  public constructor(configService: ConfigService) {
-    super({
-      datasources: {
-        db: {
-          url: configService.get('DATABASE_URL'),
-        },
-      },
-    });
-  }
-
-  public async onModuleInit() {
-    await this.$connect();
-  }
-
-  public async onModuleDestroy() {
-    await this.$disconnect();
-  }
-}
diff --git a/apps/proof-manager/src/prisma/schema.prisma b/apps/proof-manager/src/prisma/schema.prisma
deleted file mode 100644
index ceb5bb5..0000000
--- a/apps/proof-manager/src/prisma/schema.prisma
+++ /dev/null
@@ -1,25 +0,0 @@
-generator client {
-  provider = "prisma-client-js"
-}
-
-datasource db {
-  provider = "postgresql"
-  url      = env("DATABASE_URL")
-}
-
-model Proof {
-  id              String   @id @default(uuid())
-  proofRecordId   String   @unique @map("proof_record_id")
-  connectionId    String   @default("") @map("connection_id")
-  credentialDefId String   @default("") @map("credential_def_id")
-  schemaId        String   @default("") @map("schema_id")
-  theirDid        String   @default("") @map("their_did")
-  status          String   @default("")
-  createdDate     DateTime @default(now()) @map("created_date")
-  updatedDate     DateTime @default(now()) @map("updated_date")
-}
-
-model ShortUrl {
-  id          String @id @default(uuid())
-  originalUrl String
-}
diff --git a/apps/proof-manager/src/utils/exceptionsFilter.ts b/apps/proof-manager/src/utils/exceptionsFilter.ts
deleted file mode 100644
index 7ce5599..0000000
--- a/apps/proof-manager/src/utils/exceptionsFilter.ts
+++ /dev/null
@@ -1,79 +0,0 @@
-import type { ArgumentsHost, ExceptionFilter } from '@nestjs/common';
-import type { Request } from 'express';
-
-import { Catch, HttpException, HttpStatus, Logger } from '@nestjs/common';
-import { HttpAdapterHost } from '@nestjs/core';
-import { Prisma } from '@prisma/client';
-
-@Catch()
-export default class AllExceptionsFilter implements ExceptionFilter {
-  public constructor(private readonly httpAdapterHost: HttpAdapterHost) {}
-
-  public catch(
-    exception:
-      | HttpException
-      | Prisma.PrismaClientKnownRequestError
-      | Prisma.PrismaClientUnknownRequestError
-      | Error,
-    host: ArgumentsHost,
-  ): void {
-    const { httpAdapter } = this.httpAdapterHost;
-
-    const ctx = host.switchToHttp();
-    const request = ctx.getRequest<Request>();
-
-    let httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
-    let message = '';
-
-    if (exception instanceof HttpException) {
-      httpStatus = exception.getStatus();
-      message = exception.message || 'Internal server error';
-    } else if (exception instanceof Prisma.PrismaClientKnownRequestError) {
-      switch (exception.code) {
-        case 'P2002': // Unique constraint failed on the {constraint}
-        case 'P2000': // The provided value for the column is too long for the column's type. Column: {column_name}
-        case 'P2001': // The record searched for in the where condition ({model_name}.{argument_name} = {argument_value}) does not exist
-        case 'P2005': // The value {field_value} stored in the database for the field {field_name} is invalid for the field's type
-        case 'P2006': // The provided value {field_value} for {model_name} field {field_name} is not valid
-        case 'P2010': // Raw query failed. Code: {code}. Message: {message}
-        case 'P2011': // Null constraint violation on the {constraint}
-        case 'P2017': // The records for relation {relation_name} between the {parent_name} and {child_name} models are not connected.
-        case 'P2021': // The table {table} does not exist in the current database.
-        case 'P2022': // The column {column} does not exist in the current database.
-          httpStatus = HttpStatus.BAD_REQUEST;
-          message = exception?.message;
-          break;
-        case 'P2018': // The required connected records were not found. {details}
-        case 'P2025': // An operation failed because it depends on one or more records that were required but not found. {cause}
-        case 'P2015': // A related record could not be found. {details}
-          httpStatus = HttpStatus.NOT_FOUND;
-          message = exception?.message;
-          break;
-        default:
-          httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
-          message = exception?.message || 'Internal server error';
-      }
-    } else if (exception instanceof Prisma.PrismaClientValidationError) {
-      httpStatus = HttpStatus.BAD_REQUEST;
-      message = exception?.message;
-    } else if (exception instanceof Error) {
-      httpStatus = HttpStatus.INTERNAL_SERVER_ERROR;
-      message = exception.message || 'Internal server error';
-    }
-
-    Logger.error(
-      'Exception Filter :',
-      message,
-      (exception as Error).stack,
-      `${request.method} ${request.url}`,
-    );
-
-    const responseBody = {
-      statusCode: httpStatus,
-      timestamp: new Date().toISOString(),
-      message,
-    };
-
-    httpAdapter.reply(ctx.getResponse(), responseBody, httpStatus);
-  }
-}
diff --git a/apps/proof-manager/src/utils/logger.spec.ts b/apps/proof-manager/src/utils/logger.spec.ts
deleted file mode 100644
index 992dd1f..0000000
--- a/apps/proof-manager/src/utils/logger.spec.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// import * as fs from 'fs';
-
-describe('Logger', () => {
-  // beforeEach(() => {
-  //   jest.mock('fs');
-  // });
-  it('should create a directory if not exists', async () => {
-    // jest.spyOn(fs, 'existsSync').mockImplementation(() => false);
-    // jest.spyOn(fs, 'mkdirSync').mockImplementation(() => 'mocked');
-    const logger = await import('./logger.js');
-    expect(logger).toBeDefined();
-    // expect(fs.existsSync).toHaveBeenCalled();
-    // expect(fs.mkdirSync).toHaveBeenCalled();
-  });
-});
diff --git a/apps/proof-manager/src/utils/logger.ts b/apps/proof-manager/src/utils/logger.ts
deleted file mode 100644
index b1958d5..0000000
--- a/apps/proof-manager/src/utils/logger.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import type { Logger } from 'winston';
-
-import { ecsFormat } from '@elastic/ecs-winston-format';
-import { createLogger, transports } from 'winston';
-
-const logger: Logger = createLogger({
-  format: ecsFormat({ convertReqRes: true }),
-
-  transports: [new transports.Console()],
-});
-
-logger.on('error', (error) => {
-  // eslint-disable-next-line no-console
-  console.error('Error in logger caught', error);
-});
-
-export default logger;
diff --git a/apps/proof-manager/src/utils/pagination.spec.ts b/apps/proof-manager/src/utils/pagination.spec.ts
deleted file mode 100644
index a75d3bb..0000000
--- a/apps/proof-manager/src/utils/pagination.spec.ts
+++ /dev/null
@@ -1,17 +0,0 @@
-import pagination from './pagination';
-
-describe('Check if the module is working', () => {
-  it('should be defined', () => {
-    expect(pagination).toBeDefined();
-  });
-
-  it('should be return default value', () => {
-    const result = { skip: 0, take: 10 };
-    expect(pagination(0, 0)).toStrictEqual(result);
-  });
-
-  it('should be return next page value', () => {
-    const result = { skip: 0, take: 10 };
-    expect(pagination(10, 0)).toStrictEqual(result);
-  });
-});
diff --git a/apps/proof-manager/src/utils/pagination.ts b/apps/proof-manager/src/utils/pagination.ts
deleted file mode 100644
index 953e8fc..0000000
--- a/apps/proof-manager/src/utils/pagination.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-const pagination = (pageSize: number, page: number) => {
-  const query: {
-    skip?: number;
-    take?: number;
-  } = {};
-  if (pageSize && (page || page === 0)) {
-    query.skip = page * pageSize;
-    query.take = pageSize;
-  } else {
-    query.skip = 0;
-    query.take = 10;
-  }
-  return query;
-};
-
-export default pagination;
diff --git a/apps/proof-manager/test/app.e2e-spec.ts b/apps/proof-manager/test/app.e2e-spec.ts
deleted file mode 100644
index bbcc2f6..0000000
--- a/apps/proof-manager/test/app.e2e-spec.ts
+++ /dev/null
@@ -1,26 +0,0 @@
-import type { INestApplication } from '@nestjs/common';
-import type { TestingModule } from '@nestjs/testing';
-
-import { afterEach, beforeEach, describe, it } from '@jest/globals';
-import { Test } from '@nestjs/testing';
-import request from 'supertest';
-
-import AppModule from '../src/app.module.js';
-
-describe('AppController (e2e)', () => {
-  let app: INestApplication;
-
-  beforeEach(async () => {
-    const moduleFixture: TestingModule = await Test.createTestingModule({
-      imports: [AppModule],
-    }).compile();
-
-    app = moduleFixture.createNestApplication();
-    await app.init();
-  });
-
-  afterEach(() => app.close());
-
-  it('/health (GET)', () =>
-    request(app.getHttpServer()).get('/health').expect(200));
-});
diff --git a/apps/proof-manager/test/jest.config.js b/apps/proof-manager/test/jest.config.js
deleted file mode 100644
index c2b3ddf..0000000
--- a/apps/proof-manager/test/jest.config.js
+++ /dev/null
@@ -1,9 +0,0 @@
-/** @type {import('jest').Config} */
-
-import config from '../jest.config.js';
-
-export default {
-  ...config,
-  rootDir: '.',
-  testRegex: '.*\\.e2e-spec\\.ts$',
-};
-- 
GitLab