diff --git a/includes/pift_ci_job.inc b/includes/pift_ci_job.inc
index be3a3a5..53e3b28 100644
--- a/includes/pift_ci_job.inc
+++ b/includes/pift_ci_job.inc
@@ -210,12 +210,52 @@ class PiftCiJob extends Entity {
 
     if ($release_wrapper->field_release_project->value()->type === 'project_core') {
       // Core test.
+      $test_type = 'core';
       $query['DCI_CoreRepository'] = variable_get('pift_git_base_url', 'git://git.drupal.org/project/') . $release_wrapper->field_release_project->value()->versioncontrol_project['repo']->name . '.git';
       $query['DCI_CoreBranch'] = $release->versioncontrol_release['label']['name'];
     }
-    else {
+    elseif ($release_wrapper->field_release_project->value()->type === 'project_module') {
       // Contrib test.
-      watchdog('pift_ci', 'Non-core testing not supported yet.');
+      $test_type = 'contrib';
+
+      // Set DCI_CoreRepository and DCI_CoreBranch
+      // Get contrib branch, and deduce the core version it is associated with
+      $vcs_components = versioncontrol_release_get_version_from_label($release->versioncontrol_release['label']['name'], $release->versioncontrol_release['label']['type'], $release_wrapper->field_release_project->value());
+      $core_branch_major = $vcs_components->version_api;
+      // TODO: Fix once we know how contrib versioning will work going from 8.0.x to 8.1.x
+      $core_branch = ($core_branch_major == "8.x") ? "8.0.x" : $core_branch_major;
+      // $query['DCI_CoreRepository'] = variable_get('pift_git_base_url', 'git://git.drupal.org/project/') . $release_wrapper->field_release_project->value()->versioncontrol_project['repo']->name . '.git';
+      // TODO: Get rid of this hard-coded value, in case our core repository name were to ever change.
+      $query['DCI_CoreRepository'] = variable_get('pift_git_base_url', 'git://git.drupal.org/project/') . 'drupal.git';
+      $query['DCI_CoreBranch'] = $core_branch;
+
+      // Set DCI_TestItem
+      // Format:  module:<module name>
+      $query['DCI_TestItem'] = "module:" . $release_wrapper->field_release_project->value()->field_project_machine_name[LANGUAGE_NONE][0]['value'];
+
+      // Add the project under test to the Additional Repositories string
+      $protocol = "git";
+      $repository = variable_get('pift_git_base_url', 'git://git.drupal.org/project/') . $release_wrapper->field_release_project->value()->versioncontrol_project['repo']->name . '.git';
+      $branch = $release->versioncontrol_release['label']['name'];
+      $checkout_directory = (($core_branch_major > 7) ? 'modules/' : 'sites/all/modules/') . $release_wrapper->field_release_project->value()->versioncontrol_project['repo']->name;
+      $depth = 1;  // Default to shallow checkouts to save time & space
+      $query['DCI_AdditionalRepositories'] = "$protocol,$repository,$branch,$checkout_directory,$depth;";
+
+      // Retrieve dependencies
+      $dependencies = project_dependency_get_external_release_dependencies($this->release_nid);
+      $dependency_nodes = node_load_multiple(array_keys($dependencies));
+
+      foreach ($dependency_nodes as $dependency_nid => $dependency_node) {
+        $dependency_wrapper = entity_metadata_wrapper('node', $dependency_nid);
+        $project_node = $dependency_wrapper->field_release_project->value();
+        $repository = variable_get('pift_git_base_url', 'git://git.drupal.org/project/') . $project_node->versioncontrol_project['repo']->name . '.git';
+        $branch = $dependency_node->versioncontrol_release['label']['name'];
+        $checkout_directory = (($core_branch_major > 7) ? 'modules/' : 'sites/all/modules/') . $project_node->versioncontrol_project['repo']->name;
+        $query['DCI_AdditionalRepositories'] .= "$protocol,$repository,$branch,$checkout_directory,$depth;";
+      }
+    }
+    else {
+      watchdog('pift_ci', 'Non-module testing not supported yet.');
       return FALSE;
     }
 
@@ -237,8 +277,9 @@ class PiftCiJob extends Entity {
 
       // Patch test.
       $file = file_load($this->file_id);
-      $query['DCI_Fetch'] = file_create_url($file->uri) . ',.';
-      $query['DCI_Patch'] = drupal_basename($file->uri) . ',.';
+      $patch_directory = ($test_type == 'core') ? "." : ((($core_branch_major > 7) ? 'modules/' : 'sites/all/modules/') . $project_node->versioncontrol_project['repo']->name);
+      $query['DCI_Fetch'] = file_create_url($file->uri) . ",.";
+      $query['DCI_Patch'] = drupal_basename($file->uri) . ",$patch_directory";
     }
 
     if (taxonomy_term_load(project_release_get_release_api_tid($release))->name === '7.x') {
