Index: /branches/end_stage/ippTools/share/camtool_queue_chip_id.sql
===================================================================
--- /branches/end_stage/ippTools/share/camtool_queue_chip_id.sql	(revision 16048)
+++ /branches/end_stage/ippTools/share/camtool_queue_chip_id.sql	(revision 16049)
@@ -11,5 +11,7 @@
         '%s',           -- reduction
         '%s',           -- expgroup
-        '%s'            -- dvodb 
+        '%s',           -- dvodb 
+        '%s',           -- tess_id
+        '%s'            -- end_stage
     FROM chipRun
     WHERE
Index: /branches/end_stage/ippTools/share/chiptool_completely_processed_exp.sql
===================================================================
--- /branches/end_stage/ippTools/share/chiptool_completely_processed_exp.sql	(revision 16048)
+++ /branches/end_stage/ippTools/share/chiptool_completely_processed_exp.sql	(revision 16049)
@@ -9,5 +9,7 @@
     reduction,
     expgroup,
-    dvodb
+    dvodb,
+    tess_id,
+    end_stage
 FROM
     (SELECT 
Index: /branches/end_stage/ippTools/src/camtool.c
===================================================================
--- /branches/end_stage/ippTools/src/camtool.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/camtool.c	(revision 16049)
@@ -240,4 +240,16 @@
     }
 
+    psString tess_id = psMetadataLookupStr(&status, config->args, "-set_tess_id");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_tess_id");
+        return false;
+    }
+
+    psString end_stage = psMetadataLookupStr(&status, config->args, "-set_end_stage");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_end_stage");
+        return false;
+    }
+
     // find the exp_id of all the exposures that we want to queue up.
     psString query = pxDataGet("camtool_find_chip_id.sql");
@@ -303,5 +315,7 @@
                     reduction      ? reduction    : row->reduction,
                     expgroup    ? expgroup  : row->expgroup,
-                    dvodb       ? dvodb     : row->dvodb
+                    dvodb       ? dvodb     : row->dvodb,
+                    tess_id     ? tess_id   : row->tess_id,
+                    end_stage   ? end_stage : row->end_stage
         )) {
             if (!psDBRollback(config->dbh)) {
Index: /branches/end_stage/ippTools/src/camtoolConfig.c
===================================================================
--- /branches/end_stage/ippTools/src/camtoolConfig.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/camtoolConfig.c	(revision 16049)
@@ -138,4 +138,8 @@
     psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_dvodb",  0,
             "define DVO db", NULL);
+    psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_tess_id",  0,
+            "define tess ID", NULL);
+    psMetadataAddStr(queueArgs, PS_LIST_TAIL, "-set_end_stage",  0,
+            "define end stage", NULL);
 
     // -pendingexp
Index: /branches/end_stage/ippTools/src/chiptool.c
===================================================================
--- /branches/end_stage/ippTools/src/chiptool.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/chiptool.c	(revision 16049)
@@ -228,4 +228,16 @@
     }
 
+    psString tess_id = psMetadataLookupStr(&status, config->args, "-set_tess_id");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_tess_id");
+        return false;
+    }
+
+    psString end_stage = psMetadataLookupStr(&status, config->args, "-set_end_stage");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_end_stage");
+        return false;
+    }
+
     // find the exp_id of all the exposures that we want to queue up.
     psString query = pxDataGet("chiptool_find_rawexp.sql");
@@ -280,5 +292,5 @@
 
         // queue the exp
-        if (!pxchipQueueByExpTag(config, exp_id, workdir, label, reduction, expgroup, dvodb)) {
+        if (!pxchipQueueByExpTag(config, exp_id, workdir, label, reduction, expgroup, dvodb, tess_id, end_stage)) {
             if (!psDBRollback(config->dbh)) {
                 psError(PS_ERR_UNKNOWN, false, "database error");
@@ -918,5 +930,7 @@
                     chipRun->reduction,
                     chipRun->expgroup,
-                    chipRun->dvodb
+                    chipRun->dvodb,
+                    chipRun->tess_id,
+                    chipRun->end_stage
         )) {
             // rollback
Index: /branches/end_stage/ippTools/src/flatcorr.c
===================================================================
--- /branches/end_stage/ippTools/src/flatcorr.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/flatcorr.c	(revision 16049)
@@ -219,4 +219,16 @@
     }
 
+    psString tess_id = psMetadataLookupStr(&status, config->args, "-set_tess_id");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_tess_id");
+        return false;
+    }
+
+    psString end_stage = psMetadataLookupStr(&status, config->args, "-set_end_stage");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -set_end_stage");
+        return false;
+    }
+
     // find the exp_id of all the exposures that we want to queue up.
     psString query = pxDataGet("chiptool_find_rawexp.sql");
@@ -293,5 +305,5 @@
 
         // queue the exp
-        psS64 chip_id = pxchipQueueByExpTag(config, exp_id, workdir, label, reduction, expgroup, dvodb);
+        psS64 chip_id = pxchipQueueByExpTag(config, exp_id, workdir, label, reduction, expgroup, dvodb, tess_id, end_stage);
         if (!chip_id) {
             if (!psDBRollback(config->dbh)) {
Index: /branches/end_stage/ippTools/src/pxcam.c
===================================================================
--- /branches/end_stage/ippTools/src/pxcam.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/pxcam.c	(revision 16049)
@@ -58,9 +58,11 @@
 bool pxcamQueueByChipID(pxConfig *config,
                     psS64 chip_id,
-                    psString workdir,
-                    psString label,
-                    psString recipe,
-                    psString expgroup,
-                    psString dvodb)
+                    char *workdir,
+                    char *label,
+                    char *recipe,
+                    char *expgroup,
+                    char *dvodb,
+                    char *tess_id,
+                    char *end_stage)
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
@@ -88,4 +90,6 @@
                 expgroup ? expgroup : "NULL",
                 dvodb    ? dvodb    : "NULL",
+                tess_id  ? tess_id  : "NULL",
+                end_stage ? end_stage : "NULL",
                 (long long)chip_id
     )) {
Index: /branches/end_stage/ippTools/src/pxcam.h
===================================================================
--- /branches/end_stage/ippTools/src/pxcam.h	(revision 16048)
+++ /branches/end_stage/ippTools/src/pxcam.h	(revision 16049)
@@ -29,9 +29,11 @@
 bool pxcamQueueByChipID(pxConfig *config,
                         psS64 chip_id,
-                        psString workdir,
-                        psString label,
-                        psString recipe,
-                        psString expgroup,
-                        psString dvodb);
+                        char *workdir,
+                        char *label,
+                        char *recipe,
+                        char *expgroup,
+                        char *dvodb,
+                        char *tess_id,
+                        char *end_stage);
 
 #endif // PXCAM_H
Index: /branches/end_stage/ippTools/src/pxchip.c
===================================================================
--- /branches/end_stage/ippTools/src/pxchip.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/pxchip.c	(revision 16049)
@@ -58,9 +58,11 @@
 psS64 pxchipQueueByExpTag(pxConfig *config,
                          psS64 exp_id,
-                         psString workdir,
-                         psString label,
-                         psString reduction,
-                         psString expgroup,
-                         psString dvodb)
+                         char *workdir,
+                         char *label,
+                         char *reduction,
+                         char *expgroup,
+                         char *dvodb,
+                         char *tess_id,
+                         char *end_stage)
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
@@ -76,5 +78,7 @@
             reduction,
             expgroup,
-            dvodb)
+            dvodb,
+            tess_id,
+            end_stage)
     ) {
         psError(PS_ERR_UNKNOWN, false, "database error");
Index: /branches/end_stage/ippTools/src/pxchip.h
===================================================================
--- /branches/end_stage/ippTools/src/pxchip.h	(revision 16048)
+++ /branches/end_stage/ippTools/src/pxchip.h	(revision 16049)
@@ -29,9 +29,11 @@
 psS64 pxchipQueueByExpTag(pxConfig *config,
                          psS64 exp_id,
-                         psString workdir,
-                         psString label,
-                         psString reduction,
-                         psString expgroup,
-                         psString dvodb);
+                         char *workdir,
+                         char *label,
+                         char *reduction,
+                         char *expgroup,
+                         char *dvodb,
+                         char *tess_id,
+                         char *end_stage);
 
 #endif // PXCHIP_H
Index: /branches/end_stage/ippTools/src/regtool.c
===================================================================
--- /branches/end_stage/ippTools/src/regtool.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/regtool.c	(revision 16049)
@@ -838,4 +838,22 @@
     }
 
+    psString dvodb = psMetadataLookupStr(&status, config->args, "-dvodb");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -dvodb");
+        return false;
+    }
+
+    psString tess_id = psMetadataLookupStr(&status, config->args, "-tess_id");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -tess_id");
+        return false;
+    }
+
+    psString end_stage = psMetadataLookupStr(&status, config->args, "-end_stage");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -end_stage");
+        return false;
+    }
+
     psString query = pxDataGet("regtool_pendingexp.sql");
     if (!query) {
@@ -847,11 +865,4 @@
         // build a query to search by exp_id
         psMetadata *where = psMetadataAlloc();
-        bool status = false;
-        psString exp_id = psMetadataLookupStr(&status, config->args, "-exp_id");
-        if (!status) {
-            psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -exp_id");
-            psFree(query);
-            return false;
-        }
         if (exp_id) {
             if (!psMetadataAddStr(where, PS_LIST_TAIL, "exp_id", 0, "==", exp_id)) {
@@ -975,5 +986,7 @@
                     rawExp->reduction,
                     NULL, // expgroup
-                    NULL  // dvodb
+                    dvodb,
+                    tess_id,
+                    end_stage
         )) {
             // rollback
Index: /branches/end_stage/ippTools/src/regtoolConfig.c
===================================================================
--- /branches/end_stage/ippTools/src/regtoolConfig.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/regtoolConfig.c	(revision 16049)
@@ -234,4 +234,10 @@
     psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-workdir",  0,
         "define the \"default\" workdir for this exposure", NULL);
+    psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-dvodb",  0,
+        "define the dvodb for the next processing step", NULL);
+    psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-tess_id",  0,
+        "define the tess_id for the next processing step", NULL);
+    psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-end_stage",  0,
+        "define the end goal processing step", NULL);
     psMetadataAddStr(addprocessedexpArgs, PS_LIST_TAIL, "-reduction",  0,
         "define the \"default\" reduction class for this exposure", NULL);
Index: /branches/end_stage/ippTools/src/warptool.c
===================================================================
--- /branches/end_stage/ippTools/src/warptool.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/warptool.c	(revision 16049)
@@ -134,4 +134,22 @@
     }
 
+    psString dvodb = psMetadataLookupStr(&status, config->args, "-dvodb");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -dvodb");
+        return false;
+    }
+
+    psString tess_id = psMetadataLookupStr(&status, config->args, "-tess_id");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -tess_id");
+        return false;
+    }
+
+    psString end_stage = psMetadataLookupStr(&status, config->args, "-end_stage");
+    if (!status) {
+        psError(PS_ERR_UNKNOWN, false, "failed to lookup value for -end_stage");
+        return false;
+    }
+
     psTime *registered = NULL;
     {
@@ -154,5 +172,8 @@
             "reg",      // state
             workdir,
-            NULL,       // dvodb
+            "dirty",    // workdir_state
+            dvodb,
+            tess_id,
+            end_stage,
             registered
     );
@@ -1071,5 +1092,5 @@
         "       USING(warp_id)\n"
         "   LEFT JOIN warpSkyfile\n"
-        "       USING(warp_id, skycell_id, tess_id)\n"
+        "       USING(warp_id, skycell_id)\n"
         "   WHERE\n"
         "       warpRun.state = 'run'\n"
Index: /branches/end_stage/ippTools/src/warptoolConfig.c
===================================================================
--- /branches/end_stage/ippTools/src/warptoolConfig.c	(revision 16048)
+++ /branches/end_stage/ippTools/src/warptoolConfig.c	(revision 16049)
@@ -55,4 +55,10 @@
     psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-workdir", 0,
             "define workdir (required)", NULL);
+    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-dvodb", 0,
+            "define dvodb", NULL);
+    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-tess_id", 0,
+            "define tess_id", NULL);
+    psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-end_stage", 0,
+            "define end stage", NULL);
     psMetadataAddStr(definerunArgs, PS_LIST_TAIL, "-registered",  0,
             "time detrend run was registered", now);
