diff --git a/src/test/cord-api/Framework/utils/utils.py b/src/test/cord-api/Framework/utils/utils.py
index 38a148f..48dcae2 100644
--- a/src/test/cord-api/Framework/utils/utils.py
+++ b/src/test/cord-api/Framework/utils/utils.py
@@ -9,6 +9,7 @@
 import uuid
 import random
 import re
+import yaml
 
 class utils(object):
 
@@ -228,6 +229,20 @@
         else:
             return str(num)
 
+    def get_dynamic_resources(self, inputfile, resource):
+        resourceNames = []
+        names = {}
+        dnames = []
+        with open(inputfile, 'r') as f:
+            contents = yaml.load(f)
+        resources = contents[resource]
+        for i in resources:
+            resourceNames.append(i["name"])
+        for i in resourceNames:
+            names['name']=i
+            dnames.append(names.copy())
+        return dnames
+
 '''
 #Test
 dict_list = {
diff --git a/src/test/cord-api/Framework/utils/utils.robot b/src/test/cord-api/Framework/utils/utils.robot
index d456308..41944a4 100644
--- a/src/test/cord-api/Framework/utils/utils.robot
+++ b/src/test/cord-api/Framework/utils/utils.robot
@@ -73,3 +73,12 @@
     SSHLibrary.Close Connection
     Log    ${container_logs}
     [Return]    ${container_logs}
+
+Remove Value From List
+    [Arguments]    ${list}    ${val}
+    ${length}=    Get Length    ${list}
+    : FOR    ${INDEX}    IN RANGE    0    ${length}-1
+    \    Log    ${list[${INDEX}]}
+    \    ${value}=    Get Dictionary Values    ${list[${INDEX}]}
+    \    Log    ${value[0]}
+    \    Run Keyword If    '${value[0]}' == '${val}'    Remove From List    ${list}    ${INDEX}
diff --git a/src/test/cord-api/Tests/Ch_DefaultServiceCheck.txt b/src/test/cord-api/Tests/Ch_DefaultServiceCheck.txt
index 2d9b5f2..07c7a68 100644
--- a/src/test/cord-api/Tests/Ch_DefaultServiceCheck.txt
+++ b/src/test/cord-api/Tests/Ch_DefaultServiceCheck.txt
@@ -9,11 +9,13 @@
 Library           RequestsLibrary
 Library           ../Framework/utils/utils.py
 Library           ../Framework/restApi.py
+Resource          ../Framework/utils/utils.robot
 
 *** Variables ***
 ${USER}           admin
 ${PASSWORD}       admin
-${PATHFILE}       ${CURDIR}/data/Ch_defaultServices.json
+${PROFILE}        mock-rcord
+${PROFILE_FILE}   %{HOME}/cord/build/platform-install/profile_manifests/${PROFILE}.yml
 
 *** Test Cases ***    TYPE
 Test Service Sanity
@@ -21,8 +23,13 @@
 
 *** Keywords ***
 Read InputFile
-    ${serviceList}=    utils.jsonToList    ${PATHFILE}    ServiceInfo
-    Set Suite Variable    ${slist}    ${serviceList}
+    ${status}    ${dynamicServiceList}=    Run Keyword And Ignore Error    utils.get_dynamic_resources    ${PROFILE_FILE}    xos_services
+    Run Keyword If    '${status}' == 'FAIL'    Fail    No Services in given profile manifest
+    Set Suite Variable    ${dynamicServiceList}
+    ##need to remove openstack and onos from xos_services list in each manifest as these services arent treated as typical xos synchronizers
+    utils.Remove Value From List    ${dynamicServiceList}    openstack
+    utils.Remove Value From List    ${dynamicServiceList}    onos
+    Log    ${dynamicServiceList}
 
 Verify Service Sanity
     [Arguments]    ${type}
@@ -32,6 +39,6 @@
     ${json_result}=    restApi.ApiGet    CH_CORE_SERVICES
     ${json_result_list}=    Get From Dictionary    ${json_result}    items
     Log    ${json_result_list}
-    ${serviceList}=    Get Variable Value    ${slist}
-    ${test_result}=    utils.compare_list_of_dicts    ${serviceList}    ${json_result_list}
-    Should Be True    ${test_result}
+    ${dList}=    Get Variable Value    ${dynamicServiceList}
+    ${test_result}=    utils.compare_list_of_dicts    ${dList}    ${json_result_list}
+    Should Be True    ${test_result}
\ No newline at end of file
diff --git a/src/test/cord-api/Tests/Ch_defaultImagesCheck.txt b/src/test/cord-api/Tests/Ch_defaultImagesCheck.txt
index 541cf80..3346864 100644
--- a/src/test/cord-api/Tests/Ch_defaultImagesCheck.txt
+++ b/src/test/cord-api/Tests/Ch_defaultImagesCheck.txt
@@ -1,5 +1,5 @@
 *** Settings ***
-Documentation     Test suite for checking default images for R-CORD
+Documentation     Test suite for checking default images
 Suite Setup       Read InputFile
 Test Template     Verify Image Check
 Library           Collections
@@ -13,16 +13,20 @@
 *** Variables ***
 ${USER}           admin
 ${PASSWORD}       admin
+${PROFILE}        mock-rcord
+${PROFILE_FILE}   %{HOME}/cord/build/platform-install/profile_manifests/${PROFILE}.yml
 ${PATHFILE}       ${CURDIR}/data/defaultImages.json
 
 *** Test Cases ***    TYPE
-Test Default Images on R-CORD
+Test Default Images
                       IMAGE
 
 *** Keywords ***
 Read InputFile
-    ${imageList}=    utils.jsonToList    ${PATHFILE}    imagesInfo
-    Set Suite Variable    ${ilist}    ${imageList}
+    ${defaultImageList}=    utils.jsonToList    ${PATHFILE}    imagesInfo
+    ${status}    ${dynamicImageList}=    Run Keyword And Ignore Error    utils.get_dynamic_resources    ${PROFILE_FILE}    xos_images
+    ${imageList}=    Set Variable If    '${status}' == 'FAIL'    ${defaultImageList}    ${dynamicImageList}
+    Set Suite Variable    ${imageList}
 
 Verify Image Check
     [Arguments]    ${type}
@@ -32,6 +36,7 @@
     ${json_result}=    restApi.ApiGet    CH_CORE_IMAGES
     ${json_result_list}=    Get From Dictionary    ${json_result}    items
     Log    ${json_result_list}
-    ${imageList}=    Get Variable Value    ${ilist}
-    ${test_result}=    utils.compare_list_of_dicts    ${imageList}    ${json_result_list}
+    ${image_list}=    Get Variable Value    ${imageList}
+    ${test_result}=    utils.compare_list_of_dicts    ${image_list}    ${json_result_list}
     Should Be True    ${test_result}
+
diff --git a/src/test/cord-api/Tests/data/defaultImages.json b/src/test/cord-api/Tests/data/defaultImages.json
index e308f6f..c29f2bf 100644
--- a/src/test/cord-api/Tests/data/defaultImages.json
+++ b/src/test/cord-api/Tests/data/defaultImages.json
@@ -1,8 +1,6 @@
 {
     "imagesInfo":
     [
-        {"name": "ceilometer-service-trusty-server-multi-nic"},
-        {"name": "trusty-server-multi-nic"},
-        {"name": "vsg-1.1"}
+        {"name": "trusty-server-multi-nic"}
     ]
 }
diff --git a/src/test/setup/requirements.txt b/src/test/setup/requirements.txt
index 713b3e5..e6c8dab 100644
--- a/src/test/setup/requirements.txt
+++ b/src/test/setup/requirements.txt
@@ -17,6 +17,7 @@
 twisted
 pexpect
 apiclient
+pyyaml
 #python-libmaas
 #maasclient
 #maasutil
