Index: /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_minidvodbprocessed.sql
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_minidvodbprocessed.sql	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_minidvodbprocessed.sql	(revision 28058)
@@ -1,9 +1,8 @@
 SELECT
     minidvodbProcessed.*,
-    addRun.minidvodb_group
+    minidvodbRun.minidvodb_name	
+    minidvodbRun.minidvodb_group
 FROM minidvodbProcessed
 JOIN minidvodbRun
-    USING(minidvodb_name)
-JOIN addRun
-    USING(minidvodb_name)
+    USING(minidvodb_id)
 
Index: /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_pendingmergeprocess.sql
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_pendingmergeprocess.sql	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/share/addtool_find_pendingmergeprocess.sql	(revision 28058)
@@ -2,4 +2,4 @@
 FROM minidvodbRun 
 LEFT JOIN minidvodbProcessed
-USING(minidvodb_name)
-WHERE (minidvodbRun.state = 'to_be_merged' AND minidvodbProcessed.minidvodb_name IS NULL)
+USING(minidvodb_id)
+WHERE (minidvodbRun.state = 'to_be_merged' AND minidvodbProcessed.minidvodb_id IS NULL)
Index: /branches/haf_branches/ipp.20100512/ippTools/share/addtool_queue_cam_id.sql
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/share/addtool_queue_cam_id.sql	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/share/addtool_queue_cam_id.sql	(revision 28058)
@@ -11,5 +11,8 @@
         '%s',           -- dvodb 
         '%s',           -- note
-	%d		-- image_only
+	%d,		-- image_only
+	%d,		-- minidvodb
+	'%s',           -- minidvodb_group 
+ 	'%s'	        -- minidvodb_name
     FROM camRun
     WHERE
Index: /branches/haf_branches/ipp.20100512/ippTools/share/addtool_reset_faulted_minidvodbruns.sql
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/share/addtool_reset_faulted_minidvodbruns.sql	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/share/addtool_reset_faulted_minidvodbruns.sql	(revision 28058)
@@ -2,5 +2,5 @@
 SET minidvodbRun.state = 'to_be_merged'
 WHERE
-    minidvodbProcessed.minidvodb_name = minidvodbRun.minidvodb_name
-    AND addRun.minidvodb_name = minidvodbRun.minidvodb_name
+    minidvodbProcessed.minidvodb_id = minidvodbRun.minidvodb_id
+    AND addRun.minidvodb_id = minidvodbRun.minidvodb_id
     AND minidvodbProcessed.fault != 0
Index: /branches/haf_branches/ipp.20100512/ippTools/share/addtool_revertminidvodbprocessed.sql
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/share/addtool_revertminidvodbprocessed.sql	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/share/addtool_revertminidvodbprocessed.sql	(revision 28058)
@@ -2,5 +2,5 @@
 USING minidvodbProcessed, minidvodbRun, addRun
 WHERE
-    minidvodbProcessed.minidvodb_name = minidvodbRun.minidvodb_name
+    minidvodbProcessed.minidvodb_id = minidvodbRun.minidvodb_id
     AND addRun.minidvodb_name = minidvodbRun.minidvodb_name
     AND minidvodbProcessed.fault != 0
Index: /branches/haf_branches/ipp.20100512/ippTools/src/addtool.c
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/src/addtool.c	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/src/addtool.c	(revision 28058)
@@ -43,4 +43,5 @@
 static bool updateminidvodbrunMode(pxConfig *config);
 static bool listminidvodbrunMode(pxConfig *config);
+static bool flipminidvodbrunMode(pxConfig *config);
 static bool addminidvodbprocessedMode(pxConfig *config);
 static bool listminidvodbprocessedMode(pxConfig *config);
@@ -81,5 +82,6 @@
 	MODECASE(ADDTOOL_MODE_UPDATEMINIDVODBRUN,   updateminidvodbrunMode);
  	MODECASE(ADDTOOL_MODE_LISTMINIDVODBRUN,     listminidvodbrunMode);
-  	MODECASE(ADDTOOL_MODE_ADDMINIDVODBPROCESSED,addminidvodbprocessedMode);
+	MODECASE(ADDTOOL_MODE_FLIPMINIDVODBRUN,     flipminidvodbrunMode);
+	MODECASE(ADDTOOL_MODE_ADDMINIDVODBPROCESSED,addminidvodbprocessedMode);
    	MODECASE(ADDTOOL_MODE_LISTMINIDVODBPROCESSED,listminidvodbprocessedMode);
     	MODECASE(ADDTOOL_MODE_REVERTMINIDVODBPROCESSED,revertminidvodbprocessedMode);
@@ -118,4 +120,5 @@
     pxAddLabelSearchArgs (config, where, "-data_group","camRun.data_group", "=="); // define using camRun label
     PXOPT_COPY_STR(config->args, where,  "-reduction", "camRun.reduction", "==");
+    
 
     if (!psListLength(where->list)) {
@@ -131,8 +134,13 @@
     PXOPT_LOOKUP_STR(reduction,   config->args, "-set_reduction", false, false);
     PXOPT_LOOKUP_STR(note,        config->args, "-set_note", false, false);
+    PXOPT_LOOKUP_STR(minidvodb_name,        config->args, "-set_minidvodb_name", false, false);
+    PXOPT_LOOKUP_STR(minidvodb_group,        config->args, "-set_minidvodb_group", false, false);
     PXOPT_LOOKUP_BOOL(image_only, config->args, "-image_only", false);
+    PXOPT_LOOKUP_BOOL(minidvodb,  config->args, "-set_minidvodb", false);
     PXOPT_LOOKUP_BOOL(destreaked, config->args, "-destreaked", false);
     PXOPT_LOOKUP_BOOL(pretend,    config->args, "-pretend", false);
     PXOPT_LOOKUP_BOOL(simple,     config->args, "-simple", false);
+
+    
 
     // find the cam_id of all the exposures that we want to queue up.
@@ -262,8 +270,11 @@
                                dvodb       ? dvodb     : row->dvodb,
                                note        ? note      : NULL,
-                               image_only
+                               image_only,
+			       minidvodb,
+			       minidvodb_group,
+			       minidvodb_name 
         )) {
             if (!psDBRollback(config->dbh)) {
-                psError(PS_ERR_UNKNOWN, false, "database error");
+                psError(PS_ERR_UNKNOWN, false, "database error sfg");
             }
             psError(PS_ERR_UNKNOWN, false,
@@ -762,7 +773,7 @@
   
 
-  PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-set_minidvodb_name", true, false);
+  PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-set_minidvodb_name", false, false);
   PXOPT_LOOKUP_STR(minidvodb_group, config->args, "-set_minidvodb_group", true, false);
-  PXOPT_LOOKUP_STR(minidvodb_path, config->args, "-set_minidvodb_path", true, false);
+  PXOPT_LOOKUP_STR(minidvodb_path, config->args, "-set_minidvodb_path", false, false);
   PXOPT_LOOKUP_STR(mergedvodb_path, config->args, "-set_mergedvodb_path", true, false);
   PXOPT_LOOKUP_STR(state, config->args, "-set_state", false, false);
@@ -786,8 +797,8 @@
 
     psString query =  NULL;
-    psStringAppend(&query, "INSERT INTO minidvodbRun SET minidvodb_name = '%s' ,",minidvodb_name);
-    psStringAppend(&query, "minidvodb_path = '%s' ,",minidvodb_path);
+    psStringAppend(&query, "INSERT INTO minidvodbRun SET minidvodb_path = '%s' ,",minidvodb_path);
+    if (minidvodb_name) {psStringAppend(&query, "minidvodb_name = '%s' ,",minidvodb_name);}
     psStringAppend(&query, "mergedvodb_path = '%s',",mergedvodb_path);
-    psStringAppend(&query, "minidvodb_group = '%s'",minidvodb_group);
+    if (minidvodb_path) {psStringAppend(&query, "minidvodb_group = '%s'",minidvodb_group);}
     if (state) {
       psStringAppend(&query, ",state = '%s';", state);
@@ -832,10 +843,11 @@
 
     psMetadata *where = psMetadataAlloc();
-    
-    PXOPT_COPY_STR(config->args, where, "-minidvodb_name",     "minidvodb_name", "LIKE");
+    PXOPT_COPY_S64(config->args, where, "-minidvodb_id",     "minidvodb_id", "==");
+    PXOPT_COPY_STR(config->args, where, "-minidvodb_name",     "minidvodb_name", "==");
     PXOPT_COPY_STR(config->args, where, "-state",     "state", "==");
     PXOPT_COPY_STR(config->args, where, "-minidvodb_path", "minidvodb_path", "==");
     PXOPT_COPY_STR(config->args, where, "-mergedvodb_path", "mergedvodb_path", "==");
-    PXOPT_COPY_STR(config->args, where, "-minidvodb_group",     "minidvodb_group", "group");
+    PXOPT_COPY_STR(config->args, where, "-minidvodb_group",     "minidvodb_group", "==");
+    
     PXOPT_LOOKUP_STR(minidvodb_name,  config->args, "-set_minidvodb_name", false, false);
     PXOPT_LOOKUP_STR(minidvodb_path,  config->args, "-set_minidvodb_path", false, false);
@@ -843,6 +855,5 @@
     PXOPT_LOOKUP_STR(mergedvodb_path,  config->args, "-set_mergedvodb_path", false, false);
     PXOPT_LOOKUP_STR(minidvodb_group,  config->args, "-set_minidvodb_group", false, false);
-
-
+    
 
     if (!psListLength(where->list)) {
@@ -893,4 +904,7 @@
  }
 
+
+
+
     // pxUpdateRun gets parameters from config->args and runs the update query
     
@@ -914,4 +928,108 @@
 
 }
+
+static bool flipminidvodbrunMode(pxConfig *config) {
+  PS_ASSERT_PTR_NON_NULL(config, false);
+
+psMetadata *where = psMetadataAlloc();
+PXOPT_LOOKUP_STR(minidvodb_group,  config->args, "-minidvodb_group",true, false);
+    
+PXOPT_COPY_STR(config->args, where, "-minidvodb_group",     "minidvodb_group", "==");
+    
+//this flips the new - > active
+// and the active - > waiting in one action
+
+ 
+ psString firstquery = psStringCopy("SELECT * from  minidvodbRun where state = 'new' ");
+
+ psString firstwhereClause = psDBGenerateWhereConditionSQL(where, NULL);
+ psStringAppend(&firstquery, " AND %s", firstwhereClause);
+
+
+
+ if (!p_psDBRunQuery(config->dbh, firstquery)) {
+      psError(PS_ERR_UNKNOWN, false, "database error ");
+        psFree(firstquery);
+        return false;
+    }
+ psFree(firstquery);
+
+ //we don't care what the stuff is that is found, just that there is stuff. This is a check to see that there is something in the 'new' state, before flipping (so that if there is nothing in new, it won't flip the active to waiting.  the flipminidvo is just to make it easy to flip from new -> active. 
+
+    psArray *output = p_psDBFetchResult(config->dbh);
+    if (!output) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        return false;
+    }
+    if (!psArrayLength(output)) {
+        psTrace("addtool", PS_LOG_INFO, "no rows found");
+        psFree(output);
+        return true;
+    }
+
+
+
+
+
+
+    // psString query = psStringCopy("UPDATE minidvodbRun SET state = case when state = 'new' then 'active' else 'waiting' end WHERE state in ('new', 'active')");
+psString query = psStringCopy("UPDATE minidvodbRun SET state = 'waiting' WHERE state = 'active' ");
+ // pxUpdateRun gets parameters from config->args and runs the update query
+   psString whereClause = psDBGenerateWhereConditionSQL(where, NULL);
+    psStringAppend(&query, " AND %s", whereClause);
+
+
+
+
+
+
+ if (!p_psDBRunQuery(config->dbh, query)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query);
+        return false;
+    }
+
+if (!psDBTransaction(config->dbh)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(output);
+        return false;
+    }
+
+
+
+
+
+psString query2 = psStringCopy("UPDATE minidvodbRun SET state = 'active' WHERE state = 'new' ");
+
+
+    psStringAppend(&query2, " AND minidvodb_group = '%s' limit 1;", minidvodb_group);
+   
+
+
+ if (!p_psDBRunQuery(config->dbh, query2)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(query2);
+        return false;
+    }
+
+if (!psDBTransaction(config->dbh)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        psFree(output);
+        return false;
+    }
+
+
+
+if (!psDBCommit(config->dbh)) {
+        psError(PS_ERR_UNKNOWN, false, "database error");
+        return false;
+    }
+ psFree(query2);
+    psFree(where);
+
+    return true;
+
+}
+
 
 static bool listminidvodbrunMode(pxConfig *config) {
@@ -926,8 +1044,10 @@
       PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbRun.minidvodb_name", "LIKE");
       PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbRun.minidvodb_group", "==");
+      PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbRun.minidvodb_id", "==");
       //pxAddLabelSearchArgs (config, where, "-minidvodb_group", "addRun.minidvodb_group", "==");
       // }
     PXOPT_COPY_STR(config->args, where, "-state", "minidvodbRun.state", "==");
     PXOPT_LOOKUP_U64(limit,      config->args, "-limit", false, false);
+    
   PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
   
@@ -1019,5 +1139,5 @@
 
     // required
- PXOPT_LOOKUP_STR(minidvodb_name, config->args, "-minidvodb_name", true, false);
+ PXOPT_LOOKUP_U64(minidvodb_id, config->args, "-minidvodb_id", true, false);
 
     // optional
@@ -1031,5 +1151,5 @@
     //generate restrictions
 psMetadata *where = psMetadataAlloc();
-PXOPT_COPY_STR(config->args, where, "-minidvodb_name",   "minidvodbRun.minidvodb_name",   "==");
+PXOPT_COPY_S64(config->args, where, "-minidvodb_id",   "minidvodbRun.minidvodb_id",   "==");
 
     psString query = pxDataGet("addtool_find_pendingmergeprocess.sql");
@@ -1072,5 +1192,5 @@
 	psFree(output);
 	minidvodbProcessedRow *row = minidvodbProcessedRowAlloc(
-	       pendingRow->minidvodb_name,
+	       pendingRow->minidvodb_id,
 	       merge_order,
 	       dtime_resort,
@@ -1133,6 +1253,7 @@
 static bool listminidvodbprocessedMode(pxConfig *config) {
   psMetadata *where = psMetadataAlloc();
+  PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbProcessed.minidvodb_id", "==");
   PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbProcessed.minidvodb_name", "==");
-  PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "addRun.minidvodb_group", "==");
+  PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "minidvodbProcessed.minidvodb_group", "==");
   PXOPT_LOOKUP_U64(limit, config->args, "-limit", false, false);
   PXOPT_LOOKUP_BOOL(simple, config->args, "-simple", false);
@@ -1175,9 +1296,9 @@
     psFree(where);
     
-    //grou by minidvodb_name to not show all the addRuns
-    psStringAppend(&query, " GROUP BY minidvodb_name");
+    
+    //psStringAppend(&query, " GROUP BY minidvodb_name");
 
     // order by epoch
-    psStringAppend(&query, " ORDER BY epoch");
+    psStringAppend(&query, " ORDER BY minidvodb_id");
 
     // treat limit == 0 as "no limit"
@@ -1189,5 +1310,5 @@
 
     if (!p_psDBRunQuery(config->dbh, query)) {
-      psError(PS_ERR_UNKNOWN, false, "database error %s ", query);
+      psError(PS_ERR_UNKNOWN, false, "database error ");
         psFree(query);
         return false;
@@ -1221,5 +1342,5 @@
   psMetadata *where = psMetadataAlloc();
  PS_ASSERT_PTR_NON_NULL(config, false);
- PXOPT_COPY_STR(config->args, where, "-minidvodb_name", "minidvodbProcessed.minidvodb_name", "==");
+ PXOPT_COPY_S64(config->args, where, "-minidvodb_id", "minidvodbProcessed.minidvodb_id", "==");
  PXOPT_COPY_STR(config->args, where, "-minidvodb_group", "addRun.minidvodb_group", "==");
  if (!psListLength(where->list) && !psMetadataLookupBool(NULL, config->args, "-all")) {
@@ -1310,7 +1431,8 @@
 
     psMetadata *where = psMetadataAlloc();
-    PXOPT_COPY_STR(config->args, where, "-minidvodb_name",     "minidvodb_name", "==");
-    PXOPT_LOOKUP_STR(minidvodb_name,  config->args, "-minidvodb_name", true, false);
-
+    PXOPT_COPY_S64(config->args, where, "-minidvodb_id",     "minidvodbProcessed.minidvodb_id", "==");
+    PXOPT_LOOKUP_U64(minidvodb_id,  config->args, "-minidvodb_id", true, false);
+    PXOPT_COPY_STR(config->args, where, "-minidvodb_name",     "minidvodbRun.minidvodb_name", "==");
+    
     PXOPT_LOOKUP_U64(merge_order,  config->args, "-set_merge_order", false, false);
     PXOPT_LOOKUP_S16(fault,  config->args, "-set_fault", false, false);
@@ -1327,5 +1449,5 @@
     }
 
-    psString query = psStringCopy("UPDATE minidvodbProcessed SET ");
+    psString query = psStringCopy("UPDATE minidvodbProcessed JOIN minidvodbRun USING (minidvodb_id) SET ");
     int cnt = 0;
     psString comma = ",";
Index: /branches/haf_branches/ipp.20100512/ippTools/src/addtool.h
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/src/addtool.h	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/src/addtool.h	(revision 28058)
@@ -43,4 +43,5 @@
     ADDTOOL_MODE_UPDATEMINIDVODBRUN,
     ADDTOOL_MODE_LISTMINIDVODBRUN,
+    ADDTOOL_MODE_FLIPMINIDVODBRUN,
     ADDTOOL_MODE_ADDMINIDVODBPROCESSED,
     ADDTOOL_MODE_LISTMINIDVODBPROCESSED,
Index: /branches/haf_branches/ipp.20100512/ippTools/src/addtoolConfig.c
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/src/addtoolConfig.c	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/src/addtoolConfig.c	(revision 28058)
@@ -63,5 +63,7 @@
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-pretend",           0, "do not actually modify the database", false);
     psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-simple",            0, "use the simple output format", false);
-
+    psMetadataAddBool(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb",            0, "use minidvodb", false);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb_group", 0,   "define minidvodb_group", NULL);
+    psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_minidvodb_name", 0,   "define minidvodb_bname", NULL);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_data_group", 0,   "define new data_group", NULL);
     psMetadataAddStr(definebyqueryArgs, PS_LIST_TAIL, "-set_dist_group", 0,   "define new dist_group", NULL);
@@ -146,11 +148,12 @@
     psMetadata *addminidvodbrunArgs = psMetadataAlloc();
     psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_name",        0, "define minidvodb_name", NULL);
-    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group",        0, "define minidvodb_name", NULL);
-    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path",        0, "define path for minidvodb", NULL);
-    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path",        0, "define path for the merged dvodb", NULL);
+    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_group",        0, "define minidvodb_group (required)", NULL);
+    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_minidvodb_path",        0, "define path for minidvodb (required)", NULL);
+    psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_mergedvodb_path",        0, "define path for the merged dvodb (required)", NULL);
     psMetadataAddStr(addminidvodbrunArgs, PS_LIST_TAIL, "-set_state",        0, "define state", NULL);
 
     // -updateminidvodbruns
     psMetadata *updateminidvodbrunArgs = psMetadataAlloc();
+psMetadataAddU64(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id ", 0);
 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",        0, "search by minidvodb_name (LIKE)", NULL);
 psMetadataAddStr(updateminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name (LIKE)", NULL);
@@ -166,6 +169,7 @@
     // -listminidvodbrunArgs
     psMetadata *listminidvodbrunArgs = psMetadataAlloc();
+psMetadataAddU64(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id", 0);
     psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name (LIKE)", NULL);
-    psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",     0,    "search by addRun.minidvodb_group", NULL);
+    psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",     0,    "search by minidvodb.minidvodb_group", NULL);
     psMetadataAddStr(listminidvodbrunArgs, PS_LIST_TAIL, "-state",        0, "search by state", NULL);
     psMetadataAddU64(listminidvodbrunArgs, PS_LIST_TAIL, "-limit",        0, "limit to N items", 0);
@@ -173,6 +177,9 @@
     //psMetadataAddBool(listminidvodbrunArgs, PS_LIST_TAIL, "-finished_addrun",        0, "limit to minidvodbs with completed addRuns (none in new state)", false);
 
+psMetadata *flipminidvodbrunArgs = psMetadataAlloc();
+ psMetadataAddStr(flipminidvodbrunArgs, PS_LIST_TAIL, "-minidvodb_group",     0,    "for the supplied minidvodb_group (required): flip the current 'new' to 'active', the current 'active' to 'waiting'", NULL);
+
     psMetadata *addminidvodbprocessedArgs = psMetadataAlloc();
-    psMetadataAddStr(addminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_name", 0,    "define minidvodb_name (required)", NULL);
+    psMetadataAddU64(addminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id", 0,    "define minidvodb_id (required)", 0);
     psMetadataAddU64(addminidvodbprocessedArgs, PS_LIST_TAIL, "-merge_order",    0,    "define merge order", 0);
     psMetadataAddF32(addminidvodbprocessedArgs, PS_LIST_TAIL, "-dtime_relphot",  0,    "define elapsed time for relphot (seconds)", NAN);
@@ -184,6 +191,7 @@
 
     psMetadata *listminidvodbprocessedArgs = psMetadataAlloc();
+    psMetadataAddU64(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id", 0);
     psMetadataAddStr(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name", NULL);
-    psMetadataAddStr(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group",        0, "search by addRun.minidvodb_group", NULL);
+    psMetadataAddStr(listminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group",        0, "search by minidvodb.minidvodb_group", NULL);
     psMetadataAddU64(listminidvodbprocessedArgs, PS_LIST_TAIL, "-limit",        0, "limit to N items", 0);
     psMetadataAddBool(listminidvodbprocessedArgs, PS_LIST_TAIL, "-simple",        0, "simple output", false);
@@ -191,8 +199,9 @@
 
     psMetadata *revertminidvodbprocessedArgs = psMetadataAlloc();
-    psMetadataAddStr(revertminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name", NULL);
+    psMetadataAddU64(revertminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id", 0);
     psMetadataAddStr(revertminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_group",        0, "search by addRun.minidvodb_group", NULL);
 
     psMetadata *updateminidvodbprocessedArgs = psMetadataAlloc();
+    psMetadataAddU64(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_id",        0, "search by minidvodb_id", 0);
     psMetadataAddStr(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-minidvodb_name",        0, "search by minidvodb_name", NULL);
     psMetadataAddS16(updateminidvodbprocessedArgs, PS_LIST_TAIL, "-set_fault",  0,            "set fault code", 0);
@@ -217,4 +226,5 @@
     PXOPT_ADD_MODE("-updateminidvodbrun",   "change minidvodb properties",          ADDTOOL_MODE_UPDATEMINIDVODBRUN,     updateminidvodbrunArgs);
     PXOPT_ADD_MODE("-listminidvodbrun",     "list minidvodbs",                      ADDTOOL_MODE_LISTMINIDVODBRUN,       listminidvodbrunArgs);
+PXOPT_ADD_MODE("-flipminidvodbrun",     "flip minidvodbs",                      ADDTOOL_MODE_FLIPMINIDVODBRUN,       flipminidvodbrunArgs);
     PXOPT_ADD_MODE("-addminidvodbprocessed","add a processed minidvodb",            ADDTOOL_MODE_ADDMINIDVODBPROCESSED,  addminidvodbprocessedArgs);
     PXOPT_ADD_MODE("-listminidvodbprocessed","list processed minidvodbs",           ADDTOOL_MODE_LISTMINIDVODBPROCESSED, listminidvodbprocessedArgs);
Index: /branches/haf_branches/ipp.20100512/ippTools/src/flatcorr.c
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/src/flatcorr.c	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/src/flatcorr.c	(revision 28058)
@@ -671,5 +671,8 @@
                 row->dvodb,
                 NULL,       // note is not propagated
-                0)) {
+                0,
+		0,  //The minidvodb stuff is off
+		NULL,
+		NULL)) {
             if (!psDBRollback(config->dbh)) {
                 psError(PS_ERR_UNKNOWN, false, "database error");
Index: /branches/haf_branches/ipp.20100512/ippTools/src/pxadd.c
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/src/pxadd.c	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/src/pxadd.c	(revision 28058)
@@ -130,5 +130,8 @@
                        char *dvodb,
                        char *note,
-                       bool image_only)
+                       bool image_only,
+		       bool minidvodb,
+		       char *minidvodb_group,
+		       char *minidvodb_name)
 {
     PS_ASSERT_PTR_NON_NULL(config, false);
@@ -158,7 +161,10 @@
                          note     ? note     : "NULL",
                          image_only,
+			 minidvodb,
+			 minidvodb_group,
+			 minidvodb_name,
                          (long long) cam_id
     )) {
-        psError(PS_ERR_UNKNOWN, false, "database error");
+      psError(PS_ERR_UNKNOWN, false, "database error %s", query);
         return false;
     }
Index: /branches/haf_branches/ipp.20100512/ippTools/src/pxadd.h
===================================================================
--- /branches/haf_branches/ipp.20100512/ippTools/src/pxadd.h	(revision 28057)
+++ /branches/haf_branches/ipp.20100512/ippTools/src/pxadd.h	(revision 28058)
@@ -38,5 +38,8 @@
 		       char *dvodb,
 		       char *note,
-		       bool image_only);
+		       bool image_only,
+		       bool minidvodb,
+		       char *minidvodb_group,
+		       char *minidvodb_name);
 
 #endif // PXADD_H
