Index: trunk/ippTools/share/Makefile.am
===================================================================
--- trunk/ippTools/share/Makefile.am	(revision 34264)
+++ trunk/ippTools/share/Makefile.am	(revision 34265)
@@ -8,4 +8,6 @@
 	addtool_find_cam_id_dvo.sql \
 	addtool_find_cam_id.sql \
+	addtool_find_skycal_id_dvo.sql \
+	addtool_find_skycal_id.sql \
 	addtool_find_sky_id_multi_dvo.sql \
 	addtool_find_sky_id_multi.sql \
@@ -14,8 +16,10 @@
 	addtool_find_pendingexp.sql \
 	addtool_find_pendingexp_cam.sql \
+	addtool_find_pendingexp_skycal.sql \
 	addtool_find_pendingexp_stack.sql \
 	addtool_find_pendingexp_staticsky_multi.sql \
 	addtool_find_pendingmergeprocess.sql \
 	addtool_find_processedexp_cam.sql \
+	addtool_find_processedexp_skycal.sql \
 	addtool_find_processedexp_stack.sql \
 	addtool_find_processedexp_staticsky_multi.sql \
@@ -27,7 +31,9 @@
 	addtool_queue_stack_id.sql \
 	addtool_queue_sky_id_multi.sql \
+	addtool_queue_skycal_id.sql \
 	addtool_queue_minidvodbrun.sql \
 	addtool_revertminidvodbprocessed.sql \
 	addtool_revertprocessedexp_cam.sql \
+	addtool_revertprocessedexp_skycal.sql \
 	addtool_revertprocessedexp_stack.sql \
 	addtool_revertprocessedexp_staticsky.sql \
Index: trunk/ippTools/share/addtool_find_pendingexp_skycal.sql
===================================================================
--- trunk/ippTools/share/addtool_find_pendingexp_skycal.sql	(revision 34265)
+++ trunk/ippTools/share/addtool_find_pendingexp_skycal.sql	(revision 34265)
@@ -0,0 +1,30 @@
+SELECT
+    addRun.*,
+    skycalResult.path_base as stageroot,
+    rawExp.camera,
+    rawExp.telescope
+FROM addRun
+JOIN skycalRun
+    ON skycal_id = stage_id
+JOIN skycalResult
+    USING (skycal_id)
+JOIN stackRun
+    using(stack_id)
+JOIN stackInputSkyfile 
+     USING(stack_id)
+JOIN warpRun using(warp_id)
+JOIN fakeRun using(fake_id)
+JOIN camRun using(cam_id)
+JOIN chipRun using(chip_id)
+JOIN rawExp using (exp_id)
+LEFT JOIN addProcessedExp using (add_id)
+LEFT JOIN addMask
+    ON addRun.label = addMask.label
+WHERE
+    skycalRun.state = 'full'
+    AND stage = 'skycal'
+    AND ((addRun.state = 'new' AND addProcessedExp.add_id IS NULL) OR addRun.state = 'update')
+    AND addRun.dvodb IS NOT NULL
+    AND addRun.workdir IS NOT NULL
+    AND addMask.label IS NULL
+
Index: trunk/ippTools/share/addtool_find_processedexp_skycal.sql
===================================================================
--- trunk/ippTools/share/addtool_find_processedexp_skycal.sql	(revision 34265)
+++ trunk/ippTools/share/addtool_find_processedexp_skycal.sql	(revision 34265)
@@ -0,0 +1,6 @@
+SELECT
+    addProcessedExp.*,
+    addRun.workdir
+FROM addProcessedExp
+JOIN addRun
+    USING(add_id)
Index: trunk/ippTools/share/addtool_find_skycal_id.sql
===================================================================
--- trunk/ippTools/share/addtool_find_skycal_id.sql	(revision 34265)
+++ trunk/ippTools/share/addtool_find_skycal_id.sql	(revision 34265)
@@ -0,0 +1,22 @@
+SELECT
+     skycalRun.*
+FROM 
+     skycalRun
+JOIN skycalResult using (skycal_id)
+JOIN staticskyInput using (sky_id, stack_id)
+JOIN staticskyRun using (sky_id)
+
+LEFT JOIN (SELECT skycal_id       AS added_skycal_id,
+                  addRun.dvodb AS previous_dvodb
+           FROM addRun
+JOIN skycalRun on skycal_id = stage_id
+          ) as foo
+     ON skycal_id = added_skycal_id 
+     AND stage = 'skycal'
+     -- hook for qualifying the join on the previous_dvodb
+     AND %s
+WHERE
+    skycalRun.state = 'full'
+    AND skycalResult.quality = 0
+    AND added_skycal_id IS NULL
+    -- addtool adds checks on exposure being added to the dvodb previously
Index: trunk/ippTools/share/addtool_find_skycal_id_dvo.sql
===================================================================
--- trunk/ippTools/share/addtool_find_skycal_id_dvo.sql	(revision 34265)
+++ trunk/ippTools/share/addtool_find_skycal_id_dvo.sql	(revision 34265)
@@ -0,0 +1,12 @@
+SELECT skycalRun.* FROM skycalRun
+JOIN skycalResult USING (skycal_id)
+JOIN staticskyInput USING (sky_id,stack_id)
+JOIN stackRun USING(stack_id)
+
+WHERE skycalRun.state = 'full' and skycalResult.quality = 0
+    AND stack_id NOT IN (SELECT stack_id
+       FROM addRun
+       JOIN skycalResult on skycalResult.skycal_id = addRun.stage_id
+       JOIN skycalRun USING(skycal_id)
+       WHERE addRun.stage = 'skycal' AND %s
+      )
Index: trunk/ippTools/share/addtool_queue_skycal_id.sql
===================================================================
--- trunk/ippTools/share/addtool_queue_skycal_id.sql	(revision 34265)
+++ trunk/ippTools/share/addtool_queue_skycal_id.sql	(revision 34265)
@@ -0,0 +1,22 @@
+INSERT INTO addRun
+    SELECT
+        0,              -- add_id
+        'skycal',		-- stage
+        skycal_id,         -- stage_id
+	%d,		-- stage_extra1
+        '%s',           -- state
+        '%s',           -- workdir
+	'%s',           -- workdir_state
+        '%s',           -- reduction
+        '%s',           -- label
+        '%s',           -- data_group
+        '%s',           -- dvodb 
+        '%s',           -- note
+	%d,		-- image_only
+	%d,		-- minidvodb
+	'%s',           -- minidvodb_group 
+ 	'%s'	        -- minidvodb_name
+    FROM skycalRun
+    WHERE
+        skycalRun.state = 'full'
+        AND skycalRun.skycal_id = %lld
Index: trunk/ippTools/share/addtool_revertprocessedexp_skycal.sql
===================================================================
--- trunk/ippTools/share/addtool_revertprocessedexp_skycal.sql	(revision 34265)
+++ trunk/ippTools/share/addtool_revertprocessedexp_skycal.sql	(revision 34265)
@@ -0,0 +1,7 @@
+DELETE FROM addProcessedExp
+USING addProcessedExp, addRun
+WHERE
+    addRun.add_id = addProcessedExp.add_id
+    AND addProcessedExp.fault != 0
+    AND addRun.state = 'new'
+    AND addRun.stage = 'skycal'
