diff --git a/src/main/java/org/onap/clamp/clds/service/LogService.java b/src/main/java/org/onap/clamp/clds/service/LogService.java
deleted file mode 100644
index 1c3d9dc..0000000
--- a/src/main/java/org/onap/clamp/clds/service/LogService.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- *                             reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License"); 
- * you may not use this file except in compliance with the License. 
- * You may obtain a copy of the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software 
- * distributed under the License is distributed on an "AS IS" BASIS, 
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
- * See the License for the specific language governing permissions and 
- * limitations under the License.
- * ============LICENSE_END============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.service;
-
-public interface LogService {
-
-    String logMessage(String logMessageText, String javamail, String springmail, String commonsmail);
-
-    String postLogMessage(String histEventList);
-
-    String createLogMessage(String startTime, String endTime, String serviceName);
-
-    String createLogMessageUsingHistory(String procInstId, String histEventList);
-
-    String CreateHistLog(String procInstId);
-
-}
diff --git a/src/main/java/org/onap/clamp/clds/service/LogServiceImpl.java b/src/main/java/org/onap/clamp/clds/service/LogServiceImpl.java
deleted file mode 100644
index 2f02aa6..0000000
--- a/src/main/java/org/onap/clamp/clds/service/LogServiceImpl.java
+++ /dev/null
@@ -1,295 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * ONAP CLAMP
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights
- *                             reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END============================================
- * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
- */
-
-package org.onap.clamp.clds.service;
-
-import com.att.ajsc.camunda.core.AttCamundaHistoryEvent;
-import com.att.ajsc.camunda.core.AttCamundaService;
-import com.att.eelf.configuration.EELFLogger;
-import com.att.eelf.configuration.EELFManager;
-import com.google.gson.Gson;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.Transport;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
-import javax.ws.rs.core.Context;
-
-import org.apache.commons.mail.Email;
-import org.apache.commons.mail.SimpleEmail;
-import org.apache.cxf.jaxrs.ext.MessageContext;
-import org.camunda.bpm.engine.HistoryService;
-import org.camunda.bpm.engine.RuntimeService;
-import org.camunda.bpm.engine.history.HistoricActivityInstance;
-import org.camunda.bpm.engine.impl.history.event.HistoricActivityInstanceEventEntity;
-import org.camunda.bpm.engine.runtime.ProcessInstance;
-import org.onap.clamp.clds.common.LogMessages;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.mail.MailException;
-import org.springframework.mail.SimpleMailMessage;
-import org.springframework.mail.javamail.JavaMailSenderImpl;
-import org.springframework.stereotype.Service;
-
-@Service
-public class LogServiceImpl implements LogService {
-    protected static final EELFLogger logger      = EELFManager.getInstance().getLogger(LogServiceImpl.class);
-    protected static final EELFLogger auditLogger = EELFManager.getInstance().getAuditLogger();
-
-    @Autowired
-    private RuntimeService            runtimeService;
-
-    @Autowired
-    private HistoryService            historyService;
-
-    @Context
-    private MessageContext            context;
-
-    public void setRuntimeService(RuntimeService runtimeService) {
-        this.runtimeService = runtimeService;
-    }
-
-    public LogServiceImpl() {
-        // needed for instantiation
-    }
-
-    @Override
-    public String logMessage(String logMessageText, String javamail, String springmail, String commonsmail) {
-        logger.info("Value of contexxt : " + context);
-        String convId = null;
-        if (context != null) {
-            convId = context.getHttpServletRequest().getHeader("X-CSI-ConversationId");
-            if (convId == null) {
-                convId = (String) context.getHttpServletRequest().getAttribute("X-CSI-ConversationId");
-            }
-            context.getHttpServletRequest().setAttribute("CALL_TYPE", "Testing");
-            AttCamundaService.setHttpRequest(context.getHttpServletRequest());
-        }
-        // input variables to example camunda process
-        Map<String, Object> variables = new HashMap<>();
-        variables.put("logMessageText", logMessageText);
-        if (convId != null) {
-            variables.put("conversationId", convId);
-        }
-
-        // BEGIN - added for send mail testing
-        // also added the following to the method signature: ,
-        // @QueryParam("javamail") String javamail, @QueryParam("springmail")
-        // String springmail, @QueryParam("commonsmail") String commonsmail
-        // if javamail parameter provided, assume it contains an email address.
-        // use Java Mail to send an email from that address, to that address
-        if (javamail != null && javamail.length() > 0) {
-            variables.put("javamail", javamail);
-            try {
-                Properties props = new Properties();
-                props.put("mail.smtp.host", "smtp.sbc.com"); // eMail.setHostName
-                Session session = Session.getInstance(props);
-                MimeMessage msg = new MimeMessage(session);
-
-                msg.setFrom(new InternetAddress(javamail)); // eMail.setFrom
-
-                InternetAddress[] fromAddresses = { new InternetAddress(javamail) };
-                msg.setReplyTo(fromAddresses); // eMail.addReplyTo
-                msg.setSubject("test message using javax.mail"); // eMail.setSubject
-                msg.setText(logMessageText); // eMail.setMsg
-
-                msg.addRecipient(Message.RecipientType.TO, new InternetAddress(javamail)); // eMail.addTo
-                Transport.send(msg);
-            } catch (MessagingException e) {
-                logger.error(LogMessages.LOGSERVICE_EMAIL_ERROR, e);
-            }
-        }
-
-        // if springmail parameter provided, assume it contains an email
-        // address.
-        // use Spring Mail to send an email from that address, to that address
-        if (springmail != null && springmail.length() > 0) {
-            variables.put("springmail", springmail);
-            JavaMailSenderImpl sender = new JavaMailSenderImpl();
-            SimpleMailMessage smsg = new SimpleMailMessage();
-
-            try {
-                sender.setHost("smtp.sbc.com"); // eMail.setHostName
-                smsg.setFrom(springmail); // eMail.setFrom
-                smsg.setReplyTo(springmail); // eMail.addReplyTo
-                smsg.setSubject("test message using spring mail"); // eMail.setSubject
-                smsg.setText(logMessageText); // eMail.setMsg
-                smsg.setTo(springmail); // eMail.addTo
-                sender.send(smsg);
-            } catch (MailException e) {
-                logger.error(LogMessages.LOGSERVICE_EMAIL_ERROR, e);
-            }
-        }
-
-        // if commonsmail parameter provided, assume it contains an email
-        // address.
-        // use Apache Commons Mail to send an email from that address, to that
-        // address
-        if (commonsmail != null && commonsmail.length() > 0) {
-            variables.put("commonsmail", commonsmail);
-            Email email = new SimpleEmail();
-            try {
-                email.setHostName("smtp.sbc.com");
-                email.setFrom(commonsmail);
-                email.addReplyTo(commonsmail);
-                email.setSubject("test message using commons mail");
-                email.setMsg(logMessageText);
-                email.addTo(commonsmail);
-                java.net.URL classUrl = this.getClass().getResource("com.sun.mail.util.TraceInputStream");
-                if (classUrl != null) {
-                    logger.info(LogMessages.LOGSERVICE_EMAIL_CLASS, classUrl.getFile());
-                } else {
-                    logger.info(LogMessages.LOGSERVICE_EMAIL_CLASS_NULL);
-                }
-                email.send();
-            } catch (Exception e) {
-                logger.error(LogMessages.LOGSERVICE_EMAIL_ERROR, e);
-            }
-        }
-        // END - added for send mail testing
-
-        // execute example camunda process, log-message-wf
-        ProcessInstance pi = runtimeService.startProcessInstanceByKey("log-message-wf", variables);
-        AttCamundaService.setHttpRequest(null);
-        // return text message of what was done
-        return "Started processDefinitionId=" + pi.getProcessDefinitionId() + ", processInstanceId="
-                + pi.getProcessInstanceId() + ", to log message: " + logMessageText;
-    }
-
-    @Override
-    public String postLogMessage(String histEventList) {
-        String message = "no logs Created";
-        logger.info("value of history events:" + histEventList);
-        Gson gson = new Gson();
-        AttCamundaHistoryEvent attCamundaHistoryEvent = gson.fromJson(histEventList, AttCamundaHistoryEvent.class);
-        if (attCamundaHistoryEvent != null && attCamundaHistoryEvent.getProcInstId() != null) {
-            logger.info(LogMessages.PROCESS_INSTANCE_ID, attCamundaHistoryEvent.getProcInstId());
-            if (context != null && context.getHttpServletRequest() != null
-                    && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) {
-                context.getHttpServletRequest().setAttribute("CALL_TYPE", "Testing");
-                List<HistoricActivityInstance> histActInstList = historyService.createHistoricActivityInstanceQuery()
-                        .processInstanceId(attCamundaHistoryEvent.getProcInstId()).list();
-
-                if (histActInstList != null && histActInstList.size() > 0) {
-                    for (HistoricActivityInstance currHistoricActivityInstance : histActInstList) {
-                        if (currHistoricActivityInstance != null
-                                && currHistoricActivityInstance.getActivityName() != null
-                                && currHistoricActivityInstance.getStartTime() != null
-                                && currHistoricActivityInstance.getEndTime() != null) {
-                            logger.info("value of serviceTrack:" + currHistoricActivityInstance);
-                            message = "Log Entry Created";
-                            logger.info(message);
-                        }
-                    }
-                }
-                if (attCamundaHistoryEvent.getHistoryEventList() != null
-                        && attCamundaHistoryEvent.getHistoryEventList().size() > 0) {
-                    List<HistoricActivityInstanceEventEntity> historyEventList = attCamundaHistoryEvent
-                            .getHistoryEventList();
-                    for (HistoricActivityInstanceEventEntity actiEvent : historyEventList) {
-                        // resolve null pointer exception if
-                        // actiEvent.getActivityName()
-                        message = "Log Entry Created";
-                    }
-                }
-            }
-        }
-        return message;
-    }
-
-    @Override
-    public String createLogMessage(String startTime, String endTime, String serviceName) {
-        String message = "no logs Created";
-
-        if (context != null && context.getHttpServletRequest() != null
-                && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) {
-            context.getHttpServletRequest().setAttribute("X-CSI-ClientApp", "AJSC-CSI~sdsds");
-            /*
-             * PerformanceTrackingBean trackingBean =(PerformanceTrackingBean)
-             * context.getHttpServletRequest().getAttribute(
-             * "PERFORMANCE_TRACKER_BEAN");
-             * PerformanceTracking.addInvokeServiceTrack(trackingBean,
-             * serviceName, Long.valueOf(startTime), Long.valueOf(endTime),
-             * "Completed", 500, 1000) ;
-             */
-            message = "Log Entry Created";
-        }
-        // return text message of what was done
-        return message;
-    }
-
-    @Override
-    public String createLogMessageUsingHistory(String procInstId, String histEventList) {
-        String message = "no logs Created";
-        logger.info("value of history events:" + histEventList);
-        logger.info("value of events:" + histEventList + ":" + histEventList);
-        if (context != null && context.getHttpServletRequest() != null
-                && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) {
-            context.getHttpServletRequest().setAttribute("CALL_TYPE", "Testing");
-            List<HistoricActivityInstance> histActInstList = historyService.createHistoricActivityInstanceQuery()
-                    .processInstanceId(procInstId).list();
-
-            if (histActInstList != null && histActInstList.size() > 0) {
-                for (HistoricActivityInstance currHistoricActivityInstance : histActInstList) {
-                    if (currHistoricActivityInstance != null && currHistoricActivityInstance.getActivityName() != null
-                            && currHistoricActivityInstance.getStartTime() != null
-                            && currHistoricActivityInstance.getEndTime() != null) {
-                        logger.info("value of serviceTrack:" + currHistoricActivityInstance);
-                        message = "Log Entry Created";
-                        logger.info(message);
-                    }
-                }
-            }
-        }
-        return message;
-    }
-
-    @Override
-    public String CreateHistLog(String procInstId) {
-        String message = "no logs Created";
-        if (context != null && context.getHttpServletRequest() != null
-                && context.getHttpServletRequest().getAttribute("PERFORMANCE_TRACKER_BEAN") != null) {
-            List<HistoricActivityInstance> histActInstList = historyService.createHistoricActivityInstanceQuery()
-                    .processInstanceId(procInstId).list();
-
-            if (histActInstList != null && histActInstList.size() > 0) {
-                for (HistoricActivityInstance currHistoricActivityInstance : histActInstList) {
-                    if (currHistoricActivityInstance != null && currHistoricActivityInstance.getActivityName() != null
-                            && currHistoricActivityInstance.getStartTime() != null
-                            && currHistoricActivityInstance.getEndTime() != null) {
-                        logger.info("value of serviceTrack:" + currHistoricActivityInstance);
-                        context.getHttpServletRequest().setAttribute("X-CSI-ClientApp", "AJSC-CSI~sdsds");
-                        message = "Log Entry Created";
-                    }
-                }
-            }
-        }
-        return message;
-    }
-}
diff --git a/src/main/resources/META-INF/processes.xml b/src/main/resources/META-INF/processes.xml
index bd3547d..921a102 100644
--- a/src/main/resources/META-INF/processes.xml
+++ b/src/main/resources/META-INF/processes.xml
@@ -25,14 +25,6 @@
 <process-application
 	xmlns="http://www.camunda.org/schema/1.0/ProcessApplication" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
-	<process-archive name="example-process-archive">
-		<process-engine>default</process-engine>
-		<resource>bpmn/log-message.bpmn</resource>		
-		<properties>
-			<property name="isDeleteUponUndeploy">true</property>
-			<property name="isScanForProcessDefinitions">false</property>
-		</properties>
-	</process-archive>
 	<process-archive name="clds-process-archive">
 		<process-engine>default</process-engine>
 		<resource>bpmn/clds-process-action.bpmn</resource>
diff --git a/src/main/resources/bpmn/SampleTestProcessDelegate.bpmn b/src/main/resources/bpmn/SampleTestProcessDelegate.bpmn
deleted file mode 100644
index 41ffdb6..0000000
--- a/src/main/resources/bpmn/SampleTestProcessDelegate.bpmn
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_7-gSIF09EeWE96cFqGLI8w" exporter="camunda modeler" exporterVersion="2.7.0" targetNamespace="http://camunda.org/schema/1.0/bpmn">
-  <bpmn2:process id="SampleTestProcessDeleagate-wf" name="SampleTestProcessDeleagate-wf" isExecutable="true">
-    <bpmn2:startEvent id="StartEcho" name="StartEvent">
-      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:serviceTask id="ServiceTask_1" camunda:class="com.att.ajsc.clds.designer.workflow.PublishMessageDelegate" name="Perform ">
-      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_1</bpmn2:outgoing>
-    </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEcho" targetRef="ServiceTask_1"/>
-    <bpmn2:sequenceFlow id="SequenceFlow_1" name="" sourceRef="ServiceTask_1" targetRef="UserTask_1"/>
-    <bpmn2:userTask id="UserTask_1" camunda:assignee="bharath" name="HumanTask1">
-      <bpmn2:incoming>SequenceFlow_1</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
-    </bpmn2:userTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="UserTask_1" targetRef="ServiceTask_3"/>
-    <bpmn2:serviceTask id="ServiceTask_3" camunda:class="com.att.ajsc.clds.designer.workflow.ConsumeMessageDelegate" name="AddServiceTask3">
-      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
-    </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ServiceTask_3" targetRef="EndEvent_1"/>
-    <bpmn2:endEvent id="EndEvent_1" name="Endevent">
-      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
-    </bpmn2:endEvent>
-  </bpmn2:process>
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="SampleTestProcessDeleagate-wf">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_3" bpmnElement="StartEcho">
-        <dc:Bounds height="36.0" width="36.0" x="191.0" y="253.0"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_4" bpmnElement="ServiceTask_1">
-        <dc:Bounds height="80.0" width="100.0" x="277.0" y="231.0"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_3" targetElement="_BPMNShape_ServiceTask_4">
-        <di:waypoint xsi:type="dc:Point" x="227.0" y="271.0"/>
-        <di:waypoint xsi:type="dc:Point" x="277.0" y="271.0"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_103" bpmnElement="EndEvent_1">
-        <dc:Bounds height="36.0" width="36.0" x="955.0" y="253.0"/>
-        <bpmndi:BPMNLabel>
-          <dc:Bounds height="25.0" width="73.0" x="938.0" y="294.0"/>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_6" bpmnElement="ServiceTask_3">
-        <dc:Bounds height="80.0" width="100.0" x="497.0" y="454.0"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ServiceTask_6" targetElement="_BPMNShape_EndEvent_103">
-        <di:waypoint xsi:type="dc:Point" x="597.0" y="494.0"/>
-        <di:waypoint xsi:type="dc:Point" x="918.0" y="494.0"/>
-        <di:waypoint xsi:type="dc:Point" x="918.0" y="271.0"/>
-        <di:waypoint xsi:type="dc:Point" x="955.0" y="271.0"/>
-        <bpmndi:BPMNLabel>
-          <dc:Bounds height="6.0" width="6.0" x="915.0" y="271.0"/>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="_BPMNShape_UserTask_2" bpmnElement="UserTask_1">
-        <dc:Bounds height="80.0" width="100.0" x="630.0" y="117.0"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_UserTask_2" targetElement="_BPMNShape_ServiceTask_6">
-        <di:waypoint xsi:type="dc:Point" x="730.0" y="187.0"/>
-        <di:waypoint xsi:type="dc:Point" x="730.0" y="494.0"/>
-        <di:waypoint xsi:type="dc:Point" x="597.0" y="494.0"/>
-        <bpmndi:BPMNLabel>
-          <dc:Bounds height="6.0" width="6.0" x="701.0" y="271.0"/>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_1" bpmnElement="SequenceFlow_1" sourceElement="_BPMNShape_ServiceTask_4" targetElement="_BPMNShape_UserTask_2">
-        <di:waypoint xsi:type="dc:Point" x="377.0" y="271.0"/>
-        <di:waypoint xsi:type="dc:Point" x="436.0" y="271.0"/>
-        <di:waypoint xsi:type="dc:Point" x="436.0" y="157.0"/>
-        <di:waypoint xsi:type="dc:Point" x="630.0" y="157.0"/>
-        <bpmndi:BPMNLabel>
-          <dc:Bounds height="6.0" width="6.0" x="457.0" y="271.0"/>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
\ No newline at end of file
diff --git a/src/main/resources/bpmn/TestHumanTask.bpmn b/src/main/resources/bpmn/TestHumanTask.bpmn
deleted file mode 100644
index d456d65..0000000
--- a/src/main/resources/bpmn/TestHumanTask.bpmn
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn2:definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:bpmn2="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xsi:schemaLocation="http://www.omg.org/spec/BPMN/20100524/MODEL BPMN20.xsd" id="_7-gSIF09EeWE96cFqGLI8w" exporter="camunda modeler" exporterVersion="2.7.0" targetNamespace="http://bpmn.io/schema/bpmn">
-  <bpmn2:process id="user-interact-wf" name="UserInteract" isExecutable="true">
-    <bpmn2:startEvent id="StartEcho" camunda:formKey="embedded:app:forms/example-embedded-start-TestHumanTask.html" name="StartEvent">
-      <bpmn2:outgoing>SequenceFlow_2</bpmn2:outgoing>
-    </bpmn2:startEvent>
-    <bpmn2:serviceTask id="ServiceTask_1" camunda:class="com.att.ajsc.clds.designer.workflow.LogMessageDelegate" name="Perform Echo Assignment">
-      <bpmn2:incoming>SequenceFlow_2</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_3</bpmn2:outgoing>
-    </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_2" name="" sourceRef="StartEcho" targetRef="ServiceTask_1"/>
-    <bpmn2:endEvent id="EndEvent_1" name="Endevent">
-      <bpmn2:incoming>SequenceFlow_5</bpmn2:incoming>
-    </bpmn2:endEvent>
-    <bpmn2:serviceTask id="ServiceTask_3" camunda:class="com.att.ajsc.clds.designer.workflow.LogMessageDelegate" name="AddServiceTask3">
-      <bpmn2:incoming>SequenceFlow_6</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_5</bpmn2:outgoing>
-    </bpmn2:serviceTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_5" name="" sourceRef="ServiceTask_3" targetRef="EndEvent_1"/>
-    <bpmn2:userTask id="UserTask_1" camunda:assignee="admin" camunda:formKey="embedded:app:forms/example-embedded-task-TestHumanTask.html" name="HumanTask1">
-      <bpmn2:incoming>SequenceFlow_027hi4f</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_6</bpmn2:outgoing>
-    </bpmn2:userTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_3" name="" sourceRef="ServiceTask_1" targetRef="BusinessRuleTask_1m53dly"/>
-    <bpmn2:sequenceFlow id="SequenceFlow_6" name="" sourceRef="UserTask_1" targetRef="ServiceTask_3"/>
-    <bpmn2:businessRuleTask id="BusinessRuleTask_1m53dly" camunda:resultVariable="result" camunda:decisionRef="simpleDishDecisionTable" camunda:mapDecisionResult="singleResult" name="BusinessRuleTask">
-      <bpmn2:incoming>SequenceFlow_3</bpmn2:incoming>
-      <bpmn2:outgoing>SequenceFlow_027hi4f</bpmn2:outgoing>
-    </bpmn2:businessRuleTask>
-    <bpmn2:sequenceFlow id="SequenceFlow_027hi4f" sourceRef="BusinessRuleTask_1m53dly" targetRef="UserTask_1"/>
-  </bpmn2:process>
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="user-interact-wf">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_3" bpmnElement="StartEcho">
-        <dc:Bounds height="36.0" width="36.0" x="191.0" y="253.0"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_4" bpmnElement="ServiceTask_1">
-        <dc:Bounds height="80.0" width="100.0" x="277.0" y="231.0"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_2" bpmnElement="SequenceFlow_2" sourceElement="_BPMNShape_StartEvent_3" targetElement="_BPMNShape_ServiceTask_4">
-        <di:waypoint xsi:type="dc:Point" x="227.0" y="271.0"/>
-        <di:waypoint xsi:type="dc:Point" x="277.0" y="271.0"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="_BPMNShape_EndEvent_103" bpmnElement="EndEvent_1">
-        <dc:Bounds height="36.0" width="36.0" x="1182.0" y="253.0"/>
-        <bpmndi:BPMNLabel>
-          <dc:Bounds height="25.0" width="90.0" x="1156.0" y="294.0"/>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="_BPMNShape_ServiceTask_6" bpmnElement="ServiceTask_3">
-        <dc:Bounds height="80.0" width="100.0" x="923.0" y="231.0"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_5" bpmnElement="SequenceFlow_5" sourceElement="_BPMNShape_ServiceTask_6" targetElement="_BPMNShape_EndEvent_103">
-        <di:waypoint xsi:type="dc:Point" x="1026.0" y="271.0"/>
-        <di:waypoint xsi:type="dc:Point" x="1182.0" y="271.0"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="_BPMNShape_UserTask_2" bpmnElement="UserTask_1">
-        <dc:Bounds height="80.0" width="100.0" x="719.0" y="231.0"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_3" bpmnElement="SequenceFlow_3" sourceElement="_BPMNShape_ServiceTask_4" targetElement="_BPMNShape_UserTask_2">
-        <di:waypoint xsi:type="dc:Point" x="377.0" y="271.0"/>
-        <di:waypoint xsi:type="dc:Point" x="492.0" y="271.0"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="BPMNEdge_SequenceFlow_6" bpmnElement="SequenceFlow_6" sourceElement="_BPMNShape_UserTask_2" targetElement="_BPMNShape_ServiceTask_6">
-        <di:waypoint xsi:type="dc:Point" x="819.0" y="271.0"/>
-        <di:waypoint xsi:type="dc:Point" x="923.0" y="271.0"/>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="BusinessRuleTask_1m53dly_di" bpmnElement="BusinessRuleTask_1m53dly">
-        <dc:Bounds height="80.0" width="100.0" x="492.0" y="231.0"/>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_027hi4f_di" bpmnElement="SequenceFlow_027hi4f">
-        <di:waypoint xsi:type="dc:Point" x="592.0" y="271.0"/>
-        <di:waypoint xsi:type="dc:Point" x="719.0" y="271.0"/>
-        <bpmndi:BPMNLabel>
-          <dc:Bounds height="20.0" width="90.0" x="830.0" y="325.5"/>
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn2:definitions>
\ No newline at end of file
diff --git a/src/main/resources/bpmn/TestHumanTask.png b/src/main/resources/bpmn/TestHumanTask.png
deleted file mode 100644
index 7d8af39..0000000
--- a/src/main/resources/bpmn/TestHumanTask.png
+++ /dev/null
Binary files differ
diff --git a/src/main/resources/bpmn/dish.dmn b/src/main/resources/bpmn/dish.dmn
deleted file mode 100644
index 473a07a..0000000
--- a/src/main/resources/bpmn/dish.dmn
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<definitions xmlns="http://www.omg.org/spec/DMN/20151101/dmn11.xsd" id="definitions" name="definitions" namespace="http://camunda.org/schema/1.0/dmn">
-  <decision id="simpleDishDecisionTable" name="SimpleDishDecisionTable">
-    <decisionTable id="decisionTable">
-      <input id="input1" label="Season">
-        <inputExpression id="inputExpression1" typeRef="string">        <text>season</text>
-</inputExpression>
-      </input>
-      <output id="output1" label="Dish" name="desiredDish" typeRef="string" />
-      <rule id="row-72464069-3">
-        <inputEntry id="UnaryTests_0zmcdq6">        <text><![CDATA["Fall"]]></text>
-</inputEntry>
-        <outputEntry id="LiteralExpression_1ehb89n">        <text><![CDATA["Pad Thai"]]></text>
-</outputEntry>
-      </rule>
-      <rule id="row-72464069-4">
-        <inputEntry id="UnaryTests_0g5512k">        <text><![CDATA["Winter"]]></text>
-</inputEntry>
-        <outputEntry id="LiteralExpression_0v3t89p">        <text><![CDATA["Lamb Jalfrazie, Mutter Paneer, and Nan"]]></text>
-</outputEntry>
-      </rule>
-      <rule id="row-72464069-5">
-        <inputEntry id="UnaryTests_0582crg">        <text><![CDATA["Spring"]]></text>
-</inputEntry>
-        <outputEntry id="LiteralExpression_100afca">        <text><![CDATA["Chicken Moghlai, Baingan Bhartha, and Nan"]]></text>
-</outputEntry>
-      </rule>
-      <rule id="row-72464069-6">
-        <inputEntry id="UnaryTests_0fha0sl">        <text><![CDATA["Summer"]]></text>
-</inputEntry>
-        <outputEntry id="LiteralExpression_06dk8fw">        <text><![CDATA["Satay and Laab"]]></text>
-</outputEntry>
-      </rule>
-    </decisionTable>
-  </decision>
-</definitions>
diff --git a/src/main/resources/bpmn/log-message.bpmn b/src/main/resources/bpmn/log-message.bpmn
deleted file mode 100644
index f38f254..0000000
--- a/src/main/resources/bpmn/log-message.bpmn
+++ /dev/null
@@ -1,50 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<bpmn:definitions xmlns:bpmn="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:di="http://www.omg.org/spec/DD/20100524/DI" xmlns:dc="http://www.omg.org/spec/DD/20100524/DC" xmlns:camunda="http://camunda.org/schema/1.0/bpmn" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Definitions_1" targetNamespace="http://bpmn.io/schema/bpmn" exporter="Camunda Modeler" exporterVersion="1.5.1">
-  <bpmn:process id="log-message-wf" name="Log Message Workflow" isExecutable="true">
-    <bpmn:startEvent id="StartEvent_1" name="Start">
-      <bpmn:outgoing>SequenceFlow_0k87nxp</bpmn:outgoing>
-    </bpmn:startEvent>
-    <bpmn:endEvent id="EndEvent_0udg3bj" name="End">
-      <bpmn:incoming>SequenceFlow_0zjfjoh</bpmn:incoming>
-    </bpmn:endEvent>
-    <bpmn:sequenceFlow id="SequenceFlow_0k87nxp" sourceRef="StartEvent_1" targetRef="Task_1q1b38a" />
-    <bpmn:sequenceFlow id="SequenceFlow_0zjfjoh" sourceRef="Task_1q1b38a" targetRef="EndEvent_0udg3bj" />
-    <bpmn:serviceTask id="Task_1q1b38a" name="Display Log Message" camunda:class="org.onap.clamp.clds.workflow.LogMessageDelegate">
-      <bpmn:incoming>SequenceFlow_0k87nxp</bpmn:incoming>
-      <bpmn:outgoing>SequenceFlow_0zjfjoh</bpmn:outgoing>
-    </bpmn:serviceTask>
-  </bpmn:process>
-  <bpmndi:BPMNDiagram id="BPMNDiagram_1">
-    <bpmndi:BPMNPlane id="BPMNPlane_1" bpmnElement="log-message-wf">
-      <bpmndi:BPMNShape id="_BPMNShape_StartEvent_2" bpmnElement="StartEvent_1">
-        <dc:Bounds x="617" y="283" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="623" y="319" width="23" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNShape id="EndEvent_0udg3bj_di" bpmnElement="EndEvent_0udg3bj">
-        <dc:Bounds x="961" y="283" width="36" height="36" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="969" y="319" width="19" height="12" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNShape>
-      <bpmndi:BPMNEdge id="SequenceFlow_0k87nxp_di" bpmnElement="SequenceFlow_0k87nxp">
-        <di:waypoint xsi:type="dc:Point" x="653" y="301" />
-        <di:waypoint xsi:type="dc:Point" x="758" y="301" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="706" y="286" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNEdge id="SequenceFlow_0zjfjoh_di" bpmnElement="SequenceFlow_0zjfjoh">
-        <di:waypoint xsi:type="dc:Point" x="858" y="301" />
-        <di:waypoint xsi:type="dc:Point" x="961" y="301" />
-        <bpmndi:BPMNLabel>
-          <dc:Bounds x="910" y="286" width="0" height="0" />
-        </bpmndi:BPMNLabel>
-      </bpmndi:BPMNEdge>
-      <bpmndi:BPMNShape id="ServiceTask_1o14w9n_di" bpmnElement="Task_1q1b38a">
-        <dc:Bounds x="758" y="261" width="100" height="80" />
-      </bpmndi:BPMNShape>
-    </bpmndi:BPMNPlane>
-  </bpmndi:BPMNDiagram>
-</bpmn:definitions>
diff --git a/src/main/resources/bpmn/log-message.png b/src/main/resources/bpmn/log-message.png
deleted file mode 100644
index fa7c756..0000000
--- a/src/main/resources/bpmn/log-message.png
+++ /dev/null
Binary files differ
