diff --git a/features/connection/PCMConnection.feature b/features/connection/PCMConnection.feature
new file mode 100644
index 0000000000000000000000000000000000000000..f4c5bca28c145345f5ebb302cffc7b796023d193
--- /dev/null
+++ b/features/connection/PCMConnection.feature
@@ -0,0 +1,29 @@
+ As a PCM user, 
+    I want to register with an organization
+    So that I can leverage GAIA-X ecosystem
+
+    Scenario: I want to become a member of an organization (a GAIA-X Participant)
+        Given PCM Application should be configureameter alias set to 'member') and sends to PCM register email address.  
+        When  PCM Application scans the provided d on the user device.
+        # src/connections/controller/controller.ts-> Rest API POST METHOD -> NAME 'invitation-url' 
+        And OCM admin generates QR code ( with parQR code.
+        Then Pairwise DID and ver key is exchanged between the agents. 
+        And the Connection is established between the PCM aries agent and organization aries agent.
+        # Webhook call on topic 'CONNECTION_MANAGER_SERVICE/ConnectionStateChanged'
+        And connection state moves to complete state.
+        # Nats call on topic 'PRINCIPAL_MANAGER_SERVICE/connectionCompleteStatus'
+        And Principal membership credentials are issued.
+
+    Scenario: I want to subscribe to a service of an organization (a GAIA-X Participant) 
+        Given PCM User should be member of an organization.
+        And OCM admin/portal generates QR code ( with parameter alias set to 'subscriber') and email/display on portal.
+        # src/connections/controller/controller.ts-> Rest API POST METHOD -> NAME 'invitation-url'
+        When  PCM Application scans the provided QR code.
+        Then Pairwise DID and ver key is exchanged between the agents. 
+        And the Connection is established between PCM aries agent and organization aries agent.
+        # Webhook call on topic 'CONNECTION_MANAGER_SERVICE/ConnectionStateChanged'
+        And connection state moves to complete state.
+        # Nats call on topic 'PROOF_MANAGER_SERVICE/sendMembershipProofRequest'
+        And Principal membership verification to make connection trusted. 
+        And OCM admin issues the verifiable credential over a trusted connection.
+
diff --git a/features/connection/SchedularToDeleteConnection.feature b/features/connection/SchedularToDeleteConnection.feature
new file mode 100644
index 0000000000000000000000000000000000000000..31e64837af4d3b8836e1d7305c7cdc8e9538aea3
--- /dev/null
+++ b/features/connection/SchedularToDeleteConnection.feature
@@ -0,0 +1,11 @@
+Scheduler is running on Background to delete Non-trusted and Non-complete connections.
+
+    Scenario: Delete a Non-complete connection.
+    When connection does not goes in complete state within 30 minutes
+    # /src/connections/scheduler/scheduler.service.ts -> expireNonCompleteConnection()
+    Then connection will get deleted from database.
+
+    Scenario: Delete a Non-trusted connection.
+    When connection does not goes in trusted state within 30 minutes
+    # /src/connections/scheduler/scheduler.service.ts -> expireNonTrustedConnection()
+    Then connection will get deleted from database.
diff --git a/features/connection/findByConnectionId.feature b/features/connection/findByConnectionId.feature
new file mode 100644
index 0000000000000000000000000000000000000000..02f676b69fb5ed740b7ea525ca59b54fa05fc49f
--- /dev/null
+++ b/features/connection/findByConnectionId.feature
@@ -0,0 +1,20 @@
+Feature: Get connection details By Id
+    Return the single connection details
+
+    Scenario: Provide valid connection ID
+        Given The connection ID available on agent database.
+        # src/connections/controller/controller.ts-> Nats call on topic 'CONNECTION_MANAGER_SERVICE/getConnectionById'
+        When  provide valid connection ID.
+        Then  should return connection details.
+
+    Scenario: Provide invalid connection ID.
+        Given The connection ID available.
+        # src/connections/controller/controller.ts-> Nats call on topic 'CONNECTION_MANAGER_SERVICE/getConnectionById'
+        When  provide invalid connection ID.
+        Then  should return no data found with satus code 404(Not Found).
+
+    Scenario: Not Provide a connection ID.
+        Given The connection ID available.
+        # src/connections/controller/controller.ts-> Nats call on topic 'CONNECTION_MANAGER_SERVICE/getConnectionById'
+        When  not provide connection ID.
+        Then  should return connection request required Connction ID with satus code 400.
\ No newline at end of file
diff --git a/features/connection/getConnection.feature b/features/connection/getConnection.feature
new file mode 100644
index 0000000000000000000000000000000000000000..522f37f197feb7810a9f007e455c22a98f908b2a
--- /dev/null
+++ b/features/connection/getConnection.feature
@@ -0,0 +1,20 @@
+  Get Connection details
+    Return the list of connections or single connection created on the OCM environment
+
+     Scenario: Connection details by ID.
+      # src/connections/controller/controller.ts-> Rest API with Get Method -> connections/:connectionId? 
+        When  passed valid connection ID.
+        Then  returns connection details.
+
+    Scenario: Connection details.
+      # src/connections/controller/controller.ts-> Rest API with Get Method -> connections/:connectionId? 
+        When  passed valid pageSize and Number of records.
+        Then  returns a list of connection details.
+
+        Scenario: Connection details with status.
+        # src/connections/controller/controller.ts-> Rest API with Get Method -> connections/:connectionId? 
+        When passed valid pageSize and Number of records.
+        And status
+        Then returns a list of connection details with provided status.
+
+
diff --git a/features/connection/makeConnectionTrusted.feature b/features/connection/makeConnectionTrusted.feature
new file mode 100644
index 0000000000000000000000000000000000000000..9d88f543f48f06b3773aa26bff4f316ac847c02d
--- /dev/null
+++ b/features/connection/makeConnectionTrusted.feature
@@ -0,0 +1,19 @@
+Feature: Make connection trusted against connection ID.
+     I want to Update connection  status to trusted.
+
+    Scenario: Make connection trusted against connection ID.
+        Given I have pass connection ID.
+        # src/connections/controller/controller.ts-> Nats call on topic 'CONNECTION_MANAGER_SERVICE/makeConnectionTrusted'
+        When  I have pass valid connection ID.
+        Then  should update current connection state to trusted state.
+
+    Scenario: Make connection trusted against connection ID.
+        Given I have pass connection ID.
+        # src/connections/controller/controller.ts-> Nats call on topic 'CONNECTION_MANAGER_SERVICE/makeConnectionTrusted'
+        When  I have pass invalid connection ID.
+        Then  should get http status 404(Not Found).
+
+    Scenario: Make connection trusted against connection ID.
+        # src/connections/controller/controller.ts-> Nats call on topic 'CONNECTION_MANAGER_SERVICE/makeConnectionTrusted'
+        Given I have not pass connection ID.
+        Then  should return connection request required Connction ID with state code 400(Bad request).
\ No newline at end of file
diff --git a/features/principal-manager/principalManager.feature b/features/principal-manager/principalManager.feature
new file mode 100644
index 0000000000000000000000000000000000000000..6a3ce5cebe1b598576723533602abbd9cbae9db6
--- /dev/null
+++ b/features/principal-manager/principalManager.feature
@@ -0,0 +1,17 @@
+Feature: Offer membership credentials
+         Offer the membership credentials to the holder when the connection is in complete state 
+
+Scenario: Process connection request when status is complete   
+Given the connection status as complete
+# Controller.ts -> connectionComplete
+When I evaluate status as complete
+# Nats -> 'ATTESTATION_MANAGER_SERVICE/offerMemberShipCredentials'
+Then I called the offer membership credentials (attestation service)
+And get a successful response
+Then sends the response with message status connection received
+
+Scenario: Process connection request when status is other than complete
+Given the connection status other than complete
+# Controller.ts -> connectionComplete
+When I evaluate status as not complete
+Then sends the response with message connection status should be Complete
diff --git a/features/proof/findProofByPresentationId.feature b/features/proof/findProofByPresentationId.feature
new file mode 100644
index 0000000000000000000000000000000000000000..caf940c26dd123afebe3a854be78493c4f300de7
--- /dev/null
+++ b/features/proof/findProofByPresentationId.feature
@@ -0,0 +1,34 @@
+Feature: Get Proof Presentation By Id
+        Return the single proof presentation details
+
+Scenario: Provide valid presentation id
+    Given The presentation id is available on agent database.
+    # controller.ts-> Rest API with GET method -> find-by-presentation-id
+    When  provide valid presentation id.
+    Then  should return proof presentation details.
+
+Scenario: Provide invalid presentation id
+    Given The presentation id available.
+    # controller.ts-> Rest API with GET method -> find-by-presentation-id
+    When  provide invalid presentation id.
+    Then  should return no data found with status code 404.
+
+Scenario: Provide validated page and pageSize
+    Given proof presentation data available on OCM database. 
+    # controller.ts-> Rest API with GET method -> find-proof-presentation
+    When  passed valid page.
+    And   passed valid pageSize.
+    Then  should get proof presentation list.
+
+Scenario: Provide validated page and pageSize
+    Given proof presentation data is not available on OCM database.
+    # controller.ts-> Rest API with GET method -> find-proof-presentation
+    When  passed valid page.
+    And   passed valid pageSize.
+    Then  should get http status 404.
+    
+Scenario: Not provide a presentation id
+    Given The presentation id available.
+    # controller.ts-> Rest API with GET method -> find-by-presentation-id
+    When  not provide presentation id.
+    Then  should return presentation request required following attributes ( presentation_id ) with status code 400.
\ No newline at end of file
diff --git a/features/proof/sendOutOfBandPresentationRequest.feature b/features/proof/sendOutOfBandPresentationRequest.feature
new file mode 100644
index 0000000000000000000000000000000000000000..6a47aafabde592bdd974b33fc912b80b8f1a7d08
--- /dev/null
+++ b/features/proof/sendOutOfBandPresentationRequest.feature
@@ -0,0 +1,26 @@
+As a OCM Admin 
+    I want to verify credentials without connection.
+
+Scenario: OCM admin verify credentials
+    Given PCM user should hold credentials in there wallet.
+    # controller.ts-> Rest API with Post method -> send-out-of-band-presentation-request
+    When  OCM verifer orgnization sends a proof presentation request with following fields ( schemaId or credentialDefId, attributes ) to PCM user.
+    And   PCM user share the attributes from requested credentials to OCM verifer.
+    And   OCM verifer verify the presentation acknowledgement.    
+    Then  Presentation request should be in 'verified' state.
+
+Scenario: OCM admin verify credentials
+    Given PCM user should hold credentials in there wallet.
+    # controller.ts-> Rest API with Post method -> accept-presentation
+    When  OCM admin send a credential request to PCM user.
+    And   PCM user decline the credential request witch will requested from OCM admin. 
+
+
+    Scenario: OCM admin verify credentials agenst credentialType
+    Given PCM user should hold credentials in there wallet.
+    # controller.ts-> Rest API with Post method -> out-of-band-proof
+    When  OCM verifer orgnization sends a proof presentation request with following fields ( schemaId or credentialDefId, attributes ) to PCM user.
+    And   provide credentialType
+    And   PCM user share the attributes from requested credentials to OCM verifer.
+    And   OCM verifer verify the presentation acknowledgement.    
+    Then  Presentation request should be in 'verified' state.  
diff --git a/features/proof/sendPresentationRequest.feature b/features/proof/sendPresentationRequest.feature
new file mode 100644
index 0000000000000000000000000000000000000000..b5b8a433669863359da1d6bc92ced360b3f4831c
--- /dev/null
+++ b/features/proof/sendPresentationRequest.feature
@@ -0,0 +1,19 @@
+As a OCM Admin 
+    I want to verify credentials.
+
+Scenario: OCM admin verify credentials
+    Given PCM user should hold credentials in there wallet.
+    And   PCM user connection must be in trusted state with verifer.
+    # controller.ts-> Rest API with Post method -> send-presentation-request
+    When  OCM verifer orgnization sends a proof presentation request with following fields ( connectionId, schemaId or credentialDefId, attributes ) to PCM user.
+    And   PCM user share the attributes from requested credentials to OCM verifer.
+    And   OCM verifer verify the presentation acknowledgement.    
+    Then  Presentation request should be in 'verified' state.
+
+Scenario: PCM user decline proof request
+    Given PCM user should hold credentials in there wallet.
+    And   PCM user connection must be in trusted state with verifer.
+    When  OCM verifer orgnization sends a proof presentation request with following fields ( connectionId, schemaId or credentialDefId, attributes ) to PCM user.
+    And   PCM user declines the presentation request.
+    Then  Presentation request is not 'verified'.  
+
diff --git a/features/proof/sendPrincipalCredentialPresentationRequest.feature b/features/proof/sendPrincipalCredentialPresentationRequest.feature
new file mode 100644
index 0000000000000000000000000000000000000000..c2f1aecd35dae64de219dd48d5a6fd89cdf0b935
--- /dev/null
+++ b/features/proof/sendPrincipalCredentialPresentationRequest.feature
@@ -0,0 +1,11 @@
+Feature: I am able to prove as GAIA-X ecosystem member.
+         To make the existing connection trusted.
+
+Scenario: Make the existing connection trusted
+    Given PCM user should hold principal membership credentials in there wallet.
+    And   PCM user connection must be in complete state with verifer.
+    # Nats call on topic 'PROOF_MANAGER_SERVICE/sendMembershipProofRequest'
+    When  OCM verifer orgnization sends a proof presentation request with following fields ( schemaId, attributes ) to PCM user.
+    And   PCM user share the attributes from requested credentials to OCM verifer.
+    And   OCM verifer verify the presentation acknowledgement.    
+    Then  Presentation request should be in 'trusted' state.