diff --git a/openecomp-bdd/features/InterfaceOperation/TestInterfaceOperation.feature b/openecomp-bdd/features/InterfaceOperation/TestInterfaceOperation.feature
index fa3647e..dfd754f 100644
--- a/openecomp-bdd/features/InterfaceOperation/TestInterfaceOperation.feature
+++ b/openecomp-bdd/features/InterfaceOperation/TestInterfaceOperation.feature
@@ -93,20 +93,4 @@
 
   #Submit
   Then I want to submit this VF
-  And I want to check property "lifecycleState" for value "READY_FOR_CERTIFICATION"
-
-  Scenario: Test InterfaceOperation CREATE with output parameters
-  #Create Operations
-  When I want to create an Operation with outputParameter
-  Then I want to check property "uniqueId" exists
-
- #List All Operations
-  When I want to list Operations
-
-#Checkin
-  When I want to checkin this VF
-  Then I want to check property "lifecycleState" for value "NOT_CERTIFIED_CHECKIN"
-
-#Submit
-  Then I want to submit this VF
-  And I want to check property "lifecycleState" for value "READY_FOR_CERTIFICATION"
+  And I want to check property "lifecycleState" for value "READY_FOR_CERTIFICATION"
\ No newline at end of file
diff --git a/openecomp-bdd/resources/json/operation/createOperation.json b/openecomp-bdd/resources/json/operation/createOperation.json
index 394be36..5d49440 100644
--- a/openecomp-bdd/resources/json/operation/createOperation.json
+++ b/openecomp-bdd/resources/json/operation/createOperation.json
@@ -1,12 +1,16 @@
 {
   "interfaceOperations": {
     "create": {
-      "description": "create operation",
+      "description": "abcd description",
       "inputParams": {
         "listToscaDataDefinition": [
           {
-            "paramName": "inp1",
-            "paramId": "68443b9d-9405-458e-811f-b62dd4975fcb.nf_naming"
+            "paramName": "sd",
+            "paramId": "67c72959-0a05-4436-9339-534aa44c9fd0.nf_naming"
+          },
+          {
+            "paramName": "sdf",
+            "paramId": "67c72959-0a05-4436-9339-534aa44c9fd0.nf_naming_code"
           }
         ]
       },
@@ -18,7 +22,9 @@
           }
         ]
       },
-      "operationType": "create"
+      "operationType": "create",
+      "workflowId" : "w_id1",
+      "workflowVersionId" : "w_version_id11"
     }
   }
 }
\ No newline at end of file
diff --git a/openecomp-bdd/stepDefinitions/InterfaceOperationSteps.js b/openecomp-bdd/stepDefinitions/InterfaceOperationSteps.js
index 14c5610..1bfd4c3 100644
--- a/openecomp-bdd/stepDefinitions/InterfaceOperationSteps.js
+++ b/openecomp-bdd/stepDefinitions/InterfaceOperationSteps.js
@@ -43,30 +43,16 @@
 
 When('I want to create an Operation', function()  {
     let inputData = util.getJSONFromFile('resources/json/operation/createOperation.json');
-    //let path = '/catalog/resources/f3dc81bb-85e9-4dfd-bd1b-37f5dc5e5534/interfaceOperations';
     let path = '/catalog/resources/' + this.context.vf.uniqueId +'/interfaceOperations';
 
     inputData.interfaceOperations.create.operationType = makeType();
-    inputData.interfaceOperations.create.inputParams.listToscaDataDefinition[0].paramName = util.random();
-    inputData.interfaceOperations.create.inputParams.listToscaDataDefinition[0].paramId = this.context.vf.id;
-
-    return util.request(this.context, 'POST', path, inputData, false, 'vf').then(result => {
-    this.context.item = {uniqueId : result.data.uniqueId, operationType : result.data.operationType};
-    this.context.operation = {uniqueId : result.data.uniqueId, operationType : result.data.operationType};
-});
-});
-
-
-When('I want to create an Operation with outputParameter', function()  {
-    let inputData = util.getJSONFromFile('resources/json/operation/createOperation.json');
-    //let path = '/catalog/resources/f3dc81bb-85e9-4dfd-bd1b-37f5dc5e5534/interfaceOperations';
-    let path = '/catalog/resources/' + this.context.vf.uniqueId +'/interfaceOperations';
-
-    inputData.interfaceOperations.create.operationType = makeType();
+    inputData.interfaceOperations.create.description = makeType();
     inputData.interfaceOperations.create.inputParams.listToscaDataDefinition[0].paramName = util.random();
     inputData.interfaceOperations.create.inputParams.listToscaDataDefinition[0].paramId = this.context.vf.id;
     inputData.interfaceOperations.create.outputParams.listToscaDataDefinition[0].paramName = util.random();
     inputData.interfaceOperations.create.outputParams.listToscaDataDefinition[0].paramId = this.context.vf.id;
+    inputData.interfaceOperations.create.workflowId = makeType();
+    inputData.interfaceOperations.create.workflowVersionId = makeType();
 
     return util.request(this.context, 'POST', path, inputData, false, 'vf').then(result => {
         this.context.item = {uniqueId : result.data.uniqueId, operationType : result.data.operationType};
@@ -75,6 +61,7 @@
 });
 
 
+
 When('I want to list Operations', function () {
     let path = '/catalog/resources/' + this.context.vf.uniqueId + '/filteredDataByParams?include=interfaces';
     return util.request(this.context, 'GET', path, null, false, 'vf').then((result)=> {
