diff --git a/robot/resources/aai/create_service.robot b/robot/resources/aai/create_service.robot
index 38aef3f..bcf14e3 100644
--- a/robot/resources/aai/create_service.robot
+++ b/robot/resources/aai/create_service.robot
@@ -12,56 +12,56 @@
 
 
 *** Variables ***
-${INDEX PATH}     /aai/v8 
+${INDEX PATH}     /aai/v11
 ${ROOT_SERVICE_PATH}  /service-design-and-creation/services
 
 ${SYSTEM USER}    robot-ete
 ${AAI_ADD_SERVICE_BODY}=    robot/assets/templates/aai/add_service_body.template
 
-*** Keywords ***    
+*** Keywords ***
 Create Service If Not Exists
-    [Documentation]    Creates a service in A&AI if it doesn't exist	
+    [Documentation]    Creates a service in A&AI if it doesn't exist
     [Arguments]    ${service_type}
     ${dict}=    Get Services
-    ${status}    ${value}=    Run Keyword And Ignore Error    Dictionary Should Contain Key    ${dict}    ${service_type} 
+    ${status}    ${value}=    Run Keyword And Ignore Error    Dictionary Should Contain Key    ${dict}    ${service_type}
     Run Keyword If    '${status}' == 'FAIL'    Create Service    ${service_type}
-    
+
 Create Service
-    [Documentation]    Creates a service in A&AI	
+    [Documentation]    Creates a service in A&AI
     [Arguments]    ${service_type}
-    ${uuid}=    Generate UUID 
-    ${data_template}=    OperatingSystem.Get File    ${AAI_ADD_SERVICE_BODY}  
-    ${arguments}=    Create Dictionary    service_type=${service_type}    UUID=${uuid}       
+    ${uuid}=    Generate UUID
+    ${data_template}=    OperatingSystem.Get File    ${AAI_ADD_SERVICE_BODY}
+    ${arguments}=    Create Dictionary    service_type=${service_type}    UUID=${uuid}
     ${data}=	Fill JSON Template    ${data_template}    ${arguments}
     ${fullpath}=    Catenate         ${INDEX PATH}${ROOT_SERVICE_PATH}/service/${uuid}
 	${put_resp}=    Run A&AI Put Request     ${fullpath}    ${data}
     Should Be Equal As Strings 	${put_resp.status_code} 	201
 	[Return]  ${put_resp.status_code}
 
-    
+
 Delete Service If Exists
-    [Documentation]    Deletes a service in A&AI if it exists	
+    [Documentation]    Deletes a service in A&AI if it exists
     [Arguments]    ${service_type}
     ${dict}=    Get Services
-    ${status}    ${value}=    Run Keyword And Ignore Error    Dictionary Should Contain Key    ${dict}    ${service_type} 
+    ${status}    ${value}=    Run Keyword And Ignore Error    Dictionary Should Contain Key    ${dict}    ${service_type}
     Run Keyword If    '${status}' == 'PASS'    Delete Service    ${dict['${service_type}']}
 
 Delete Service
-    [Documentation]    Delete  passed service in A&AI	
+    [Documentation]    Delete  passed service in A&AI
     [Arguments]    ${dict}
-    ${uuid}=    Get From Dictionary    ${dict}     service-id 
+    ${uuid}=    Get From Dictionary    ${dict}     service-id
     ${resource_version}=    Get From Dictionary    ${dict}     resource-version
     ${fullpath}=    Catenate         ${INDEX PATH}${ROOT_SERVICE_PATH}/service/${uuid}
-	${resp}=    Run A&AI Delete Request    ${fullpath}    ${resource_version}    
+	${resp}=    Run A&AI Delete Request    ${fullpath}    ${resource_version}
     Should Be Equal As Strings 	${resp.status_code} 	204
 
-    
+
 Get Services
-    [Documentation]    Creates a service in A&AI	
+    [Documentation]    Creates a service in A&AI
 	${resp}=    Run A&AI Get Request     ${INDEX PATH}${ROOT_SERVICE_PATH}
-	${dict}=    Create Dictionary    
+	${dict}=    Create Dictionary
     ${status}    ${value}=    Run Keyword And Ignore Error    Should Be Equal As Strings 	${resp.status_code} 	200
-    Run Keyword If    '${status}' == 'PASS'    Update Service Dictionary    ${dict}    ${resp.json()}      
+    Run Keyword If    '${status}' == 'PASS'    Update Service Dictionary    ${dict}    ${resp.json()}
 	[Return]  ${dict}
 
 Update Service Dictionary
@@ -69,7 +69,7 @@
     ${list}=    Evaluate    ${json}['service']
     :for   ${map}    in    @{list}
     \    ${status}    ${service_type}=     Run Keyword And Ignore Error    Get From Dictionary    ${map}    service-description
-    \    Run Keyword If    '${status}' == 'PASS'    Set To Dictionary    ${dict}    ${service_type}=${map}    
+    \    Run Keyword If    '${status}' == 'PASS'    Set To Dictionary    ${dict}    ${service_type}=${map}
     Log    ${dict}
 
 
