diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5fd52bccc..ce8687dce 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,11 @@ on [Keep a CHANGELOG](http://keepachangelog.com/). This project adheres to
[Semantic Versioning](http://semver.org/).
## [Unreleased]
+## [2.4.7] - 2020-01-24
+### Changed
+- Event store now works with multiple event sources
+- Event store now compatible with contexts that do not have a command pillar
+- Extracted all command pillar SystemCommands into their own module
## [2.4.6] - 2020-01-21
### Added
diff --git a/event-store-management/event-store-management-command-handler-extension/pom.xml b/event-store-management/event-store-management-command-handler-extension/pom.xml
new file mode 100644
index 000000000..be3e9213c
--- /dev/null
+++ b/event-store-management/event-store-management-command-handler-extension/pom.xml
@@ -0,0 +1,54 @@
+
+
+
+ event-store-management
+ uk.gov.justice.event-store
+ 2.4.7-SNAPSHOT
+
+ 4.0.0
+
+ event-store-management-command-handler-extension
+
+
+
+ javax
+ javaee-api
+ provided
+
+
+ uk.gov.justice.services
+ framework-management
+ ${framework.version}
+
+
+ uk.gov.justice.event-store
+ event-store-management-core
+ ${project.version}
+
+
+ uk.gov.justice.event-store
+ event-store-util
+ ${project.version}
+
+
+ uk.gov.justice.event-store
+ event-publisher-timer
+ ${project.version}
+
+
+
+
+ junit
+ junit
+ test
+
+
+ org.mockito
+ mockito-core
+ test
+
+
+
+
diff --git a/event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/AddTriggerCommand.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/AddTriggerCommand.java
similarity index 100%
rename from event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/AddTriggerCommand.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/AddTriggerCommand.java
diff --git a/event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/DisablePublishingCommand.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/DisablePublishingCommand.java
similarity index 100%
rename from event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/DisablePublishingCommand.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/DisablePublishingCommand.java
diff --git a/event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/EnablePublishingCommand.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/EnablePublishingCommand.java
similarity index 100%
rename from event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/EnablePublishingCommand.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/EnablePublishingCommand.java
diff --git a/event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/RemoveTriggerCommand.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/RemoveTriggerCommand.java
similarity index 100%
rename from event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/RemoveTriggerCommand.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/RemoveTriggerCommand.java
diff --git a/event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/ValidatePublishedEventsCommand.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/ValidatePublishedEventsCommand.java
similarity index 100%
rename from event-store-management/event-store-management-commands/src/main/java/uk/gov/justice/services/eventstore/management/commands/ValidatePublishedEventsCommand.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/commands/ValidatePublishedEventsCommand.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/observers/CommandHandlerQueueDrainer.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueDrainer.java
similarity index 92%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/observers/CommandHandlerQueueDrainer.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueDrainer.java
index 7670e1375..dd554784c 100644
--- a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/observers/CommandHandlerQueueDrainer.java
+++ b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueDrainer.java
@@ -1,11 +1,10 @@
-package uk.gov.justice.services.eventstore.management.shuttering.observers;
+package uk.gov.justice.services.eventstore.management.extension.suspension;
import static java.lang.String.format;
import static uk.gov.justice.services.management.suspension.api.SuspensionResult.suspensionFailed;
import static uk.gov.justice.services.management.suspension.api.SuspensionResult.suspensionSucceeded;
import uk.gov.justice.services.eventsourcing.util.jee.timer.StopWatchFactory;
-import uk.gov.justice.services.eventstore.management.shuttering.process.CommandHandlerQueueInterrogator;
import uk.gov.justice.services.management.suspension.api.Suspendable;
import uk.gov.justice.services.management.suspension.api.SuspensionResult;
import uk.gov.justice.services.management.suspension.commands.SuspensionCommand;
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueInterrogator.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueInterrogator.java
similarity index 90%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueInterrogator.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueInterrogator.java
index 2276a8623..6ff5d823b 100644
--- a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueInterrogator.java
+++ b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueInterrogator.java
@@ -1,4 +1,4 @@
-package uk.gov.justice.services.eventstore.management.shuttering.process;
+package uk.gov.justice.services.eventstore.management.extension.suspension;
import uk.gov.justice.services.common.polling.MultiIteratingPoller;
import uk.gov.justice.services.common.polling.MultiIteratingPollerFactory;
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueSupplierFactory.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueSupplierFactory.java
similarity index 89%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueSupplierFactory.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueSupplierFactory.java
index 26aadd799..76d74c013 100644
--- a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueSupplierFactory.java
+++ b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueSupplierFactory.java
@@ -1,4 +1,4 @@
-package uk.gov.justice.services.eventstore.management.shuttering.process;
+package uk.gov.justice.services.eventstore.management.extension.suspension;
import uk.gov.justice.services.messaging.jms.JmsCommandHandlerDestinationNameProvider;
import uk.gov.justice.services.messaging.jms.JmsQueueBrowser;
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingCommandHandler.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingCommandHandler.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingCommandHandler.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingCommandHandler.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingProcessor.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingProcessor.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingProcessor.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingProcessor.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/publishing/PublishingEnabler.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/publishing/PublishingEnabler.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/publishing/PublishingEnabler.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/publishing/PublishingEnabler.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/trigger/TriggerManagementStartupBean.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/trigger/TriggerManagementStartupBean.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/trigger/TriggerManagementStartupBean.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/trigger/TriggerManagementStartupBean.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/trigger/commands/AddRemoveTriggerCommandHandler.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/trigger/commands/AddRemoveTriggerCommandHandler.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/trigger/commands/AddRemoveTriggerCommandHandler.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/trigger/commands/AddRemoveTriggerCommandHandler.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/commands/ValidatePublishedEventCommandHandler.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/commands/ValidatePublishedEventCommandHandler.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/commands/ValidatePublishedEventCommandHandler.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/commands/ValidatePublishedEventCommandHandler.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidationProcess.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidationProcess.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidationProcess.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidationProcess.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidator.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidator.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidator.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidator.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/JsonStringConverter.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/JsonStringConverter.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/JsonStringConverter.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/JsonStringConverter.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/MissingSchemaException.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/MissingSchemaException.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/MissingSchemaException.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/MissingSchemaException.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/MissingSchemaIdException.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/MissingSchemaIdException.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/MissingSchemaIdException.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/MissingSchemaIdException.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdFinder.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdFinder.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdFinder.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdFinder.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdMappingProvider.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdMappingProvider.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdMappingProvider.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdMappingProvider.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaProvider.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaProvider.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaProvider.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaProvider.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SingleEventValidator.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SingleEventValidator.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SingleEventValidator.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/SingleEventValidator.java
diff --git a/event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/ValidationError.java b/event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/ValidationError.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/ValidationError.java
rename to event-store-management/event-store-management-command-handler-extension/src/main/java/uk/gov/justice/services/eventstore/management/validation/process/ValidationError.java
diff --git a/event-store-management/event-store-management-command-handler-extension/src/main/resources/META-INF/beans.xml b/event-store-management/event-store-management-command-handler-extension/src/main/resources/META-INF/beans.xml
new file mode 100644
index 000000000..a0aaf4421
--- /dev/null
+++ b/event-store-management/event-store-management-command-handler-extension/src/main/resources/META-INF/beans.xml
@@ -0,0 +1,8 @@
+
+
+
+
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/observers/CommandHandlerQueueDrainerTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueDrainerTest.java
similarity index 94%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/observers/CommandHandlerQueueDrainerTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueDrainerTest.java
index 4a7bf94a4..0327f9e15 100644
--- a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/observers/CommandHandlerQueueDrainerTest.java
+++ b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueDrainerTest.java
@@ -1,6 +1,7 @@
-package uk.gov.justice.services.eventstore.management.shuttering.observers;
+package uk.gov.justice.services.eventstore.management.extension.suspension;
import static java.util.Optional.empty;
+import static java.util.UUID.randomUUID;
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.inOrder;
@@ -10,7 +11,6 @@
import static uk.gov.justice.services.jmx.api.domain.CommandState.COMMAND_FAILED;
import uk.gov.justice.services.eventsourcing.util.jee.timer.StopWatchFactory;
-import uk.gov.justice.services.eventstore.management.shuttering.process.CommandHandlerQueueInterrogator;
import uk.gov.justice.services.management.suspension.api.SuspensionResult;
import uk.gov.justice.services.management.suspension.commands.SuspensionCommand;
@@ -50,7 +50,7 @@ public void shouldSuspendButNotUnsuspend() throws Exception {
@Test
public void shouldWaitForCommandHandlerQueueToDrainAndReturnSuccess() throws Exception {
- final UUID commandId = UUID.randomUUID();
+ final UUID commandId = randomUUID();
final StopWatch stopWatch = mock(StopWatch.class);
final SuspensionCommand suspensionCommand = mock(SuspensionCommand.class);
@@ -79,7 +79,7 @@ public void shouldWaitForCommandHandlerQueueToDrainAndReturnSuccess() throws Exc
@Test
public void shouldReturnFailureIfQueueDoesNotDrainInTime() throws Exception {
- final UUID commandId = UUID.randomUUID();
+ final UUID commandId = randomUUID();
final StopWatch stopWatch = mock(StopWatch.class);
final SuspensionCommand applicationShutteringCommand = mock(SuspensionCommand.class);
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueInterrogatorTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueInterrogatorTest.java
similarity index 96%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueInterrogatorTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueInterrogatorTest.java
index f3eced5c7..bba42ff90 100644
--- a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueInterrogatorTest.java
+++ b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueInterrogatorTest.java
@@ -1,4 +1,4 @@
-package uk.gov.justice.services.eventstore.management.shuttering.process;
+package uk.gov.justice.services.eventstore.management.extension.suspension;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueSupplierFactoryTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueSupplierFactoryTest.java
similarity index 95%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueSupplierFactoryTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueSupplierFactoryTest.java
index 79f6820cf..d2166acd7 100644
--- a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/shuttering/process/CommandHandlerQueueSupplierFactoryTest.java
+++ b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/extension/suspension/CommandHandlerQueueSupplierFactoryTest.java
@@ -1,4 +1,4 @@
-package uk.gov.justice.services.eventstore.management.shuttering.process;
+package uk.gov.justice.services.eventstore.management.extension.suspension;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.MatcherAssert.assertThat;
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingCommandHandlerTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingCommandHandlerTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingCommandHandlerTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingCommandHandlerTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingProcessorTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingProcessorTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingProcessorTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/publishing/EnablePublishingProcessorTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/publishing/PublishingEnablerTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/publishing/PublishingEnablerTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/publishing/PublishingEnablerTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/publishing/PublishingEnablerTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/trigger/TriggerManagementStartupBeanTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/trigger/TriggerManagementStartupBeanTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/trigger/TriggerManagementStartupBeanTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/trigger/TriggerManagementStartupBeanTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/trigger/commands/AddRemoveTriggerCommandHandlerTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/trigger/commands/AddRemoveTriggerCommandHandlerTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/trigger/commands/AddRemoveTriggerCommandHandlerTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/trigger/commands/AddRemoveTriggerCommandHandlerTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/commands/ValidatePublishedEventCommandHandlerTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/commands/ValidatePublishedEventCommandHandlerTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/commands/ValidatePublishedEventCommandHandlerTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/commands/ValidatePublishedEventCommandHandlerTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidationProcessTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidationProcessTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidationProcessTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidationProcessTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidatorTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidatorTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidatorTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/EventValidatorTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/JsonStringConverterTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/JsonStringConverterTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/JsonStringConverterTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/JsonStringConverterTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdFinderTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdFinderTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdFinderTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdFinderTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdMappingProviderTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdMappingProviderTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdMappingProviderTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaIdMappingProviderTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaProviderTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaProviderTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaProviderTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SchemaProviderTest.java
diff --git a/event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SingleEventValidatorTest.java b/event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SingleEventValidatorTest.java
similarity index 100%
rename from event-store-management/event-store-management-core/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SingleEventValidatorTest.java
rename to event-store-management/event-store-management-command-handler-extension/src/test/java/uk/gov/justice/services/eventstore/management/validation/process/SingleEventValidatorTest.java
diff --git a/event-store-management/event-store-management-core/pom.xml b/event-store-management/event-store-management-core/pom.xml
index 0c5bc4487..1e0837630 100644
--- a/event-store-management/event-store-management-core/pom.xml
+++ b/event-store-management/event-store-management-core/pom.xml
@@ -54,11 +54,6 @@
event-store-management-events
${project.version}
-
- uk.gov.justice.event-store
- event-publisher-timer
- ${project.version}
-
uk.gov.justice.event-store
event-tracking-service
diff --git a/event-store-management/pom.xml b/event-store-management/pom.xml
index fb4da4e26..9021d2463 100644
--- a/event-store-management/pom.xml
+++ b/event-store-management/pom.xml
@@ -16,6 +16,7 @@
event-store-management-core
event-store-management-events
event-store-management-commands
+ event-store-management-command-handler-extension
diff --git a/test-utils-event-store/test-utils-event/src/main/java/uk/gov/justice/services/test/utils/jmx/EventStoreSystemCommandCaller.java b/test-utils-event-store/test-utils-event/src/main/java/uk/gov/justice/services/test/utils/jmx/EventStoreSystemCommandCaller.java
deleted file mode 100644
index ab1560013..000000000
--- a/test-utils-event-store/test-utils-event/src/main/java/uk/gov/justice/services/test/utils/jmx/EventStoreSystemCommandCaller.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package uk.gov.justice.services.test.utils.jmx;
-
-import static uk.gov.justice.services.jmx.system.command.client.connection.JmxParametersBuilder.jmxParameters;
-import static uk.gov.justice.services.test.utils.common.host.TestHostProvider.getHost;
-
-import uk.gov.justice.services.eventstore.management.commands.AddTriggerCommand;
-import uk.gov.justice.services.eventstore.management.commands.EventCatchupCommand;
-import uk.gov.justice.services.eventstore.management.commands.IndexerCatchupCommand;
-import uk.gov.justice.services.eventstore.management.commands.RebuildCommand;
-import uk.gov.justice.services.eventstore.management.commands.RemoveTriggerCommand;
-import uk.gov.justice.services.eventstore.management.commands.ValidatePublishedEventsCommand;
-import uk.gov.justice.services.eventstore.management.commands.VerifyCatchupCommand;
-import uk.gov.justice.services.jmx.api.command.SystemCommand;
-import uk.gov.justice.services.jmx.system.command.client.SystemCommanderClient;
-import uk.gov.justice.services.jmx.system.command.client.TestSystemCommanderClientFactory;
-import uk.gov.justice.services.jmx.system.command.client.connection.JmxParameters;
-
-import com.google.common.annotations.VisibleForTesting;
-
-public class EventStoreSystemCommandCaller {
-
- private static final String HOST = getHost();
- private static final int JMX_PORT = 9990;
- private static final String USERNAME = "admin";
-
- @SuppressWarnings("squid:S2068")
- private static final String PASSWORD = "admin";
-
-
- private final TestSystemCommanderClientFactory testSystemCommanderClientFactory;
- private final JmxParameters jmxParameters;
-
- public EventStoreSystemCommandCaller(final String contextName) {
- this(jmxParameters()
- .withContextName(contextName)
- .withHost(HOST)
- .withPort(JMX_PORT)
- .withUsername(USERNAME)
- .withPassword(PASSWORD)
- .build());
- }
-
- public EventStoreSystemCommandCaller(final JmxParameters jmxParameters) {
- this(jmxParameters, new TestSystemCommanderClientFactory());
- }
-
- @VisibleForTesting
- EventStoreSystemCommandCaller(final JmxParameters jmxParameters, final TestSystemCommanderClientFactory testSystemCommanderClientFactory) {
- this.jmxParameters = jmxParameters;
- this.testSystemCommanderClientFactory = testSystemCommanderClientFactory;
- }
-
- public void callRebuild() {
- callSystemCommand(new RebuildCommand());
- }
-
- public void callCatchup() {
- callSystemCommand(new EventCatchupCommand());
- }
-
- public void callIndexerCatchup() {
- callSystemCommand(new IndexerCatchupCommand());
- }
-
- public void callAddTrigger() {
- callSystemCommand(new AddTriggerCommand());
- }
-
- public void callRemoveTrigger() {
- callSystemCommand(new RemoveTriggerCommand());
- }
-
- public void callValidateCatchup() {
- callSystemCommand(new VerifyCatchupCommand());
- }
-
- public void callValidatePublishedEvents() {
- callSystemCommand(new ValidatePublishedEventsCommand());
- }
-
- private void callSystemCommand(final SystemCommand systemCommand) {
- try (final SystemCommanderClient systemCommanderClient = testSystemCommanderClientFactory.create(jmxParameters)) {
- systemCommanderClient.getRemote(jmxParameters.getContextName()).call(systemCommand.getName());
- }
- }
-}
diff --git a/test-utils-event-store/test-utils-event/src/test/java/uk/gov/justice/services/test/utils/jmx/EventStoreSystemCommandCallerTest.java b/test-utils-event-store/test-utils-event/src/test/java/uk/gov/justice/services/test/utils/jmx/EventStoreSystemCommandCallerTest.java
deleted file mode 100644
index 51bc370f9..000000000
--- a/test-utils-event-store/test-utils-event/src/test/java/uk/gov/justice/services/test/utils/jmx/EventStoreSystemCommandCallerTest.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package uk.gov.justice.services.test.utils.jmx;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.fail;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-import static uk.gov.justice.services.eventstore.management.commands.AddTriggerCommand.ADD_TRIGGER;
-import static uk.gov.justice.services.eventstore.management.commands.EventCatchupCommand.CATCHUP;
-import static uk.gov.justice.services.eventstore.management.commands.IndexerCatchupCommand.INDEXER_CATCHUP;
-import static uk.gov.justice.services.eventstore.management.commands.RebuildCommand.REBUILD;
-import static uk.gov.justice.services.eventstore.management.commands.RemoveTriggerCommand.REMOVE_TRIGGER;
-import static uk.gov.justice.services.eventstore.management.commands.ValidatePublishedEventsCommand.VALIDATE_EVENTS;
-import static uk.gov.justice.services.eventstore.management.commands.VerifyCatchupCommand.VERIFY_CATCHUP;
-import static uk.gov.justice.services.test.utils.common.host.TestHostProvider.getHost;
-import static uk.gov.justice.services.test.utils.core.reflection.ReflectionUtil.getValueOfField;
-
-import uk.gov.justice.services.jmx.api.mbean.SystemCommanderMBean;
-import uk.gov.justice.services.jmx.system.command.client.SystemCommanderClient;
-import uk.gov.justice.services.jmx.system.command.client.TestSystemCommanderClientFactory;
-import uk.gov.justice.services.jmx.system.command.client.connection.Credentials;
-import uk.gov.justice.services.jmx.system.command.client.connection.JmxParameters;
-
-import java.util.Optional;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.runners.MockitoJUnitRunner;
-
-@RunWith(MockitoJUnitRunner.class)
-public class EventStoreSystemCommandCallerTest {
-
- @Mock
- private TestSystemCommanderClientFactory testSystemCommanderClientFactory;
-
- @Test
- public void shouldCallRebuild() throws Exception {
-
- final String contextName = "contextName";
-
- final JmxParameters jmxParameters = mock(JmxParameters.class);
- final SystemCommanderClient systemCommanderClient = mock(SystemCommanderClient.class);
- final SystemCommanderMBean systemCommanderMBean = mock(SystemCommanderMBean.class);
-
- final EventStoreSystemCommandCaller eventStoreSystemCommandCaller = new EventStoreSystemCommandCaller(jmxParameters, testSystemCommanderClientFactory);
-
- when(jmxParameters.getContextName()).thenReturn(contextName);
- when(testSystemCommanderClientFactory.create(jmxParameters)).thenReturn(systemCommanderClient);
- when(systemCommanderClient.getRemote(contextName)).thenReturn(systemCommanderMBean);
-
- eventStoreSystemCommandCaller.callRebuild();
-
- verify(systemCommanderMBean).call(REBUILD);
- verify(systemCommanderClient).close();
- }
-
- @Test
- public void shouldCallCatchup() throws Exception {
-
- final String contextName = "contextName";
-
- final JmxParameters jmxParameters = mock(JmxParameters.class);
- final SystemCommanderClient systemCommanderClient = mock(SystemCommanderClient.class);
- final SystemCommanderMBean systemCommanderMBean = mock(SystemCommanderMBean.class);
-
- final EventStoreSystemCommandCaller eventStoreSystemCommandCaller = new EventStoreSystemCommandCaller(jmxParameters, testSystemCommanderClientFactory);
-
- when(jmxParameters.getContextName()).thenReturn(contextName);
- when(testSystemCommanderClientFactory.create(jmxParameters)).thenReturn(systemCommanderClient);
- when(systemCommanderClient.getRemote(contextName)).thenReturn(systemCommanderMBean);
-
- eventStoreSystemCommandCaller.callCatchup();
-
- verify(systemCommanderMBean).call(CATCHUP);
- verify(systemCommanderClient).close();
- }
-
- @Test
- public void shouldCallIndexerCatchup() throws Exception {
-
- final String contextName = "contextName";
-
- final JmxParameters jmxParameters = mock(JmxParameters.class);
- final SystemCommanderClient systemCommanderClient = mock(SystemCommanderClient.class);
- final SystemCommanderMBean systemCommanderMBean = mock(SystemCommanderMBean.class);
-
- final EventStoreSystemCommandCaller eventStoreSystemCommandCaller = new EventStoreSystemCommandCaller(jmxParameters, testSystemCommanderClientFactory);
-
- when(jmxParameters.getContextName()).thenReturn(contextName);
- when(testSystemCommanderClientFactory.create(jmxParameters)).thenReturn(systemCommanderClient);
- when(systemCommanderClient.getRemote(contextName)).thenReturn(systemCommanderMBean);
-
- eventStoreSystemCommandCaller.callIndexerCatchup();
-
- verify(systemCommanderMBean).call(INDEXER_CATCHUP);
- verify(systemCommanderClient).close();
- }
-
- @Test
- public void shouldCallAddTrigger() throws Exception {
-
- final String contextName = "contextName";
-
- final JmxParameters jmxParameters = mock(JmxParameters.class);
- final SystemCommanderClient systemCommanderClient = mock(SystemCommanderClient.class);
- final SystemCommanderMBean systemCommanderMBean = mock(SystemCommanderMBean.class);
-
- final EventStoreSystemCommandCaller eventStoreSystemCommandCaller = new EventStoreSystemCommandCaller(jmxParameters, testSystemCommanderClientFactory);
-
- when(jmxParameters.getContextName()).thenReturn(contextName);
- when(testSystemCommanderClientFactory.create(jmxParameters)).thenReturn(systemCommanderClient);
- when(systemCommanderClient.getRemote(contextName)).thenReturn(systemCommanderMBean);
-
- eventStoreSystemCommandCaller.callAddTrigger();
-
- verify(systemCommanderMBean).call(ADD_TRIGGER);
- verify(systemCommanderClient).close();
- }
-
- @Test
- public void shouldCallRemoveTrigger() throws Exception {
-
- final String contextName = "contextName";
-
- final JmxParameters jmxParameters = mock(JmxParameters.class);
- final SystemCommanderClient systemCommanderClient = mock(SystemCommanderClient.class);
- final SystemCommanderMBean systemCommanderMBean = mock(SystemCommanderMBean.class);
-
- final EventStoreSystemCommandCaller eventStoreSystemCommandCaller = new EventStoreSystemCommandCaller(jmxParameters, testSystemCommanderClientFactory);
-
- when(jmxParameters.getContextName()).thenReturn(contextName);
- when(testSystemCommanderClientFactory.create(jmxParameters)).thenReturn(systemCommanderClient);
- when(systemCommanderClient.getRemote(contextName)).thenReturn(systemCommanderMBean);
-
- eventStoreSystemCommandCaller.callRemoveTrigger();
-
- verify(systemCommanderMBean).call(REMOVE_TRIGGER);
- verify(systemCommanderClient).close();
- }
-
- @Test
- public void shouldCallValidateCatchup() throws Exception {
-
- final String contextName = "contextName";
-
- final JmxParameters jmxParameters = mock(JmxParameters.class);
- final SystemCommanderClient systemCommanderClient = mock(SystemCommanderClient.class);
- final SystemCommanderMBean systemCommanderMBean = mock(SystemCommanderMBean.class);
-
- final EventStoreSystemCommandCaller eventStoreSystemCommandCaller = new EventStoreSystemCommandCaller(jmxParameters, testSystemCommanderClientFactory);
-
- when(jmxParameters.getContextName()).thenReturn(contextName);
- when(testSystemCommanderClientFactory.create(jmxParameters)).thenReturn(systemCommanderClient);
- when(systemCommanderClient.getRemote(contextName)).thenReturn(systemCommanderMBean);
-
- eventStoreSystemCommandCaller.callValidateCatchup();
-
- verify(systemCommanderMBean).call(VERIFY_CATCHUP);
- verify(systemCommanderClient).close();
- }
-
- @Test
- public void shouldCallValidatePublishedEvents() throws Exception {
-
- final String contextName = "contextName";
-
- final JmxParameters jmxParameters = mock(JmxParameters.class);
- final SystemCommanderClient systemCommanderClient = mock(SystemCommanderClient.class);
- final SystemCommanderMBean systemCommanderMBean = mock(SystemCommanderMBean.class);
-
- final EventStoreSystemCommandCaller eventStoreSystemCommandCaller = new EventStoreSystemCommandCaller(jmxParameters, testSystemCommanderClientFactory);
-
- when(jmxParameters.getContextName()).thenReturn(contextName);
- when(testSystemCommanderClientFactory.create(jmxParameters)).thenReturn(systemCommanderClient);
- when(systemCommanderClient.getRemote(contextName)).thenReturn(systemCommanderMBean);
-
- eventStoreSystemCommandCaller.callValidatePublishedEvents();
-
- verify(systemCommanderMBean).call(VALIDATE_EVENTS);
- verify(systemCommanderClient).close();
- }
-
- @Test
- public void shouldCreateWithCorrectDefaultParametersIfInstantiatingUsingTheContextName() throws Exception {
-
- final String contextName = "contextName";
- final EventStoreSystemCommandCaller eventStoreSystemCommandCaller = new EventStoreSystemCommandCaller(contextName);
-
- final JmxParameters jmxParameters = getValueOfField(eventStoreSystemCommandCaller, "jmxParameters", JmxParameters.class);
-
- assertThat(jmxParameters.getContextName(), is(contextName));
- assertThat(jmxParameters.getHost(), is(getHost()));
- assertThat(jmxParameters.getPort(), is(9990));
-
- final Optional credentials = jmxParameters.getCredentials();
-
- if (credentials.isPresent()) {
- assertThat(credentials.get().getUsername(), is("admin"));
- assertThat(credentials.get().getPassword(), is("admin"));
- } else {
- fail();
- }
- }
-}