| Key | Value |
|---|---|
| Table | DS03 Cost |
| Severity | MAJOR |
| Unique ID | 9030066 |
| Title | PP or SLPP Missing Estimates |
| Summary | Are estimates missing on this PP or SLPP? |
| Error message | PP or SLPP without ETCi (Dollars, Hours, or FTEs). |
This DIQ check flags PP or SLPP WBS elements that have no Estimate to Complete (ETCi) recorded in DS03_Cost.
A row fails when all three ETC fields are zero:
ETCi_dollars = 0ETCi_FTEs = 0ETCi_hours = 0…and the cost row is associated to a WBS element in DS01_WBS where type IN ('PP','SLPP'), based on how the row is populated:
WBS_ID_WP is blank, it treats WBS_ID_CA as the key and checks whether WBS_ID_CA is a PP/SLPP.WBS_ID_WP is not blank, it checks whether WBS_ID_WP is a PP/SLPP.Common reasons you’ll see this:
WBS_ID_CA vs WBS_ID_WP depending on the source/load pattern).PPs/SLPPs are planning-level or summary-level elements. If they exist in the cost table, having zero ETC across dollars/hours/FTEs can mean:
This check is MAJOR because there are valid scenarios where estimates live at a different level (e.g., detail WPs only), but it’s still important to surface so analysts don’t assume “zero ETC” means “nothing remaining.”
CREATE FUNCTION [dbo].[fnDIQ_DS03_Cost_IsETCMissingOnPPorSLPP] (
@upload_id int = 0
)
RETURNS TABLE
AS RETURN
(
/*
This DIQ looks for PPs or SLPPs without Estimates (ETC).
*/
with ToTest (WBSID) AS (
SELECT WBS_ID
FROM DS01_WBS
WHERE upload_ID = @upload_ID AND type in ('PP','SLPP')
)
SELECT
*
FROM
DS03_Cost
WHERE
upload_ID = @upload_ID
AND ETCi_dollars = 0 AND ETCi_FTEs = 0 AND ETCi_hours = 0
AND (
(TRIM(ISNULL(WBS_ID_WP,'')) = '' AND WBS_ID_CA IN (SELECT WBSID FROM ToTest))
OR (TRIM(ISNULL(WBS_ID_WP,'')) <> '' AND WBS_ID_WP IN (SELECT WBSID FROM ToTest))
)
)