diff --git a/it/common/pom.xml b/it/common/pom.xml
index 1b4c2e5256..734099c49e 100644
--- a/it/common/pom.xml
+++ b/it/common/pom.xml
@@ -71,4 +71,16 @@
             annotations
         
     
+
+    
+        
+            
+                true
+                ${project.basedir}/src/main/filtered-resources
+                
+                    **/*
+                
+            
+        
+    
 
diff --git a/it/runtime-v2/src/test/filtered-resources/version.properties b/it/common/src/main/filtered-resources/com/walmartlabs/concord/it/common/version.properties
similarity index 100%
rename from it/runtime-v2/src/test/filtered-resources/version.properties
rename to it/common/src/main/filtered-resources/com/walmartlabs/concord/it/common/version.properties
diff --git a/it/common/src/main/java/com/walmartlabs/concord/it/common/ITUtils.java b/it/common/src/main/java/com/walmartlabs/concord/it/common/ITUtils.java
index baf5fe42d1..2338ca35b8 100644
--- a/it/common/src/main/java/com/walmartlabs/concord/it/common/ITUtils.java
+++ b/it/common/src/main/java/com/walmartlabs/concord/it/common/ITUtils.java
@@ -21,8 +21,8 @@
  */
 
 import com.walmartlabs.concord.common.PathUtils;
+import com.walmartlabs.concord.common.TemporaryPath;
 import com.walmartlabs.concord.common.ZipUtils;
-import com.walmartlabs.concord.sdk.Constants;
 import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
 import org.eclipse.jgit.api.Git;
 import org.eclipse.jgit.api.errors.GitAPIException;
@@ -36,27 +36,24 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
 import java.nio.file.attribute.PosixFilePermissions;
 import java.util.Random;
 import java.util.concurrent.ThreadLocalRandom;
+import java.util.stream.Stream;
 
 public final class ITUtils {
 
     private static final char[] RANDOM_CHARS = "abcdef0123456789".toCharArray();
 
     public static byte[] archive(URI uri) throws IOException {
-        return archive(uri, null);
-    }
-
-    public static byte[] archive(URI uri, String depsDir) throws IOException {
-        ByteArrayOutputStream out = new ByteArrayOutputStream();
-        try (ZipArchiveOutputStream zip = new ZipArchiveOutputStream(out)) {
-            ZipUtils.zip(zip, Paths.get(uri));
-            if (depsDir != null) {
-                ZipUtils.zip(zip, Constants.Files.LIBRARIES_DIR_NAME + "/", Paths.get(depsDir));
+        try (TemporaryPath tmpDir = preprocessDir(uri)) {
+            ByteArrayOutputStream out = new ByteArrayOutputStream();
+            try (ZipArchiveOutputStream zip = new ZipArchiveOutputStream(out)) {
+                ZipUtils.zip(zip, tmpDir.path());
             }
+            return out.toByteArray();
         }
-        return out.toByteArray();
     }
 
     public static String resourceToString(Class> klass, String resource) throws Exception {
@@ -109,6 +106,31 @@ public static String randomPwd() {
         return "pwd_" + randomString() + "A!";
     }
 
+    private static TemporaryPath preprocessDir(URI uri) throws IOException {
+        Path src = Paths.get(uri);
+
+        // copy files from the specified URI to a temporary directory
+        TemporaryPath tmpDir = PathUtils.tempDir("test");
+        PathUtils.copy(src, tmpDir.path());
+
+        // find and replace all PROJECT_VERSION strings with the current ${project.version}
+        try (Stream yamlFiles = Files.walk(tmpDir.path())) {
+            for (Path yamlFile : yamlFiles.filter(f -> {
+                String fileName = f.getFileName().toString().toLowerCase();
+                return fileName.endsWith(".yaml") || fileName.endsWith(".yml") || fileName.endsWith(".json");
+            }).toList()) {
+                String content = Files.readString(yamlFile);
+                if (!content.contains("PROJECT_VERSION")) {
+                    continue;
+                }
+                content = content.replaceAll("PROJECT_VERSION", Version.PROJECT_VERSION);
+                Files.writeString(yamlFile, content, StandardOpenOption.TRUNCATE_EXISTING);
+            }
+        }
+
+        return tmpDir;
+    }
+
     private ITUtils() {
     }
 }
diff --git a/it/common/src/main/java/com/walmartlabs/concord/it/common/Version.java b/it/common/src/main/java/com/walmartlabs/concord/it/common/Version.java
new file mode 100644
index 0000000000..9080189a17
--- /dev/null
+++ b/it/common/src/main/java/com/walmartlabs/concord/it/common/Version.java
@@ -0,0 +1,43 @@
+package com.walmartlabs.concord.it.common;
+
+/*-
+ * *****
+ * Concord
+ * -----
+ * Copyright (C) 2017 - 2018 Walmart Inc.
+ * -----
+ * 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.
+ * =====
+ */
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Properties;
+
+public final class Version {
+
+    public static final String PROJECT_VERSION;
+
+    static {
+        try (InputStream in = Version.class.getResourceAsStream("version.properties")) {
+            Properties props = new Properties();
+            props.load(in);
+            PROJECT_VERSION = props.getProperty("project.version");
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    private Version() {
+    }
+}
diff --git a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/ITConstants.java b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/ITConstants.java
index e2f747d0db..ecd6bcbd57 100644
--- a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/ITConstants.java
+++ b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/ITConstants.java
@@ -20,29 +20,10 @@
  * =====
  */
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
 public final class ITConstants {
 
-    public static final String PROJECT_VERSION;
     public static final long DEFAULT_TEST_TIMEOUT = 120000;
 
-    static {
-        PROJECT_VERSION = getProperties("version.properties").getProperty("project.version");
-    }
-
-    private static Properties getProperties(String path) {
-        try (InputStream in = ClassLoader.getSystemResourceAsStream(path)) {
-            Properties props = new Properties();
-            props.load(in);
-            return props;
-        } catch (IOException e) {
-            throw new RuntimeException(e);
-        }
-    }
-
     private ITConstants() {
     }
 }
diff --git a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/NodeRosterIT.java b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/NodeRosterIT.java
index f41bb1e133..825ef8fd06 100644
--- a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/NodeRosterIT.java
+++ b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/NodeRosterIT.java
@@ -26,6 +26,7 @@
 import com.walmartlabs.concord.client2.HostEntry;
 import com.walmartlabs.concord.client2.NodeRosterHostsApi;
 import com.walmartlabs.concord.client2.ProcessEntry;
+import com.walmartlabs.concord.it.common.Version;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 
@@ -46,7 +47,7 @@ public void test() throws Exception {
         // run the Ansible flow first to get some data
 
         String concordYml = resourceToString(NodeRosterIT.class.getResource("noderoster/ansible.yml"))
-                .replaceAll("PROJECT_VERSION", ITConstants.PROJECT_VERSION);
+                .replaceAll("PROJECT_VERSION", Version.PROJECT_VERSION);
 
         ConcordProcess proc = concord.processes().start(new Payload()
                 .concordYml(concordYml)
@@ -67,7 +68,7 @@ public void test() throws Exception {
         // run the Node Roster flow next to test the plugin
 
         concordYml = resourceToString(ProcessIT.class.getResource("noderoster/noderoster.yml"))
-                .replaceAll("PROJECT_VERSION", ITConstants.PROJECT_VERSION);
+                .replaceAll("PROJECT_VERSION", Version.PROJECT_VERSION);
 
         proc = concord.processes().start(new Payload()
                 .concordYml(concordYml));
diff --git a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/ProcessIT.java b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/ProcessIT.java
index 81fa0372c2..bc25cef507 100644
--- a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/ProcessIT.java
+++ b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/ProcessIT.java
@@ -25,6 +25,7 @@
 import ca.ibodrov.concord.testcontainers.junit5.ConcordRule;
 import com.walmartlabs.concord.client2.*;
 import com.walmartlabs.concord.common.ConfigurationUtils;
+import com.walmartlabs.concord.it.common.Version;
 import com.walmartlabs.concord.sdk.Constants;
 import com.walmartlabs.concord.sdk.MapUtils;
 import org.junit.jupiter.api.Test;
@@ -347,7 +348,7 @@ public void testCheckpointsParallel() throws Exception {
     @Test
     public void testNoStateAfterCheckpoint() throws Exception {
         String concordYml = resourceToString(ProcessIT.class.getResource("checkpointState/concord.yml"))
-                .replaceAll("PROJECT_VERSION", ITConstants.PROJECT_VERSION);
+                .replaceAll("PROJECT_VERSION", Version.PROJECT_VERSION);
 
         Payload payload = new Payload().concordYml(concordYml);
 
@@ -418,7 +419,7 @@ public void testForkCheckpoints() throws Exception {
     @Test
     public void testCheckpointsWith3rdPartyClasses() throws Exception {
         String concordYml = resourceToString(NodeRosterIT.class.getResource("checkpointClasses/concord.yml"))
-                .replaceAll("PROJECT_VERSION", ITConstants.PROJECT_VERSION);
+                .replaceAll("PROJECT_VERSION", Version.PROJECT_VERSION);
 
         ConcordProcess proc = concord.processes().start(new Payload()
                 .concordYml(concordYml));
diff --git a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/SmtpIT.java b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/SmtpIT.java
index 2e74d2d1a5..c94e8a0a34 100644
--- a/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/SmtpIT.java
+++ b/it/runtime-v2/src/test/java/com/walmartlabs/concord/it/runtime/v2/SmtpIT.java
@@ -28,6 +28,7 @@
 import com.icegreen.greenmail.junit5.GreenMailExtension;
 import com.icegreen.greenmail.util.ServerSetup;
 import com.walmartlabs.concord.client2.ProcessEntry;
+import com.walmartlabs.concord.it.common.Version;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.RegisterExtension;
 import org.testcontainers.Testcontainers;
@@ -61,7 +62,7 @@ public void test() throws Exception {
 
         // SMTP host and port must be accessible by the process
         // i.e. when running in a container the host must point to the docker host's address
-        concordYml = concordYml.replaceAll("PROJECT_VERSION", ITConstants.PROJECT_VERSION)
+        concordYml = concordYml.replaceAll("PROJECT_VERSION", Version.PROJECT_VERSION)
                 .replaceAll("SMTP_HOST", concord.hostAddressAccessibleByContainers())
                 .replaceAll("SMTP_PORT", String.valueOf(mailServer.getSmtp().getPort()));
 
diff --git a/it/server/pom.xml b/it/server/pom.xml
index bb169e0a4c..83af2719f8 100644
--- a/it/server/pom.xml
+++ b/it/server/pom.xml
@@ -268,67 +268,20 @@
                         
                             true
                             
-                                
-                                    com.walmartlabs.concord.plugins.basic
-                                    ansible-tasks
-                                    ${project.version}
-                                
                                 
                                     com.walmartlabs.concord.plugins.basic
                                     ansible-template
                                     ${project.version}
                                     ansible-template.jar
                                 
-                                
-                                    com.walmartlabs.concord.plugins.basic
-                                    concord-tasks
-                                    ${project.version}
-                                
-                                
-                                    com.walmartlabs.concord.plugins.basic
-                                    dynamic-tasks
-                                    ${project.version}
-                                
 
-                                
-                                
-                                    com.walmartlabs.concord.plugins.basic
-                                    noderoster-tasks
-                                    ${project.version}
-                                
-                                
-                                    com.walmartlabs.concord.server.plugins.noderoster
-                                    concord-noderoster-plugin-client2
-                                    ${project.version}
-                                
-
-                                
-                                
-                                    com.walmartlabs.concord.plugins.basic
-                                    smtp-tasks
-                                    ${project.version}
-                                
-                                
-                                    org.apache.commons
-                                    commons-email
-                                
-                                
-                                    com.sun.mail
-                                    javax.mail
-                                
-                                
-                                    com.sun.activation
-                                    javax.activation
-                                
-
-                                
+                                
                                 
                                     com.walmartlabs.concord.plugins.basic
                                     example-tasks
                                     ${project.version}
                                     example.jar
                                 
-
                                 
                                     com.walmartlabs.concord.plugins.basic
                                     ansible-tasks
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleEventIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleEventIT.java
index 3a04033513..d0959a4f4c 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleEventIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleEventIT.java
@@ -38,7 +38,7 @@ public class AnsibleEventIT extends AbstractServerIT {
     @SuppressWarnings("unchecked")
     public void testEvent() throws Exception {
         URI uri = AnsibleEventIT.class.getResource("ansibleEvent").toURI();
-        byte[] payload = archive(uri, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(uri);
 
         // ---
 
@@ -81,7 +81,7 @@ public void testEvent() throws Exception {
     @Test
     public void testIgnoredFailures() throws Exception {
         URI uri = AnsibleEventIT.class.getResource("ansibleIgnoredFailures").toURI();
-        byte[] payload = archive(uri, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(uri);
 
         // ---
 
@@ -123,7 +123,7 @@ public void testIgnoredFailures() throws Exception {
     @Test
     public void testFailedHosts() throws Exception {
         URI uri = AnsibleEventIT.class.getResource("ansibleFailedHosts").toURI();
-        byte[] payload = archive(uri, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(uri);
 
         // ---
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleEventProcessorIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleEventProcessorIT.java
index 6abf241652..1810bd42b1 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleEventProcessorIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleEventProcessorIT.java
@@ -38,7 +38,7 @@ public class AnsibleEventProcessorIT extends AbstractServerIT {
     @Test
     public void test() throws Exception {
         URI uri = AnsibleEventProcessorIT.class.getResource("ansibleEventProcessor").toURI();
-        byte[] payload = archive(uri, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(uri);
 
         // ---
 
@@ -66,7 +66,7 @@ public void test() throws Exception {
     @Test
     public void testLongNames() throws Exception {
         URI uri = AnsibleEventProcessorIT.class.getResource("ansibleEventProcessor").toURI();
-        byte[] payload = archive(uri, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(uri);
 
         // ---
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleIT.java
index 73839df3a6..6dc21768dd 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleIT.java
@@ -45,7 +45,7 @@ public class AnsibleIT extends AbstractServerIT {
     @Test
     public void testHello() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansible").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -65,7 +65,7 @@ public void testHello() throws Exception {
     @Test
     public void testSkipTags() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleSkipTags").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -86,7 +86,7 @@ public void testSkipTags() throws Exception {
     @Test
     public void testVault() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleVault").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -106,7 +106,7 @@ public void testVault() throws Exception {
     @Test
     public void testVaultWithMultiplePasswords() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleVaultMultiplePasswords").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -126,7 +126,7 @@ public void testVaultWithMultiplePasswords() throws Exception {
     @Test
     public void testVaultWithMultiplePasswordFiles() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleVaultMultiplePasswordFiles").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -147,7 +147,7 @@ public void testVaultWithMultiplePasswordFiles() throws Exception {
     @SuppressWarnings("unchecked")
     public void testTwoAnsibleRuns() throws Exception {
         URI dir = AnsibleIT.class.getResource("twoAnsible").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -187,7 +187,7 @@ public void testTwoAnsibleRuns() throws Exception {
     @Test
     public void testWithForm() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleWithForm").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -221,7 +221,7 @@ public void testWithForm() throws Exception {
     @Test
     public void testWithFormSuspensionPostAnsible() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleWithPostFormSuspension/payload").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // --
 
@@ -264,7 +264,7 @@ public void testExtenalPlaybook() throws Exception {
 
         URI dir = AnsibleIT.class.getResource("ansibleExternalPlaybook/payload").toURI();
         URL playbookUrl = AnsibleIT.class.getResource("ansibleExternalPlaybook/playbook/hello.yml");
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -283,7 +283,7 @@ public void testExtenalPlaybook() throws Exception {
     @Test
     public void testMergeDefaults() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleMergeDefaults").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -316,7 +316,7 @@ public void testGroupVars() throws Exception {
         // ---
 
         URI dir = AnsibleIT.class.getResource("ansibleGroupVars").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -340,7 +340,7 @@ public void testGroupVars() throws Exception {
     @Test
     public void testOutVars() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleOutVars").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -361,7 +361,7 @@ public void testOutVars() throws Exception {
     @Test
     public void testStats() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleStats").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -381,7 +381,7 @@ public void testStats() throws Exception {
     @Test
     public void testBadStrings() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleBadStrings").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -401,7 +401,7 @@ public void testBadStrings() throws Exception {
     @Test
     public void testRawStrings() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleRawStrings").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -423,7 +423,7 @@ public void testRawStrings() throws Exception {
     @SuppressWarnings("unchecked")
     public void testTemplateArgs() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleTemplateArgs").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -456,7 +456,7 @@ public void testTemplateArgs() throws Exception {
     @Test
     public void testExtraVarsFiles() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleExtraVarsFiles").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -475,7 +475,7 @@ public void testExtraVarsFiles() throws Exception {
     @Test
     public void testMultiInventories() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleMultiInventory").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -494,7 +494,7 @@ public void testMultiInventories() throws Exception {
     @Test
     public void testMultiInventoryFiles() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleMultiInventoryFile").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -513,7 +513,7 @@ public void testMultiInventoryFiles() throws Exception {
     @Test
     public void testLimitWithMultipleHost() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleLimitWithMultipleHost").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -533,7 +533,7 @@ public void testLimitWithMultipleHost() throws Exception {
     @Test
     public void testInventoryMixMatch() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleInventoryMix").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -553,7 +553,7 @@ public void testInventoryMixMatch() throws Exception {
     @Test
     public void testInventoryNameInvalidChars() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleInventoryName").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -575,7 +575,7 @@ public void testLogFiltering() throws Exception {
         // run w/o filtering first
 
         URI dir = AnsibleIT.class.getResource("ansibleLogFiltering").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleLookupIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleLookupIT.java
index 26b49e4314..cdff35c40f 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleLookupIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleLookupIT.java
@@ -53,7 +53,7 @@ public void testSecrets() throws Exception {
         // ---
 
         URI dir = AnsibleLookupIT.class.getResource("ansibleLookupSecret").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -98,7 +98,7 @@ public void testSecretData() throws Exception {
         // ---
 
         URI dir = AnsibleLookupIT.class.getResource("ansibleLookupSecretData").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -142,7 +142,7 @@ public void testSecretDataNoPassword() throws Exception {
         // ---
 
         URI dir = AnsibleLookupIT.class.getResource("ansibleLookupSecretDataNoPassword").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
         Map input = new HashMap<>();
@@ -182,7 +182,7 @@ public void testPublickey() throws Exception {
         // ---
 
         URI dir = AnsibleLookupIT.class.getResource("ansibleLookupPublicKey").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -222,7 +222,7 @@ public void testSecretValue() throws Exception {
 
         // ---
 
-        byte[] payload = archive(AnsibleLookupIT.class.getResource("ansibleLookupSecretDataValue").toURI(), ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(AnsibleLookupIT.class.getResource("ansibleLookupSecretDataValue").toURI());
 
         Map input = new HashMap<>();
         input.put("archive", payload);
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsiblePolicyIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsiblePolicyIT.java
index 4ec0378133..6835404535 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsiblePolicyIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsiblePolicyIT.java
@@ -61,7 +61,7 @@ public void testTaskDeny() throws Exception {
                 .projectName(projectName));
 
         URI dir = AnsiblePolicyIT.class.getResource("ansiblePolicyTaskDeny").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsiblePolicyVerboseLimitIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsiblePolicyVerboseLimitIT.java
index d630578c4d..a201dc5542 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsiblePolicyVerboseLimitIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsiblePolicyVerboseLimitIT.java
@@ -75,7 +75,7 @@ public void setup() throws Exception {
     @Test
     public void testLargeInventoryLimitedToGroup() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleLargeVerbose").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -104,7 +104,7 @@ public void testLargeInventoryLimitedToGroup() throws Exception {
     @Test
     public void testVerboseTooManyImportedTasks() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleLargeVerbose").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -133,7 +133,7 @@ public void testVerboseTooManyImportedTasks() throws Exception {
     @Test
     public void testVerboseTooManyHosts() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleLargeVerbose").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -162,7 +162,7 @@ public void testVerboseTooManyHosts() throws Exception {
     @Test
     public void testVerboseTooMuchWork() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleLargeVerbose").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -191,7 +191,7 @@ public void testVerboseTooMuchWork() throws Exception {
     @Test
     public void testNoVerboseLargeInventory() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleLargeVerbose").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
@@ -220,7 +220,7 @@ public void testNoVerboseLargeInventory() throws Exception {
     @Test
     public void testVerboseSmallInventory() throws Exception {
         URI dir = AnsibleIT.class.getResource("ansibleLargeVerbose").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // ---
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleRetryIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleRetryIT.java
index e158779fbd..8f72c869df 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleRetryIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/AnsibleRetryIT.java
@@ -38,7 +38,7 @@ public class AnsibleRetryIT extends AbstractServerIT {
     @Test
     public void testSaveRetry() throws Exception {
         URI uri = ProcessIT.class.getResource("ansibleSaveRetry").toURI();
-        byte[] payload = archive(uri, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(uri);
 
         // start the process
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/AttachmentRbacIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/AttachmentRbacIT.java
index ce3a61f28e..fa662e91c9 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/AttachmentRbacIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/AttachmentRbacIT.java
@@ -110,8 +110,7 @@ public void test() throws Exception {
 
         // start a new process using the project as the user A
 
-        byte[] payload = archive(AttachmentRbacIT.class.getResource("ansibleEvent").toURI(),
-                ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(AttachmentRbacIT.class.getResource("ansibleEvent").toURI());
         Map input = new HashMap<>();
         input.put("archive", payload);
         input.put("org", orgName);
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/DockerAnsibleIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/DockerAnsibleIT.java
index 6ac8887fc7..71480cd012 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/DockerAnsibleIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/DockerAnsibleIT.java
@@ -41,8 +41,7 @@ public class DockerAnsibleIT extends AbstractServerIT {
 
     @Test
     public void test() throws Exception {
-        byte[] payload = archive(DockerAnsibleIT.class.getResource("dockerAnsible").toURI(),
-                ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(DockerAnsibleIT.class.getResource("dockerAnsible").toURI());
 
         Map input = new HashMap<>();
         input.put("archive", payload);
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/DynamicTaskIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/DynamicTaskIT.java
index f2eaba8afb..6801081daf 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/DynamicTaskIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/DynamicTaskIT.java
@@ -36,7 +36,7 @@ public class DynamicTaskIT extends AbstractServerIT {
     public void testDynamicTask() throws Exception {
         // prepare the payload
 
-        byte[] payload = archive(DynamicTaskIT.class.getResource("dynamicTask").toURI(), ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(DynamicTaskIT.class.getResource("dynamicTask").toURI());
 
         // start the process
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/NodeRosterIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/NodeRosterIT.java
index ee612a3450..3a4ee3fcb6 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/NodeRosterIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/NodeRosterIT.java
@@ -62,7 +62,7 @@ public void testE2e() throws Exception {
 
         // run an Ansible playbook to get some events
 
-        byte[] payload = archive(NodeRosterIT.class.getResource("nodeRoster").toURI(), ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(NodeRosterIT.class.getResource("nodeRoster").toURI());
 
         String artifactUrl = "http://" + env("IT_DOCKER_HOST_ADDR", "localhost") + ":" + rule.getPort() + "/test.txt";
 
@@ -112,7 +112,7 @@ public void testE2e() throws Exception {
 
         // let's test the task
 
-        payload = archive(ProcessIT.class.getResource("nodeRosterTask").toURI(), ITConstants.DEPENDENCIES_DIR);
+        payload = archive(ProcessIT.class.getResource("nodeRosterTask").toURI());
 
         input = new HashMap<>();
         input.put("archive", payload);
@@ -130,7 +130,7 @@ public void testE2e() throws Exception {
 
     @Test
     public void testMultipleFactsPerHost() throws Exception {
-        byte[] payload = archive(ProcessIT.class.getResource("nodeRosterMultiFacts").toURI(), ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(ProcessIT.class.getResource("nodeRosterMultiFacts").toURI());
 
         String host = "host_" + randomString();
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/ProcessIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/ProcessIT.java
index 411fa9d6e0..337d74e3ad 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/ProcessIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/ProcessIT.java
@@ -83,7 +83,7 @@ public void testTimeout() throws Exception {
 
     @Test
     public void testTaskOut() throws Exception {
-        byte[] payload = archive(ProcessIT.class.getResource("taskOut").toURI(), ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(ProcessIT.class.getResource("taskOut").toURI());
 
         StartProcessResponse spr = start(payload);
 
@@ -99,7 +99,7 @@ public void testTaskOut() throws Exception {
 
     @Test
     public void testDelegateOut() throws Exception {
-        byte[] payload = archive(ProcessIT.class.getResource("delegateOut").toURI(), ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(ProcessIT.class.getResource("delegateOut").toURI());
 
         StartProcessResponse spr = start(payload);
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/SerializationIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/SerializationIT.java
index 0313ac7f8b..e25ee77a7d 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/SerializationIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/SerializationIT.java
@@ -38,8 +38,7 @@ public class SerializationIT extends AbstractServerIT {
 
     @Test
     public void test() throws Exception {
-        byte[] payload = archive(SerializationIT.class.getResource("serialization").toURI(),
-                ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(SerializationIT.class.getResource("serialization").toURI());
 
         // ---
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/SmtpIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/SmtpIT.java
index d26be19164..1c67162fa5 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/SmtpIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/SmtpIT.java
@@ -45,7 +45,7 @@ public class SmtpIT extends AbstractServerIT {
     @Test
     public void testSimple() throws Exception {
         URI dir = SmtpIT.class.getResource("smtp").toURI();
-        byte[] payload = archive(dir, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(dir);
 
         // --
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/TaskRetryIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/TaskRetryIT.java
index 6c43bd9665..e1f3e7cdfd 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/TaskRetryIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/TaskRetryIT.java
@@ -39,7 +39,7 @@ public class TaskRetryIT extends AbstractServerIT {
     @Test
     public void testAnsibleRetry() throws Exception {
         URI uri = TaskRetryIT.class.getResource("taskRetry").toURI();
-        byte[] payload = archive(uri, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(uri);
 
         // start the process
 
@@ -58,7 +58,7 @@ public void testAnsibleRetry() throws Exception {
     @Test
     public void testAnsibleRetryWithExpression() throws Exception {
         URI uri = TaskRetryIT.class.getResource("taskRetryWithExpression").toURI();
-        byte[] payload = archive(uri, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(uri);
 
         // start the process
 
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/VariablesIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/VariablesIT.java
index 337bf01e00..b3ef1fc452 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/VariablesIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/VariablesIT.java
@@ -109,8 +109,7 @@ public void testArrayInterpolation() throws Exception {
         String varA = "varA_" + System.currentTimeMillis();
         String varB = "varB_" + System.currentTimeMillis();
 
-        byte[] payload = archive(VariablesIT.class.getResource("arrayInterpolation").toURI(),
-                ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(VariablesIT.class.getResource("arrayInterpolation").toURI());
 
         Map args = new HashMap<>();
         args.put("varA", varA);
@@ -134,8 +133,7 @@ public void testArrayInterpolation() throws Exception {
 
     @Test
     public void testSetVar() throws Exception {
-        byte[] payload = archive(VariablesIT.class.getResource("setVar").toURI(),
-                ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(VariablesIT.class.getResource("setVar").toURI());
 
         Map input = new HashMap<>();
         input.put("archive", payload);
@@ -152,8 +150,7 @@ public void testSetVar() throws Exception {
 
     @Test
     public void testGetNestedVar() throws Exception {
-        byte[] payload = archive(VariablesIT.class.getResource("getVar").toURI(),
-                ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(VariablesIT.class.getResource("getVar").toURI());
 
         Map input = new HashMap<>();
         input.put("archive", payload);
@@ -171,8 +168,7 @@ public void testGetNestedVar() throws Exception {
 
     @Test
     public void testSetDependentVars() throws Exception {
-        byte[] payload = archive(VariablesIT.class.getResource("setVarNested").toURI(),
-                ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(VariablesIT.class.getResource("setVarNested").toURI());
 
         Map input = new HashMap<>();
         input.put("archive", payload);
@@ -191,8 +187,7 @@ public void testSetDependentVars() throws Exception {
 
     @Test
     public void testSetDependentVars2() throws Exception {
-        byte[] payload = archive(VariablesIT.class.getResource("setVarNested2").toURI(),
-                ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(VariablesIT.class.getResource("setVarNested2").toURI());
 
         Map input = new HashMap<>();
         input.put("archive", payload);
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/VariablesInjectionIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/VariablesInjectionIT.java
index 4b4eb871fc..2848ed688e 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/VariablesInjectionIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/VariablesInjectionIT.java
@@ -33,8 +33,7 @@ public class VariablesInjectionIT extends AbstractServerIT {
 
     @Test
     public void test() throws Exception {
-        byte[] payload = archive(VariablesInjectionIT.class.getResource("inject").toURI(),
-                ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(VariablesInjectionIT.class.getResource("inject").toURI());
 
         StartProcessResponse spr = start(payload);
         assertNotNull(spr.getInstanceId());
diff --git a/it/server/src/test/java/com/walmartlabs/concord/it/server/WithItemsIT.java b/it/server/src/test/java/com/walmartlabs/concord/it/server/WithItemsIT.java
index e8f688e391..e645aaa345 100644
--- a/it/server/src/test/java/com/walmartlabs/concord/it/server/WithItemsIT.java
+++ b/it/server/src/test/java/com/walmartlabs/concord/it/server/WithItemsIT.java
@@ -36,7 +36,7 @@ public class WithItemsIT extends AbstractServerIT {
     @Test
     public void testAnsible() throws Exception {
         URI uri = WithItemsIT.class.getResource("ansibleWithItems").toURI();
-        byte[] payload = archive(uri, ITConstants.DEPENDENCIES_DIR);
+        byte[] payload = archive(uri);
 
         // ---
 
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansible/_main.json b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansible/_main.json
index a7c04711e4..b059fe30a3 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansible/_main.json
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansible/_main.json
@@ -1,4 +1,7 @@
 {
+  "dependencies": [
+    "mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION"
+  ],
   "entryPoint": "main",
   "arguments": {
     "ansibleParams": {
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleBadStrings/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleBadStrings/concord.yml
index 9549e45196..cd5c785d26 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleBadStrings/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleBadStrings/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleEvent/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleEvent/concord.yml
index c4eaab0e8a..204078109d 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleEvent/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleEvent/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleEventProcessor/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleEventProcessor/concord.yml
index 3bcdaee47f..82802d229f 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleEventProcessor/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleEventProcessor/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleExternalPlaybook/payload/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleExternalPlaybook/payload/concord.yml
index 7fdef3ed4f..663c4b08ab 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleExternalPlaybook/payload/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleExternalPlaybook/payload/concord.yml
@@ -1,4 +1,6 @@
-
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
 
 flows:
   default:
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleExtraVarsFiles/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleExtraVarsFiles/concord.yml
index 8b3ae9ace1..0643e6aff0 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleExtraVarsFiles/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleExtraVarsFiles/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
     - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleFailedHosts/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleFailedHosts/concord.yml
index 81d305fe20..035b2c398c 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleFailedHosts/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleFailedHosts/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleGroupVars/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleGroupVars/concord.yml
index acc5879270..1f4d64bdb9 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleGroupVars/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleGroupVars/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
     - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleIgnoredFailures/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleIgnoredFailures/concord.yml
index e2acec6133..92668df620 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleIgnoredFailures/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleIgnoredFailures/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleInventoryMix/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleInventoryMix/concord.yml
index 9720a60951..d09043259a 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleInventoryMix/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleInventoryMix/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
     - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleInventoryName/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleInventoryName/concord.yml
index ea01623e62..6a4dd7f036 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleInventoryName/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleInventoryName/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
     - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLargeVerbose/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLargeVerbose/concord.yml
index c9e451b18a..dfd2c4ab4e 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLargeVerbose/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLargeVerbose/concord.yml
@@ -1,4 +1,6 @@
 configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
   arguments:
     groupLimit: null
 
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLimitWithMultipleHost/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLimitWithMultipleHost/concord.yml
index e56518bb69..e4c69f8ed3 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLimitWithMultipleHost/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLimitWithMultipleHost/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
     - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLogFiltering/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLogFiltering/concord.yml
index a68fc88e15..54cf8f0549 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLogFiltering/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLogFiltering/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
     - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupPublicKey/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupPublicKey/concord.yml
index 8fb70c2a6e..afd15c10ec 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupPublicKey/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupPublicKey/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecret/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecret/concord.yml
index 9a623a8cc8..7c57eaf371 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecret/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecret/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretData/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretData/concord.yml
index 9a623a8cc8..7c57eaf371 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretData/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretData/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretDataNoPassword/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretDataNoPassword/concord.yml
index 45ca155c92..e79350fb3b 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretDataNoPassword/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretDataNoPassword/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretDataValue/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretDataValue/concord.yml
index 761229c71d..fb1bf5e1ce 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretDataValue/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleLookupSecretDataValue/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMergeDefaults/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMergeDefaults/concord.yml
index 9a663edd7b..4f7cb96b54 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMergeDefaults/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMergeDefaults/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMultiInventory/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMultiInventory/concord.yml
index 428b7fd06d..01d5c513f8 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMultiInventory/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMultiInventory/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
     - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMultiInventoryFile/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMultiInventoryFile/concord.yml
index 5bd5f350f8..52d5dfd359 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMultiInventoryFile/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleMultiInventoryFile/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
     - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleOutVars/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleOutVars/concord.yml
index 0b8cff347e..09de2988a1 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleOutVars/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleOutVars/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansiblePolicyTaskDeny/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansiblePolicyTaskDeny/concord.yml
index 55e7f78ea3..46aa17cc41 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansiblePolicyTaskDeny/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansiblePolicyTaskDeny/concord.yml
@@ -1,3 +1,8 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+  entryPoint: main
+
 flows:
   main:
   - task: ansible
@@ -12,6 +17,3 @@ flows:
       extraVars:
         greetings: "Hello, world"
       enablePolicy: true
-
-variables:
-  entryPoint: main
\ No newline at end of file
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleRawStrings/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleRawStrings/concord.yml
index fcaedbdf0e..74154c0bf2 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleRawStrings/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleRawStrings/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleSaveRetry/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleSaveRetry/concord.yml
index d1dc6808e0..230f017ab3 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleSaveRetry/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleSaveRetry/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleSkipTags/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleSkipTags/concord.yml
index 0606c047ec..454b92c501 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleSkipTags/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleSkipTags/concord.yml
@@ -1,3 +1,8 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+  entryPoint: main
+
 flows:
   main:
   - task: ansible
@@ -14,6 +19,3 @@ flows:
         greetings2: "Hello2, world"
       skipTags:
         - "tag-1"
-
-variables:
-  entryPoint: main
\ No newline at end of file
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleStats/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleStats/concord.yml
index 210d15daed..71848cb849 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleStats/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleStats/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleTemplateArgs/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleTemplateArgs/concord.yml
index fcaedbdf0e..74154c0bf2 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleTemplateArgs/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleTemplateArgs/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVault/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVault/concord.yml
index 7cb0047667..cb80da7e38 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVault/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVault/concord.yml
@@ -1,3 +1,8 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+  entryPoint: main
+
 flows:
   main:
   - task: ansible
@@ -10,6 +15,3 @@ flows:
           vars:
             ansible_connection: "local"
       vaultPasswordFile: get_password.py
-
-variables:
-  entryPoint: main
\ No newline at end of file
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVaultMultiplePasswordFiles/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVaultMultiplePasswordFiles/concord.yml
index 26f84bd16d..d2573c05e8 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVaultMultiplePasswordFiles/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVaultMultiplePasswordFiles/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVaultMultiplePasswords/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVaultMultiplePasswords/concord.yml
index 37b2b30cac..8bde34c486 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVaultMultiplePasswords/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleVaultMultiplePasswords/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithForm/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithForm/concord.yml
index ab40f754fa..b18ff00270 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithForm/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithForm/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - form: myForm
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithItems/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithItems/concord.yml
index 95fc26c44d..c6869cee44 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithItems/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithItems/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithPostFormSuspension/payload/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithPostFormSuspension/payload/concord.yml
index 1f78fd648d..2cf54947b7 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithPostFormSuspension/payload/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/ansibleWithPostFormSuspension/payload/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
     - call: runAnsible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/arrayInterpolation/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/arrayInterpolation/concord.yml
index 70de9d3f14..1fd3b19a66 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/arrayInterpolation/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/arrayInterpolation/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:example-tasks:PROJECT_VERSION
+
 flows:
   default:
   - example: ['${varA}', '${varB}']
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/delegateOut/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/delegateOut/concord.yml
index 395c6bcd9f..f89700a309 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/delegateOut/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/delegateOut/concord.yml
@@ -1,9 +1,11 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:example-tasks:PROJECT_VERSION
+  entryPoint: main
+
 flows:
   main:
   - task: exampleDelegate
     out:
       msg: ${exampleOutput}
   - log: "I said: ${msg}"
-
-variables:
-  entryPoint: main
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/dockerAnsible/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/dockerAnsible/concord.yml
index bdea4ef2d0..0409eee789 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/dockerAnsible/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/dockerAnsible/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/dynamicTask/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/dynamicTask/concord.yml
index 1715599096..fee31794de 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/dynamicTask/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/dynamicTask/concord.yml
@@ -1,6 +1,7 @@
 configuration:
   dependencies:
     - "mvn://org.codehaus.groovy:groovy-all:pom:2.5.23"
+    - "mvn://com.walmartlabs.concord.plugins.basic:dynamic-tasks:PROJECT_VERSION"
 
 flows:
   default:
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/inject/.concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/inject/.concord.yml
index ffa54f6730..7eb01ee0b7 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/inject/.concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/inject/.concord.yml
@@ -1,3 +1,10 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:example-tasks:PROJECT_VERSION
+  entryPoint: main
+  arguments:
+    myName: "Concord"
+
 flows:
   main:
   - ${example.hello("myName")}
@@ -7,8 +14,3 @@ flows:
   - ${example.helloButLouder()}
 
   - task: example
-
-variables:
-  entryPoint: main
-  arguments:
-    myName: "Concord"
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRoster/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRoster/concord.yml
index 13a57a471c..d66404c94e 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRoster/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRoster/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRosterMultiFacts/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRosterMultiFacts/concord.yml
index ccf98504be..59d9e3d168 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRosterMultiFacts/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRosterMultiFacts/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRosterTask/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRosterTask/concord.yml
index 060c731cd3..9a3e07e5ed 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRosterTask/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/nodeRosterTask/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:noderoster-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: nodeRoster
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/nonSerializableTest/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/nonSerializableTest/concord.yml
index 50562f3d15..7e1a61aeea 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/nonSerializableTest/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/nonSerializableTest/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.it.tasks:serialization-test:PROJECT_VERSION
+
 flows:
   default:
-    - task: serializationTest
\ No newline at end of file
+    - task: serializationTest
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/runnerEvents/_agent.json b/it/server/src/test/resources/com/walmartlabs/concord/it/server/runnerEvents/_agent.json
deleted file mode 100644
index 36e260511c..0000000000
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/runnerEvents/_agent.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-  "_jvmArgs": ["-Xdebug", "-Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y"]
-}
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/serialization/.concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/serialization/.concord.yml
index 18c40b2ff4..78bc8f3dd6 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/serialization/.concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/serialization/.concord.yml
@@ -1,6 +1,7 @@
 configuration:
   dependencies:
     - "mvn://org.codehaus.groovy:groovy-all:pom:2.5.23"
+    - "mvn://com.walmartlabs.concord.plugins.basic:example-tasks:PROJECT_VERSION"
 
 flows:
   default:
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/smtp/_main.json b/it/server/src/test/resources/com/walmartlabs/concord/it/server/smtp/_main.json
index 0004867fb2..55b24473ac 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/smtp/_main.json
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/smtp/_main.json
@@ -1,4 +1,7 @@
 {
+  "dependencies": [
+    "mvn://com.walmartlabs.concord.plugins.basic:smtp-tasks:PROJECT_VERSION"
+  ],
   "entryPoint": "main",
   "arguments": {
     "mailParams": {
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskOut/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskOut/concord.yml
index 9b07d4cbca..31f80273f3 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskOut/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskOut/concord.yml
@@ -1,9 +1,11 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:example-tasks:PROJECT_VERSION
+  entryPoint: main
+
 flows:
   main:
   - task: example
     out:
       msg: ${exampleOutput}
   - log: "I said: ${msg}"
-
-variables:
-  entryPoint: main
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskRetry/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskRetry/concord.yml
index 577f43d080..e8df535e78 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskRetry/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskRetry/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible2
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskRetryWithExpression/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskRetryWithExpression/concord.yml
index eb99894841..1f0fac0a66 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskRetryWithExpression/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/taskRetryWithExpression/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - task: ansible2
diff --git a/it/server/src/test/resources/com/walmartlabs/concord/it/server/twoAnsible/concord.yml b/it/server/src/test/resources/com/walmartlabs/concord/it/server/twoAnsible/concord.yml
index 0579534479..788dd7ef40 100644
--- a/it/server/src/test/resources/com/walmartlabs/concord/it/server/twoAnsible/concord.yml
+++ b/it/server/src/test/resources/com/walmartlabs/concord/it/server/twoAnsible/concord.yml
@@ -1,3 +1,7 @@
+configuration:
+  dependencies:
+    - mvn://com.walmartlabs.concord.plugins.basic:ansible-tasks:PROJECT_VERSION
+
 flows:
   default:
   - call: runAnsible