diff --git a/features/steps/helper.py b/features/steps/helper.py
index 590e9641f8fd858e15e44013c92b1905821bc86d..1f0f93a410ea522e3a454f3582d897286d024747 100644
--- a/features/steps/helper.py
+++ b/features/steps/helper.py
@@ -1,7 +1,69 @@
 import secrets
 import string
+import requests
+import json
 
 def generate_random_string(length):
     """Generate a secure random alphanumeric string of given length."""
     alphabet = string.ascii_letters + string.digits  # Include both letters and numbers
-    return ''.join(secrets.choice(alphabet) for _ in range(length))
\ No newline at end of file
+    return ''.join(secrets.choice(alphabet) for _ in range(length))
+
+
+
+
+def register_endorser_did(url_base, payload={}, header={}):
+    
+    endorser_url = url_base+'/register-endorser-did'
+    requests.post(endorser_url, headers=header, data=payload)
+
+
+def create_issuer_tennant(url_base, 
+                          payload = json.dumps({"label": "issuer"}), 
+                          headers = {'Content-Type': 'application/json'}
+                          ):
+    
+    url = url_base+"/create-tenant"
+    return requests.post(url, headers=headers, data=payload)  
+
+
+def register_issuer_did(url_base,
+                        issuer_id, 
+                        seed = None,
+                        payload = None, 
+                        headers = {'Content-Type': 'application/json'}
+                        ):
+    
+    if seed is None:
+        seed = generate_random_string(15) \
+               + generate_random_string(1) \
+               + generate_random_string(1) \
+               + generate_random_string(15)
+    if payload is None:
+        payload = json.dumps({
+                            "seed": (seed),
+                            "services": [
+                                {
+                                "id": "#endpoint",
+                                "type": "endpoint",
+                                "serviceEndpoint": "https://bar.example.com"
+                                },
+                                {
+                                "id": "#didcomm-messaging",
+                                "type": "didcomm-messaging",
+                                "serviceEndpoint": "https://bar.example.com"
+                                },
+                                {
+                                "id": "#did-communication",
+                                "type": "did-communication",
+                                "serviceEndpoint": "https://bar.example.com"
+                                },
+                                {
+                                "id": "#DIDComm",
+                                "type": "DIDComm",
+                                "serviceEndpoint": "https://bar.example.com"
+                                }
+                            ]
+                        })
+
+    url = url_base+'/v1/dids?tenantId='+issuer_id
+    return requests.post(url, headers=headers, data=payload)
\ No newline at end of file
diff --git a/features/steps/init.py b/features/steps/init.py
index f33ed793c7e85afee9edcbf920a2bc7971cde391..9056c75e542d554d60fdab9820215ab9649d0eb9 100644
--- a/features/steps/init.py
+++ b/features/steps/init.py
@@ -1,7 +1,7 @@
 from behave import *
 import requests
 import json
-from helper import generate_random_string
+from helper import generate_random_string, register_endorser_did, create_issuer_tennant, register_issuer_did
 
 
 @given(u'I can connect to OCM Engine')
@@ -22,20 +22,11 @@ def step_init(context):
     # context.dev_tools_base_URL_2 = localhost + "4110"
 
     
-    # Step 1: Register Endorser DID
-    empty_payload = {}
-    empty_header = {}
-    
-    endorser_url = context.dev_tools_base_URL+'/register-endorser-did'
-    requests.post(endorser_url, headers=empty_header, data=empty_payload)
-
+    # Register Endorser DID
+    register_endorser_did(context.dev_tools_base_URL)
 
     # Create 'issuer' tenant
-    payload = json.dumps({"label": "issuer"})
-    headers = {'Content-Type': 'application/json'}
-    url = context.dev_tools_base_URL+"/create-tenant"
-
-    create_issuer_tenant_request = requests.post(url, headers=headers, data=payload)    
+    create_issuer_tenant_request = create_issuer_tennant(context.dev_tools_base_URL)    
     assert create_issuer_tenant_request.status_code == 201
 
     context.issuer_id = create_issuer_tenant_request.json()['id']
@@ -44,43 +35,8 @@ def step_init(context):
 @given(u'I register a DID for \'issuer\'')
 def step_register_issuer_did(context):
 
-     
-
-    register_did_url = context.did_manager_base_URL+'/v1/dids?tenantId='+context.issuer_id
-
-    register_did_payload = json.dumps({
-        "seed": (generate_random_string(15)+
-                generate_random_string(1)+
-                generate_random_string(1)+
-                generate_random_string(15)),
-        "services": [
-            {
-            "id": "#endpoint",
-            "type": "endpoint",
-            "serviceEndpoint": "https://bar.example.com"
-            },
-            {
-            "id": "#didcomm-messaging",
-            "type": "didcomm-messaging",
-            "serviceEndpoint": "https://bar.example.com"
-            },
-            {
-            "id": "#did-communication",
-            "type": "did-communication",
-            "serviceEndpoint": "https://bar.example.com"
-            },
-            {
-            "id": "#DIDComm",
-            "type": "DIDComm",
-            "serviceEndpoint": "https://bar.example.com"
-            }
-        ]
-    })
-
-    register_did_headers = {
-       'Content-Type': 'application/json'
-    }
-
-    register_did_response = requests.post(register_did_url, headers=register_did_headers, data=register_did_payload)
+    register_did_response = register_issuer_did(context.did_manager_base_URL, issuer_id=context.issuer_id)
+    print(context.issuer_id)
+    print(register_did_response.json())
     assert register_did_response.status_code == 201
     context.issuer_did = register_did_response.json()["data"][0]
\ No newline at end of file