diff --git a/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java
index 891c7f8..911cd6a 100644
--- a/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java
+++ b/src/main/java/org/onap/clamp/clds/client/req/policy/OperationalPolicyReq.java
@@ -24,10 +24,7 @@
 package org.onap.clamp.clds.client.req.policy;
 
 import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFLogger.Level;
 import com.att.eelf.configuration.EELFManager;
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
 
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
@@ -44,9 +41,7 @@
 import org.onap.clamp.clds.model.properties.ModelProperties;
 import org.onap.clamp.clds.model.properties.PolicyChain;
 import org.onap.clamp.clds.model.properties.PolicyItem;
-import org.onap.clamp.clds.model.properties.Tca;
 import org.onap.policy.api.AttributeType;
-import org.onap.policy.controlloop.policy.OperationsAccumulateParams;
 import org.onap.policy.controlloop.policy.Policy;
 import org.onap.policy.controlloop.policy.PolicyResult;
 import org.onap.policy.controlloop.policy.Target;
@@ -86,24 +81,10 @@
         Global global = prop.getGlobal();
         prop.setCurrentModelElementId(modelElementId);
         prop.setPolicyUniqueId(policyChain.getPolicyId());
-        String templateName = "";
-        String operationTopic = "";
-        String notificationTopic = "";
-        String controller = "";
-        Tca tca = prop.getType(Tca.class);
-        if (tca != null && tca.isFound()) {
-            if (global.getActionSet().equalsIgnoreCase("enbRecipe")) {
-                templateName = refProp.getStringValue("op.eNodeB.templateName", global.getService());
-                operationTopic = refProp.getStringValue("op.eNodeB.operationTopic", global.getService());
-                notificationTopic = refProp.getStringValue("op.eNodeB.notificationTopic", global.getService());
-                controller = refProp.getStringValue("op.eNodeB.controller", global.getService());
-            } else {
-                templateName = refProp.getStringValue("op.templateName", global.getService());
-                operationTopic = refProp.getStringValue("op.operationTopic", global.getService());
-                notificationTopic = refProp.getStringValue("op.notificationTopic", global.getService());
-                controller = refProp.getStringValue("op.controller", global.getService());
-            }
-        }
+        String templateName = refProp.getStringValue("op.templateName", global.getService());
+        String operationTopic = refProp.getStringValue("op.operationTopic", global.getService());
+        String notificationTopic = refProp.getStringValue("op.notificationTopic", global.getService());
+        String controller = refProp.getStringValue("op.controller", global.getService());
         String recipeTopic = refProp.getStringValue("op.recipeTopic", global.getService());
         // ruleAttributes
         logger.info("templateName=" + templateName);
@@ -133,8 +114,7 @@
         } else {
             logger.info("operationTopic=" + operationTopic);
             // format yaml
-            String yaml = (tca != null && tca.isFound()) ? formateNodeBYaml(refProp, prop, modelElementId, policyChain)
-                    : formatYaml(refProp, prop, modelElementId, policyChain);
+            String yaml = formatYaml(refProp, prop, modelElementId, policyChain);
             ruleAttributes.put("OperationTopic", operationTopic);
             ruleAttributes.put("ControlLoopYaml", yaml);
         }
@@ -235,74 +215,6 @@
         return URLEncoder.encode(results.getSpecification(), "UTF-8");
     }
 
-    /**
-     * Format Operational Policy yaml.
-     *
-     * @param refProp
-     * @param prop
-     * @param modelElementId
-     * @param policyChain
-     * @return
-     * @throws BuilderException
-     * @throws UnsupportedEncodingException
-     */
-    protected static String formateNodeBYaml(ClampProperties refProp, ModelProperties prop, String modelElementId,
-            PolicyChain policyChain) throws BuilderException, UnsupportedEncodingException {
-        // get property objects
-        Global global = prop.getGlobal();
-        prop.setCurrentModelElementId(modelElementId);
-        prop.setPolicyUniqueId(policyChain.getPolicyId());
-        // convert values to SDC objects
-        Service service = new Service(global.getService());
-        Resource[] vfResources = convertToResource(global.getResourceVf(), ResourceType.VF);
-        Resource[] vfcResources = convertToResource(global.getResourceVfc(), ResourceType.VFC);
-        // create builder
-        ControlLoopPolicyBuilder builder = ControlLoopPolicyBuilder.Factory.buildControlLoop(prop.getControlName(),
-                policyChain.getTimeout(), service, vfResources);
-        builder.addResource(vfcResources);
-        // process each policy
-        Map<String, Policy> policyObjMap = new HashMap<>();
-        List<PolicyItem> policyItemList = addAOTSActorRecipe(refProp, global.getService(),
-                policyChain.getPolicyItems());
-        Policy lastPolicyObj = new Policy();
-        for (PolicyItem policyItem : policyItemList) {
-            Target target = new Target();
-            target.setType(TargetType.VM);
-            target.setResourceID(policyItem.getTargetResourceId());
-            String policyName = policyItem.getRecipe() + " Policy";
-            Policy policyObj;
-            if (policyItemList.indexOf(policyItem) == 0) {
-                // To set up time window payload for trigger policy
-                Map<String, String> payloadMap = new HashMap<>();
-                payloadMap.put("timeWindow", refProp.getStringValue("op.eNodeB.timeWindow"));
-                String policyDescription = policyItem.getRecipe()
-                        + " Policy - the trigger (no parent) policy - created by CLDS";
-                policyObj = builder.setTriggerPolicy(policyName, policyDescription, policyItem.getActor(), target,
-                        policyItem.getRecipe(), payloadMap, policyItem.getMaxRetries(), policyItem.getRetryTimeLimit());
-            } else {
-                Policy parentPolicyObj = policyObjMap.get(policyItem.getParentPolicy());
-                String policyDescription = policyItem.getRecipe() + " Policy - triggered conditionally by "
-                        + parentPolicyObj.getName() + " - created by CLDS";
-                policyObj = builder.setPolicyForPolicyResult(policyName, policyDescription, policyItem.getActor(),
-                        target, policyItem.getRecipe(), null, policyItem.getMaxRetries(),
-                        policyItem.getRetryTimeLimit(), parentPolicyObj.getId(),
-                        convertToPolicyResult(policyItem.getParentPolicyConditions()));
-                lastPolicyObj = policyObj;
-                logger.info("policyObj.id=" + policyObj.getId() + "; parentPolicyObj.id=" + parentPolicyObj.getId());
-            }
-            policyObjMap.put(policyItem.getId(), policyObj);
-        }
-        // To set up operations accumulate params
-        OperationsAccumulateParams operationsAccumulateParams = new OperationsAccumulateParams();
-        operationsAccumulateParams.setLimit(Integer.valueOf(refProp.getStringValue("op.eNodeB.limit")));
-        operationsAccumulateParams.setPeriod(refProp.getStringValue("op.eNodeB.period"));
-        builder.addOperationsAccumulateParams(lastPolicyObj.getId(), operationsAccumulateParams);
-        // Build the specification
-        Results results = builder.buildSpecification();
-        validate(results);
-        return URLEncoder.encode(results.getSpecification(), "UTF-8");
-    }
-
     private static void validate(Results results) {
         if (results.isValid()) {
             logger.info("results.getSpecification()=" + results.getSpecification());
@@ -319,47 +231,6 @@
     }
 
     /**
-     * Adding AOTS actor and other recipe for yaml
-     *
-     * @param inOrigList
-     * @return
-     */
-    private static List<PolicyItem> addAOTSActorRecipe(ClampProperties refProp, String service,
-            List<PolicyItem> inOrigList) {
-        List<PolicyItem> outList = new ArrayList<>();
-        try {
-            PolicyItem policyItem = inOrigList.get(0);
-            ObjectNode rootNode = (ObjectNode) refProp.getJsonTemplate("op.eNodeB.recipe", service);
-            Iterator<JsonNode> itr = rootNode.get("eNodeBRecipes").elements();
-            while (itr.hasNext()) {
-                PolicyItem policyItemObj = (PolicyItem) policyItem.clone();
-                JsonNode recipeNode = itr.next();
-                policyItemObj.setId(recipeNode.path("Recipe").asText());
-                policyItemObj.setActor(recipeNode.path("Actor").asText());
-                policyItemObj.setRecipe(recipeNode.path("Recipe").asText());
-                policyItemObj.setParentPolicy(recipeNode.path("ParentPolicy").asText());
-                if (!recipeNode.path("Retry").asText().isEmpty()) {
-                    policyItemObj.setMaxRetries(Integer.parseInt(recipeNode.path("Retry").asText()));
-                }
-                if (!recipeNode.path("TimeLimit").asText().isEmpty()) {
-                    policyItemObj.setRetryTimeLimit(Integer.parseInt(recipeNode.path("TimeLimit").asText()));
-                }
-                if (!recipeNode.path("PPConditions").asText().isEmpty()) {
-                    List<String> parentPolicyConditions = new ArrayList<>();
-                    for (String ppCondition : recipeNode.path("PPConditions").asText().split(",")) {
-                        parentPolicyConditions.add(ppCondition);
-                    }
-                    policyItemObj.setParentPolicyConditions(parentPolicyConditions);
-                }
-                outList.add(policyItemObj);
-            }
-        } catch (Exception e) {
-            logger.log(Level.ERROR, "Error", e);
-        }
-        return outList;
-    }
-
-    /**
      * Order list of PolicyItems so that parents come before any of their
      * children
      *
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index d6be03c..457ddbd 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -168,17 +168,6 @@
 clamp.config.op.notificationTopic=POLICY-CL-MGT
 clamp.config.op.controller=amsterdam
 clamp.config.op.policy.appc=APPC
-# by service: vSCP
-clamp.config.op.templateName.vSCP=ClosedLoopTemplate
-clamp.config.op.controller.vSCP=1607-f5fw
-clamp.config.op.eNodeB.templateName=ClosedLoopControlName
-clamp.config.op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00
-clamp.config.op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL
-clamp.config.op.eNodeB.controller=amsterdam
-clamp.config.op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json
-clamp.config.op.eNodeB.timeWindow=35
-clamp.config.op.eNodeB.limit=2
-clamp.config.op.eNodeB.period=10s
 #
 # Sdc service properties
 clamp.config.sdc.catalog.url=http://sdc.api.simpledemo.onap.org:8085/sdc/v1/catalog/
diff --git a/src/main/resources/clds/templates/op-eNodeB-recipe.json b/src/main/resources/clds/templates/op-eNodeB-recipe.json
deleted file mode 100644
index 7098987..0000000
--- a/src/main/resources/clds/templates/op-eNodeB-recipe.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-	"eNodeBRecipes": [
-		{
-			"Actor": "AOTS",
-			"Recipe": "checkENodeBTicketHours",
-			"ParentPolicy": "",
-			"PPConditions": "",
-			"Retry": "0",
-			"TimeLimit": "120"
-		},
-		{
-			"Actor": "AOTS",
-			"Recipe": "checkEquipmentStatus",
-			"ParentPolicy": "checkENodeBTicketHours",
-			"PPConditions": "Success",
-			"Retry": "0",
-			"TimeLimit": "120"
-		},
-		{
-			"Actor": "AOTS",
-			"Recipe": "checkEimStatus",
-			"ParentPolicy": "checkEquipmentStatus",
-			"PPConditions": "Success",
-			"Retry": "0",
-			"TimeLimit": "120"
-		},
-		{
-			"Actor": "AOTS",
-			"Recipe": "checkMaintenanceWindow",
-			"ParentPolicy": "checkEimStatus",
-			"PPConditions": "Success",
-			"Retry": "0",
-			"TimeLimit": "120"
-		},
-		{
-			"Actor": "SDNR",
-			"Recipe": "Reset",
-			"ParentPolicy": "checkMaintenanceWindow",
-			"PPConditions": "Success",
-			"Retry": "",
-			"TimeLimit": ""
-		}
-	]
-}
diff --git a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java
index 43f212c..a91da8a 100644
--- a/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java
+++ b/src/test/java/org/onap/clamp/clds/it/OperationPolicyReqItCase.java
@@ -74,20 +74,24 @@
         // now validate the Yaml, to do so we replace the dynamic ID by a known
         // key so that we can compare it
         String yaml = URLDecoder.decode(attributes.get(0).get(AttributeType.RULE).get("ControlLoopYaml"), "UTF-8");
-        yaml = yaml.replaceAll("trigger_policy: (.*)", "trigger_policy: <generatedId>");
-        yaml = yaml.replaceAll("id: (.*)", "id: <generatedId>");
-        yaml = yaml.replaceAll("success: (.*)", "success: <generatedId>");
-        // Remove this field as not always present (depends of policy api)
-        yaml = yaml.replaceAll("  pnf: null" + System.lineSeparator(), "");
-        yaml = yaml.substring(yaml.indexOf("controlLoop:"), yaml.length());
+        yaml = replaceGeneratedValues(yaml);
         assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-1.yaml"), yaml);
         yaml = URLDecoder.decode(attributes.get(1).get(AttributeType.RULE).get("ControlLoopYaml"), "UTF-8");
+        yaml = replaceGeneratedValues(yaml);
+        assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-2.yaml"), yaml);
+    }
+
+    private String replaceGeneratedValues(String yaml) {
         yaml = yaml.replaceAll("trigger_policy: (.*)", "trigger_policy: <generatedId>");
         yaml = yaml.replaceAll("id: (.*)", "id: <generatedId>");
         yaml = yaml.replaceAll("success: (.*)", "success: <generatedId>");
         // Remove this field as not always present (depends of policy api)
         yaml = yaml.replaceAll("  pnf: null" + System.lineSeparator(), "");
+        yaml = yaml.replaceAll("failure: (.*)", "failure: <generatedId>");
+        yaml = yaml.replaceAll("failure_exception: (.*)", "failure_exception: <generatedId>");
+        yaml = yaml.replaceAll("failure_retries: (.*)", "failure_retries: <generatedId>");
+        yaml = yaml.replaceAll("failure_timeout: (.*)", "failure_timeout: <generatedId>");
         yaml = yaml.substring(yaml.indexOf("controlLoop:"), yaml.length());
-        assertEquals(ResourceFileUtil.getResourceAsString("example/operational-policy/yaml-policy-chain-2.yaml"), yaml);
+        return yaml;
     }
 }
diff --git a/src/test/resources/application.properties b/src/test/resources/application.properties
index e0775ec..535f54a 100644
--- a/src/test/resources/application.properties
+++ b/src/test/resources/application.properties
@@ -166,17 +166,6 @@
 clamp.config.op.notificationTopic=POLICY-CL-MGT
 clamp.config.op.controller=amsterdam
 clamp.config.op.policy.appc=APPC
-# by service: vSCP
-clamp.config.op.templateName.vSCP=ClosedLoopTemplate
-clamp.config.op.controller.vSCP=1607-f5fw
-clamp.config.op.eNodeB.templateName=ClosedLoopControlName
-clamp.config.op.eNodeB.operationTopic=com.onap.sdnr.RanCLRequest-v00
-clamp.config.op.eNodeB.notificationTopic=com.onap-policy.IST-ENODEB-CL
-clamp.config.op.eNodeB.controller=amsterdam
-clamp.config.op.eNodeB.recipe=classpath:/clds/templates/op-eNodeB-recipe.json
-clamp.config.op.eNodeB.timeWindow=35
-clamp.config.op.eNodeB.limit=2
-clamp.config.op.eNodeB.period=10s
 #
 # Sdc service properties
 clamp.config.sdc.catalog.url=http://localhost:${docker.http-cache.port.host}/sdc/v1/catalog/
diff --git a/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml b/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml
index afe9fdd..fec0e1e 100644
--- a/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml
+++ b/src/test/resources/example/operational-policy/yaml-policy-chain-1.yaml
@@ -16,93 +16,36 @@
   trigger_policy: <generatedId>
   version: 2.0.0
 policies:
-- actor: AOTS
-  description: checkENodeBTicketHours Policy - the trigger (no parent) policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
+- actor: APPC
+  description: restart Policy - the trigger (no parent) policy - created by CLDS
+  failure: <generatedId>
+  failure_exception: <generatedId>
   failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
+  failure_retries: <generatedId>
+  failure_timeout: <generatedId>
   id: <generatedId>
-  name: checkENodeBTicketHours Policy
+  name: restart Policy
   operationsAccumulateParams: null
-  payload:
-    timeWindow: '35'
-  recipe: checkENodeBTicketHours
-  retry: 0
+  payload: null
+  recipe: restart
+  retry: 3
   success: <generatedId>
   target:
     resourceID: resource-id
     type: VM
-  timeout: 120
-- actor: AOTS
-  description: checkEquipmentStatus Policy - triggered conditionally by checkENodeBTicketHours Policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
+  timeout: 180
+- actor: APPC
+  description: rebuild Policy - triggered conditionally by restart Policy - created by CLDS
+  failure: <generatedId>
+  failure_exception: <generatedId>
   failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
+  failure_retries: <generatedId>
+  failure_timeout: <generatedId>
   id: <generatedId>
-  name: checkEquipmentStatus Policy
+  name: rebuild Policy
   operationsAccumulateParams: null
   payload: null
-  recipe: checkEquipmentStatus
-  retry: 0
-  success: <generatedId>
-  target:
-    resourceID: resource-id
-    type: VM
-  timeout: 120
-- actor: AOTS
-  description: checkEimStatus Policy - triggered conditionally by checkEquipmentStatus Policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
-  failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
-  id: <generatedId>
-  name: checkEimStatus Policy
-  operationsAccumulateParams: null
-  payload: null
-  recipe: checkEimStatus
-  retry: 0
-  success: <generatedId>
-  target:
-    resourceID: resource-id
-    type: VM
-  timeout: 120
-- actor: AOTS
-  description: checkMaintenanceWindow Policy - triggered conditionally by checkEimStatus Policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
-  failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
-  id: <generatedId>
-  name: checkMaintenanceWindow Policy
-  operationsAccumulateParams: null
-  payload: null
-  recipe: checkMaintenanceWindow
-  retry: 0
-  success: <generatedId>
-  target:
-    resourceID: resource-id
-    type: VM
-  timeout: 120
-- actor: SDNR
-  description: Reset Policy - triggered conditionally by checkMaintenanceWindow Policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
-  failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
-  id: <generatedId>
-  name: Reset Policy
-  operationsAccumulateParams:
-    limit: 2
-    period: 10s
-  payload: null
-  recipe: Reset
+  recipe: rebuild
   retry: 3
   success: <generatedId>
   target:
diff --git a/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml b/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml
index afe9fdd..fec0e1e 100644
--- a/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml
+++ b/src/test/resources/example/operational-policy/yaml-policy-chain-2.yaml
@@ -16,93 +16,36 @@
   trigger_policy: <generatedId>
   version: 2.0.0
 policies:
-- actor: AOTS
-  description: checkENodeBTicketHours Policy - the trigger (no parent) policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
+- actor: APPC
+  description: restart Policy - the trigger (no parent) policy - created by CLDS
+  failure: <generatedId>
+  failure_exception: <generatedId>
   failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
+  failure_retries: <generatedId>
+  failure_timeout: <generatedId>
   id: <generatedId>
-  name: checkENodeBTicketHours Policy
+  name: restart Policy
   operationsAccumulateParams: null
-  payload:
-    timeWindow: '35'
-  recipe: checkENodeBTicketHours
-  retry: 0
+  payload: null
+  recipe: restart
+  retry: 3
   success: <generatedId>
   target:
     resourceID: resource-id
     type: VM
-  timeout: 120
-- actor: AOTS
-  description: checkEquipmentStatus Policy - triggered conditionally by checkENodeBTicketHours Policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
+  timeout: 180
+- actor: APPC
+  description: rebuild Policy - triggered conditionally by restart Policy - created by CLDS
+  failure: <generatedId>
+  failure_exception: <generatedId>
   failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
+  failure_retries: <generatedId>
+  failure_timeout: <generatedId>
   id: <generatedId>
-  name: checkEquipmentStatus Policy
+  name: rebuild Policy
   operationsAccumulateParams: null
   payload: null
-  recipe: checkEquipmentStatus
-  retry: 0
-  success: <generatedId>
-  target:
-    resourceID: resource-id
-    type: VM
-  timeout: 120
-- actor: AOTS
-  description: checkEimStatus Policy - triggered conditionally by checkEquipmentStatus Policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
-  failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
-  id: <generatedId>
-  name: checkEimStatus Policy
-  operationsAccumulateParams: null
-  payload: null
-  recipe: checkEimStatus
-  retry: 0
-  success: <generatedId>
-  target:
-    resourceID: resource-id
-    type: VM
-  timeout: 120
-- actor: AOTS
-  description: checkMaintenanceWindow Policy - triggered conditionally by checkEimStatus Policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
-  failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
-  id: <generatedId>
-  name: checkMaintenanceWindow Policy
-  operationsAccumulateParams: null
-  payload: null
-  recipe: checkMaintenanceWindow
-  retry: 0
-  success: <generatedId>
-  target:
-    resourceID: resource-id
-    type: VM
-  timeout: 120
-- actor: SDNR
-  description: Reset Policy - triggered conditionally by checkMaintenanceWindow Policy - created by CLDS
-  failure: FINAL_FAILURE
-  failure_exception: FINAL_FAILURE_EXCEPTION
-  failure_guard: FINAL_FAILURE_GUARD
-  failure_retries: FINAL_FAILURE_RETRIES
-  failure_timeout: FINAL_FAILURE_TIMEOUT
-  id: <generatedId>
-  name: Reset Policy
-  operationsAccumulateParams:
-    limit: 2
-    period: 10s
-  payload: null
-  recipe: Reset
+  recipe: rebuild
   retry: 3
   success: <generatedId>
   target:
