diff --git a/src/main/java/org/nrg/xapi/model/event/EventClassInfo.java b/src/main/java/org/nrg/xapi/model/event/EventClassInfo.java
index bce9f8ff5ec19b2a80fb661ddbe950804dc9e3b8..df793bb8ae802d4e4c5787910efd6b658c50431e 100644
--- a/src/main/java/org/nrg/xapi/model/event/EventClassInfo.java
+++ b/src/main/java/org/nrg/xapi/model/event/EventClassInfo.java
@@ -6,7 +6,7 @@ import com.google.common.collect.Lists;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
-import org.nrg.xft.event.EventClass;
+import org.nrg.framework.event.EventClass;
 import org.python.google.common.collect.Maps;
 import org.springframework.core.annotation.AnnotationUtils;
 
diff --git a/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java b/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java
index a83585802358eebeec89d4a7121751e45487f222..94d72a07fa1f2ed0fafd33be14dc08e645058e63 100644
--- a/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java
+++ b/src/main/java/org/nrg/xapi/rest/event/EventHandlerApi.java
@@ -6,7 +6,14 @@ import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
 import javassist.Modifier;
+
+import org.nrg.automation.event.AutomationEventImplementerI;
+import org.nrg.automation.event.entities.AutomationEventIds;
+import org.nrg.automation.event.entities.AutomationFilters;
+import org.nrg.automation.services.impl.hibernate.HibernateAutomationEventIdsService;
+import org.nrg.automation.services.impl.hibernate.HibernateAutomationFiltersService;
 import org.nrg.framework.annotations.XapiRestController;
+import org.nrg.framework.event.Filterable;
 import org.nrg.framework.utilities.Reflection;
 import org.nrg.xapi.model.event.EventClassInfo;
 import org.nrg.xdat.XDAT;
@@ -15,12 +22,6 @@ import org.nrg.xdat.om.base.auto.AutoXnatProjectdata;
 import org.nrg.xdat.security.XDATUser;
 import org.nrg.xdat.security.helpers.Permissions;
 import org.nrg.xdat.security.helpers.Roles;
-import org.nrg.xdat.services.impl.hibernate.HibernateAutomationEventIdsService;
-import org.nrg.xdat.services.impl.hibernate.HibernateAutomationFiltersService;
-import org.nrg.xft.event.AutomationEventImplementerI;
-import org.nrg.xft.event.Filterable;
-import org.nrg.xft.event.entities.AutomationEventIds;
-import org.nrg.xft.event.entities.AutomationFilters;
 import org.nrg.xft.security.UserI;
 import org.nrg.xnat.event.conf.EventPackages;
 import org.slf4j.Logger;
diff --git a/src/main/java/org/nrg/xapi/rest/notifications/NotificationsApi.java b/src/main/java/org/nrg/xapi/rest/notifications/NotificationsApi.java
index db418854f470a31823530a35eee9a345820fba3a..71cd31bac145cc811ba0ff45c6d9030393dbdae2 100644
--- a/src/main/java/org/nrg/xapi/rest/notifications/NotificationsApi.java
+++ b/src/main/java/org/nrg/xapi/rest/notifications/NotificationsApi.java
@@ -13,6 +13,7 @@ import org.nrg.notify.entities.*;
 import org.nrg.notify.exceptions.DuplicateDefinitionException;
 import org.nrg.notify.exceptions.DuplicateSubscriberException;
 import org.nrg.notify.services.NotificationService;
+import org.nrg.xdat.XDAT;
 import org.nrg.xdat.preferences.SiteConfigPreferences;
 import org.nrg.xdat.rest.AbstractXnatRestApi;
 import org.slf4j.Logger;
@@ -558,20 +559,26 @@ public class NotificationsApi extends AbstractXnatRestApi {
 
     private void setSubscribersForNotificationType(NotificationType notificationType, final String subscribersString){
         List<String> subscribers = Arrays.asList(subscribersString.split("\\s*,\\s*"));
-        Category category = _notificationService.getCategoryService().newEntity();
-        category.setScope(CategoryScope.Site);
-        category.setEvent(notificationType.id());
+        Category category = _notificationService.getCategoryService().getCategoryByScopeAndEvent(CategoryScope.Site, notificationType.id());
+        if(category==null) {
+            category = _notificationService.getCategoryService().newEntity();
+            category.setScope(CategoryScope.Site);
+            category.setEvent(notificationType.id());
+            XDAT.getNotificationService().getCategoryService().create(category);
+        }
         for(String subscriber : subscribers){
             try {
                 Subscriber subscriberObject = _notificationService.getSubscriberService().getSubscriberByName(subscriber);
 
                 if(subscriberObject==null){
                     subscriberObject = _notificationService.getSubscriberService().createSubscriber(subscriber, subscriber);
+                    XDAT.getNotificationService().getSubscriberService().create(subscriberObject);
                 }
 
                 Definition definition1 = _notificationService.getDefinitionService().getDefinitionForCategoryAndEntity(category,1L);
                 if(definition1==null) {
                     definition1 = _notificationService.createDefinition(CategoryScope.Site, notificationType.id(), 1L);
+                    XDAT.getNotificationService().getDefinitionService().create(definition1);
                 }
 
                 Channel channel1 = _notificationService.getChannelService().getChannel("htmlMail");
diff --git a/src/main/java/org/nrg/xnat/configuration/ApplicationConfig.java b/src/main/java/org/nrg/xnat/configuration/ApplicationConfig.java
index 74b582bf20b7fe8ce76acea7927aa73640e08ef2..bf0ce3f6d7c5bd556b47ff684bf57927832c42ca 100644
--- a/src/main/java/org/nrg/xnat/configuration/ApplicationConfig.java
+++ b/src/main/java/org/nrg/xnat/configuration/ApplicationConfig.java
@@ -30,7 +30,7 @@ import java.util.List;
                 "org.nrg.prefs.repositories", "org.nrg.xdat.daos", "org.nrg.xdat.services.impl.hibernate", "org.nrg.xft.daos",
                 "org.nrg.xft.event.listeners", "org.nrg.xft.services", "org.nrg.xnat.configuration", "org.nrg.xnat.daos",
                 "org.nrg.xnat.event.listeners", "org.nrg.xnat.helpers.merge", "org.nrg.xnat.initialization.tasks",
-                "org.nrg.xnat.services.impl.hibernate", "org.nrg.xnat.spawner.repositories"})
+                "org.nrg.xnat.services.impl.hibernate", "org.nrg.xnat.spawner.repositories", "org.nrg.automation.daos"})
 @Import({FeaturesConfig.class, ReactorConfig.class})
 @ImportResource("WEB-INF/conf/mq-context.xml")
 public class ApplicationConfig {
diff --git a/src/main/java/org/nrg/xnat/configuration/ReactorConfig.java b/src/main/java/org/nrg/xnat/configuration/ReactorConfig.java
index f1581c29fd7331ba11e4f7c0e3954d5e99f31479..27138d6cc5b2346a7ff67ef57123914de76c3023 100755
--- a/src/main/java/org/nrg/xnat/configuration/ReactorConfig.java
+++ b/src/main/java/org/nrg/xnat/configuration/ReactorConfig.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.configuration;
 
-import org.nrg.xft.event.XftEventService;
+import org.nrg.framework.services.NrgEventService;
 import org.nrg.xft.event.listeners.XftItemEventListener;
 import org.nrg.xnat.event.conf.EventPackages;
 import org.springframework.context.annotation.Bean;
@@ -17,8 +17,8 @@ import java.util.HashSet;
 @Configuration
 public class ReactorConfig {
     @Bean
-    public XftEventService xftEventService() {
-        return new XftEventService();
+    public NrgEventService xftEventService() {
+        return new NrgEventService();
     }
 
     @Bean
diff --git a/src/main/java/org/nrg/xnat/event/entities/ScriptLaunchRequestEvent.java b/src/main/java/org/nrg/xnat/event/entities/ScriptLaunchRequestEvent.java
index ecaae576417958a5692776c9d3059e3dc8efea1a..ff474487300f6466cf9b1477b3ad27231163d383 100644
--- a/src/main/java/org/nrg/xnat/event/entities/ScriptLaunchRequestEvent.java
+++ b/src/main/java/org/nrg/xnat/event/entities/ScriptLaunchRequestEvent.java
@@ -6,11 +6,11 @@ import javax.persistence.Entity;
 import javax.persistence.PrimaryKeyJoinColumn;
 import javax.persistence.Transient;
 
-import org.nrg.xft.event.AutomationEventImplementerI;
-import org.nrg.xft.event.EventClass;
-import org.nrg.xft.event.entities.AutomationCompletionEvent;
-import org.nrg.xft.event.entities.PersistentEvent;
-import org.nrg.xft.event.persist.PersistentEventImplementerI;
+import org.nrg.automation.event.AutomationEventImplementerI;
+import org.nrg.automation.event.entities.AutomationCompletionEvent;
+import org.nrg.automation.event.entities.PersistentEvent;
+import org.nrg.framework.event.EventClass;
+import org.nrg.framework.event.persist.PersistentEventImplementerI;
 
 /**
  * The Class AutomationLaunchRequestEvent.
diff --git a/src/main/java/org/nrg/xnat/event/listeners/AutomationCompletionEventListener.java b/src/main/java/org/nrg/xnat/event/listeners/AutomationCompletionEventListener.java
index 0741edfda1b01193948b2126e25d5be71cfb4be3..ceb1ba91f75cba086c644f01a0e4d49d3478677f 100644
--- a/src/main/java/org/nrg/xnat/event/listeners/AutomationCompletionEventListener.java
+++ b/src/main/java/org/nrg/xnat/event/listeners/AutomationCompletionEventListener.java
@@ -4,8 +4,9 @@ import com.google.common.collect.Lists;
 import reactor.bus.Event;
 import reactor.bus.EventBus;
 import reactor.fn.Consumer;
+
+import org.nrg.automation.event.entities.AutomationCompletionEvent;
 import org.nrg.xdat.XDAT;
-import org.nrg.xft.event.entities.AutomationCompletionEvent;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
diff --git a/src/main/java/org/nrg/xnat/event/listeners/AutomationEventScriptHandler.java b/src/main/java/org/nrg/xnat/event/listeners/AutomationEventScriptHandler.java
index ea599485b88a6de26000874bf6bc0ec47cc2d466..39aad6309da54c8b0ec9c4e47e920c64efd4f6ef 100644
--- a/src/main/java/org/nrg/xnat/event/listeners/AutomationEventScriptHandler.java
+++ b/src/main/java/org/nrg/xnat/event/listeners/AutomationEventScriptHandler.java
@@ -7,27 +7,28 @@ import org.hibernate.exception.ConstraintViolationException;
 import org.nrg.automation.entities.Script;
 import org.nrg.automation.entities.ScriptOutput;
 import org.nrg.automation.entities.ScriptOutput.Status;
+import org.nrg.automation.event.AutomationEventImplementerI;
+import org.nrg.automation.event.entities.AutomationCompletionEvent;
+import org.nrg.automation.event.entities.AutomationEventIds;
+import org.nrg.automation.event.entities.AutomationFilters;
+import org.nrg.automation.event.entities.PersistentEvent;
+import org.nrg.automation.services.AutomationEventIdsService;
+import org.nrg.automation.services.AutomationFiltersService;
+import org.nrg.automation.services.PersistentEventService;
 import org.nrg.automation.services.ScriptRunnerService;
 import org.nrg.automation.services.ScriptTriggerService;
 import org.nrg.automation.services.impl.hibernate.HibernateScriptTriggerService;
 import org.nrg.framework.constants.Scope;
+import org.nrg.framework.event.Filterable;
+import org.nrg.framework.event.persist.PersistentEventImplementerI;
 import org.nrg.framework.exceptions.NrgServiceException;
+import org.nrg.framework.services.NrgEventService;
+import org.nrg.xdat.XDAT;
 import org.nrg.xdat.security.helpers.Users;
 import org.nrg.xdat.security.user.exceptions.UserInitException;
 import org.nrg.xdat.security.user.exceptions.UserNotFoundException;
-import org.nrg.xdat.services.AutomationEventIdsService;
-import org.nrg.xdat.services.AutomationFiltersService;
-import org.nrg.xdat.services.PersistentEventService;
 import org.nrg.xdat.turbine.utils.AdminUtils;
-import org.nrg.xft.event.AutomationEventImplementerI;
 import org.nrg.xft.event.EventUtils;
-import org.nrg.xft.event.Filterable;
-import org.nrg.xft.event.XftEventService;
-import org.nrg.xft.event.entities.AutomationCompletionEvent;
-import org.nrg.xft.event.entities.AutomationEventIds;
-import org.nrg.xft.event.entities.AutomationFilters;
-import org.nrg.xft.event.entities.PersistentEvent;
-import org.nrg.xft.event.persist.PersistentEventImplementerI;
 import org.nrg.xft.event.persist.PersistentWorkflowI;
 import org.nrg.xft.event.persist.PersistentWorkflowUtils;
 import org.nrg.xft.security.UserI;
@@ -75,6 +76,12 @@ public class AutomationEventScriptHandler implements Consumer<Event<AutomationEv
     @Autowired
     @Lazy
     private ScriptRunnerService _service;
+    
+    /**
+     * The _eventService.
+     */
+    @Autowired
+ 	private NrgEventService _eventService;
 
     /**
      * The _script trigger service.
@@ -323,10 +330,9 @@ public class AutomationEventScriptHandler implements Consumer<Event<AutomationEv
             }
         }
         if (automationCompletionEvent != null && automationCompletionEvent.getScriptOutputs().size() > 0) {
-            XftEventService eventService = XftEventService.getService();
-            if (eventService != null) {
+            if (_eventService != null) {
                 automationCompletionEvent.setEventCompletionTime(System.currentTimeMillis());
-                eventService.triggerEvent(automationCompletionEvent);
+                _eventService.triggerEvent(automationCompletionEvent);
                 List<String> notifyList = automationCompletionEvent.getNotificationList();
                 if (notifyList != null && !notifyList.isEmpty()) {
                     final String EMAIL_SUBJECT = "Automation Results";
diff --git a/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java b/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java
index b4f92dd04b4302aae130625d52f5ca13073cce3b..743d0bbff6742674b5daec28004d1c1cfb608098 100644
--- a/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java
+++ b/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java
@@ -46,9 +46,13 @@ import org.nrg.action.ClientException;
 import org.nrg.action.ServerException;
 import org.nrg.automation.entities.ScriptOutput;
 import org.nrg.automation.entities.ScriptOutput.Status;
+import org.nrg.automation.event.AutomationEventImplementerI;
+import org.nrg.automation.event.entities.AutomationCompletionEvent;
 import org.nrg.automation.entities.ScriptTrigger;
 import org.nrg.automation.services.ScriptTriggerService;
 import org.nrg.framework.constants.Scope;
+import org.nrg.framework.event.Filterable;
+import org.nrg.framework.services.NrgEventService;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.om.XnatExperimentdata;
 import org.nrg.xdat.om.XnatProjectdata;
@@ -62,14 +66,10 @@ import org.nrg.xnat.turbine.utils.ArcSpecManager;
 
 import java.util.zip.ZipOutputStream;
 
-import org.nrg.xft.event.AutomationEventImplementerI;
 import org.nrg.xft.event.EventMetaI;
 import org.nrg.xft.event.EventUtils;
 import org.nrg.xft.event.EventUtils.CATEGORY;
 import org.nrg.xft.event.EventUtils.TYPE;
-import org.nrg.xft.event.XftEventService;
-import org.nrg.xft.event.Filterable;
-import org.nrg.xft.event.entities.AutomationCompletionEvent;
 import org.nrg.xft.event.entities.WorkflowStatusEvent;
 import org.nrg.xft.event.persist.PersistentWorkflowI;
 import org.nrg.xft.event.persist.PersistentWorkflowUtils;
@@ -644,7 +644,7 @@ public class AutomationBasedImporter extends ImporterHandlerA implements Callabl
 			automationCompletionEvent.addNotificationEmailAddr(user.getEmail());
 		}
 		automationEvent.setAutomationCompletionEvent(automationCompletionEvent);
-		XftEventService eventService = XftEventService.getService();
+		final NrgEventService eventService = XDAT.getContextService().getBean(NrgEventService.class);
 		if (eventService == null) {
 			returnList.add("ERROR: Could retrieve event service");
 			return;
diff --git a/src/main/java/org/nrg/xnat/services/XnatAppInfo.java b/src/main/java/org/nrg/xnat/services/XnatAppInfo.java
index 2b6326ca9fcd8a3b30645f20358f15b603b3b649..e6f2fd791dfd6a6074ee8f13e0476fbb1d22f74f 100644
--- a/src/main/java/org/nrg/xnat/services/XnatAppInfo.java
+++ b/src/main/java/org/nrg/xnat/services/XnatAppInfo.java
@@ -84,7 +84,7 @@ public class XnatAppInfo {
      * @return The primary system properties.
      */
     public Properties getSystemProperties() {
-        return new Properties(_properties);
+        return (Properties)_properties.clone();
     }
 
     /**
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java
index 4bf7e85358218c1b6d382d2b7c0dd4f5136a8715..6dc72acc2a52b6f915029a35d929840bb8e679c0 100755
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java
@@ -14,6 +14,7 @@ import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.modules.ScreenLoader;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
+import org.nrg.framework.services.NrgEventService;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.om.ArcProject;
 import org.nrg.xdat.om.XnatProjectdata;
@@ -31,7 +32,6 @@ import org.nrg.xft.XFTItem;
 import org.nrg.xft.db.PoolDBUtils;
 import org.nrg.xft.event.EventMetaI;
 import org.nrg.xft.event.EventUtils;
-import org.nrg.xft.event.XftEventService;
 import org.nrg.xft.event.XftItemEvent;
 import org.nrg.xft.event.persist.PersistentWorkflowI;
 import org.nrg.xft.event.persist.PersistentWorkflowUtils;
@@ -167,7 +167,8 @@ public class AddProject extends SecureAction {
                     WorkflowUtils.complete(wrk, c);
 
                     UserHelper.setUserHelper(data.getRequest(),user);
-                    XftEventService.getService().triggerEvent(new XftItemEvent(XnatProjectdata.SCHEMA_ELEMENT_NAME, postSave.getId(), XftItemEvent.UPDATE));
+            		final NrgEventService eventService = XDAT.getContextService().getBean(NrgEventService.class);
+                    eventService.triggerEvent(new XftItemEvent(XnatProjectdata.SCHEMA_ELEMENT_NAME, postSave.getId(), XftItemEvent.UPDATE));
                 } catch (Exception e) {
                     WorkflowUtils.fail(wrk, c);
                     throw e;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifyProject.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifyProject.java
index d4f03a9e278f2695559ca0796c2754fbecabcaf0..b33fd567f384f76b2cacc15d8218dc986242f295 100755
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifyProject.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifyProject.java
@@ -12,6 +12,8 @@ package org.nrg.xnat.turbine.modules.actions;
 
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
+import org.nrg.framework.services.NrgEventService;
+import org.nrg.xdat.XDAT;
 import org.nrg.xdat.model.XnatInvestigatordataI;
 import org.nrg.xdat.model.XnatProjectdataAliasI;
 import org.nrg.xdat.om.XnatProjectdata;
@@ -27,7 +29,6 @@ import org.nrg.xft.XFTItem;
 import org.nrg.xft.db.PoolDBUtils;
 import org.nrg.xft.event.XftItemEvent;
 import org.nrg.xft.event.EventMetaI;
-import org.nrg.xft.event.XftEventService;
 import org.nrg.xft.event.EventUtils;
 import org.nrg.xft.event.persist.PersistentWorkflowI;
 import org.nrg.xft.event.persist.PersistentWorkflowUtils;
@@ -130,7 +131,8 @@ public class ModifyProject extends SecureAction {
 
             WorkflowUtils.complete(wrk, c);
             Users.clearCache(user);
-            XftEventService.getService().triggerEvent(new XftItemEvent(XnatProjectdata.SCHEMA_ELEMENT_NAME, postSave.getId(), XftItemEvent.UPDATE));
+            final NrgEventService eventService = XDAT.getContextService().getBean(NrgEventService.class);
+            eventService.triggerEvent(new XftItemEvent(XnatProjectdata.SCHEMA_ELEMENT_NAME, postSave.getId(), XftItemEvent.UPDATE));
         } catch (SecurityException e) {
             logger.error("Security exception triggered by user '" + user.getLogin() + "': " + e.getMessage(), e);
             handleException(data, project.getItem(), e, TurbineUtils.EDIT_ITEM);
diff --git a/src/main/resources/META-INF/xnat/entities/xnat-entity-packages.txt b/src/main/resources/META-INF/xnat/entities/xnat-entity-packages.txt
index 91c8dacd14aabe2cb1e0a5e9ca0f2478991ddd05..8c57423a4c597a61463d3af54de0d894d8a6a8f7 100644
--- a/src/main/resources/META-INF/xnat/entities/xnat-entity-packages.txt
+++ b/src/main/resources/META-INF/xnat/entities/xnat-entity-packages.txt
@@ -7,6 +7,8 @@ org.nrg.prefs.entities
 org.nrg.xdat.entities
 org.nrg.xft.entities
 org.nrg.xft.event.entities
+org.nrg.automation.event.entities
+org.nrg.framework.event.entities
 org.nrg.xnat.entities
 org.nrg.xnat.event.entities
-org.nrg.xnat.spawner.entities
+org.nrg.xnat.spawner.entities
\ No newline at end of file
diff --git a/src/main/webapp/page/admin/data/config/site-setup.yaml b/src/main/webapp/page/admin/data/config/site-setup.yaml
index bf53e95453ffa45c1f994997b0ce931301012b06..cb44590a2e65e6fd507b4a74c97cd79de996e2e7 100644
--- a/src/main/webapp/page/admin/data/config/site-setup.yaml
+++ b/src/main/webapp/page/admin/data/config/site-setup.yaml
@@ -20,7 +20,7 @@ initialSetup:
                     marginBottom: 24px
                 html: >
                     The settings below need to be configured before this XNAT system
-                    can be used. Please set the properties below and submit the form continue.
+                    can be used. Please set the properties below and submit the form to continue.
 
         # ====================
         # PANEL
diff --git a/src/main/webapp/setup/index.jsp b/src/main/webapp/setup/index.jsp
index cbabee9e3ba5a76bce023c0ae8a10e49962acda4..15e1d5f4dcecc3cd773b852b5df84f360f959911 100644
--- a/src/main/webapp/setup/index.jsp
+++ b/src/main/webapp/setup/index.jsp
@@ -66,7 +66,7 @@
                                 <h2 class="pull-left">XNAT Site Setup</h2>
                                 <div class="hidden message pull-left">
                                     The settings below need to be configured before this XNAT system
-                                    can be used. Please set the properties below and submit the form continue.
+                                    can be used. Please set the properties below and submit the form to continue.
                                 </div>
                                 <div class="clearfix"></div>
                             </header>