

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Good day,
Where can I get all the rules/policies that are used when you add a Life cycle entity to a Program.
I only find the following 3 rules:
- If the program has Portfolio Management enabled, the lifecycle entities available for selection are those that do not belong to a portfolio or another program that has Portfolio Management enabled.
- If the program does not have Portfolio Management enabled, all lifecyle entities are listed.
- If a lifecycle entity is added to a portfolio or to a program that has Portfolio Management enabled but the portfolio or program is not saved, then that lifecycle entity is still available for selection and will continue to be until the portfolio or program is saved.
We have projects that we can't add to the Program because they don't display in the list when adding content.
I found the following additional possible issues on those projects where the above rules are not true but not sure if these are the reasons:
- Work plan is canceled.
- Work plan is active but only one line in the work plan
- No work plan added
If there are any documentation that describe all the rules/policies to add Project content, that can be shared please?
Regards,
Alfred
Accepted Solutions

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Hi Alfred,
All I can share is the SQL code produced by the person that met the issue before. All Kudos should go to Rich Carney, Micro Focus PSO:
-- FIND BAD GUYS:
SELECT
prj.request_id
,prj.prj_financial_summary_id
,prj.prj_financial_summary_name
,(SELECT fs.financial_summary_id FROM pm_projects p JOIN pfm_lifecycle_parent_entity pe ON p.pfm_request_id = pe.project_req_id JOIN fm_financial_summary fs ON pe.lifecycle_id = fs.parent_id AND fs.parent_entity_id = 526 AND fs.entity_type = 'FS' WHERE p.pfm_request_id = prj.request_id) AS financial_summary_id
,(SELECT fs.name FROM pm_projects p JOIN pfm_lifecycle_parent_entity pe ON p.pfm_request_id = pe.project_req_id JOIN fm_financial_summary fs ON pe.lifecycle_id = fs.parent_id AND fs.parent_entity_id = 526 AND fs.entity_type = 'FS' WHERE p.pfm_request_id = prj.request_id) AS financial_name
FROM kcrt_fg_pfm_project prj
WHERE prj.prj_financial_summary_id IS NULL;
-- FIX BAD GUYS:
UPDATE kcrt_fg_pfm_project prj
SET (prj.prj_financial_summary_id, prj.prj_financial_summary_name) =
(SELECT fs.financial_summary_id, fs.name FROM pm_projects p JOIN pfm_lifecycle_parent_entity pe ON p.pfm_request_id = pe.project_req_id JOIN fm_financial_summary fs ON pe.lifecycle_id = fs.parent_id AND fs.parent_entity_id = 526 AND fs.entity_type = 'FS' WHERE p.pfm_request_id = prj.request_id)
WHERE (prj.prj_financial_summary_id IS NULL OR prj.prj_financial_summary_name IS NULL);
I hope that helps,
Thanks,
Etienne.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Hi Alfred,
The best way to solve your problem is to run the same SQL as PPM is doing to get the list of eligible projects to add to a program, and analyze it to understand why the projects you expect to see aren't showing up.
The validation ID used to retrieve the candidate projects to add to a program is 3968.
If you check in DB, you'll see that the SQL is as follows (replace the token with the relevant values for you😞
SELECT * FROM (
SELECT DISTINCT req.request_id req_id, prj.project_name, req.request_id, prj.prj_business_unit_meaning AS business_unit,
NVL (bgtsum.projected_total, 0) AS projected_total_budget,
NVL (bensum.projected_total, 0) AS projected_total_benefit
FROM kcrt_fg_pfm_project prj, kcrt_requests req, fm_forecast_actual_period_sum bgtsum,
fm_benefit_period_sum bensum, fm_financial_summary ffs, pfm_lifecycle_parent_entity lfpe
WHERE lfpe.project_req_id = prj.request_id
AND lfpe.active_entity = 'Project'
AND UPPER (NVL (prj.project_name, '(No Name)')) LIKE UPPER ('?' || '%')
AND (NVL (prj.project_name, '(No Name)') LIKE UPPER (SUBSTR ('?', 1, 1)) || '%'
OR NVL (prj.project_name, '(No Name)') LIKE LOWER (SUBSTR ('?', 1, 1)) || '%')
AND prj.prj_financial_summary_id = ffs.financial_summary_id
AND bgtsum.forecast_actual_id(+) = ffs.forecast_actual_id
AND bgtsum.period_id(+) = -1
AND bensum.benefit_id(+) = ffs.benefit_id
AND bensum.period_id(+) = -1
AND req.request_id = prj.request_id
AND EXISTS
(SELECT 'isValid'
FROM kcrt_request_types rt, kcrt_hdr_types_field_groups fg
WHERE rt.request_type_id = req.request_type_id
AND rt.request_header_type_id = fg.request_header_type_id
AND fg.field_group_id = 12)
AND (EXISTS (SELECT 1
FROM pgm_programs
WHERE program_id = [PRG.PROGRAM_ID] AND (rollupable = 'N' OR rollupable IS NULL))
OR (NOT EXISTS
(SELECT 1
FROM pgm_programs p, pgm_program_content ppc, pfm_lifecycle_parent_entity lpe
WHERE ppc.content_id = lpe.lifecycle_id
AND p.program_id = ppc.program_id
AND p.rollupable = 'Y'
AND req.request_id = lpe.project_req_id)
AND NOT EXISTS (SELECT 1
FROM pfm_portfolio_contents pc
WHERE ffs.financial_summary_id = pc.financial_summary_id)))
AND NOT EXISTS (SELECT 1
FROM pgm_program_content
WHERE program_id = [PRG.PROGRAM_ID] AND content_id = lfpe.lifecycle_id)
ORDER BY prj.project_name
) WHERE pfm_security.can_edit_for_content ([SYS.USER_ID], req_id) = 'Y'
I know someone that used this approach to pinpoint the fact that some of their projects didn't had the Financial Summary info properly set in DB, which caused related projects not to show up in the list. Maybe you're experiencing the same issue.
Thanks,
Etienne.


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Thanks Etienne,
The Financial Summary is the issue, the Financial Summary field has been disabled.
I enabled the field again.
How do I add the Financial Summary created in the Proposal to the Project?
Regards,
Alfred

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Hi Alfred,
All I can share is the SQL code produced by the person that met the issue before. All Kudos should go to Rich Carney, Micro Focus PSO:
-- FIND BAD GUYS:
SELECT
prj.request_id
,prj.prj_financial_summary_id
,prj.prj_financial_summary_name
,(SELECT fs.financial_summary_id FROM pm_projects p JOIN pfm_lifecycle_parent_entity pe ON p.pfm_request_id = pe.project_req_id JOIN fm_financial_summary fs ON pe.lifecycle_id = fs.parent_id AND fs.parent_entity_id = 526 AND fs.entity_type = 'FS' WHERE p.pfm_request_id = prj.request_id) AS financial_summary_id
,(SELECT fs.name FROM pm_projects p JOIN pfm_lifecycle_parent_entity pe ON p.pfm_request_id = pe.project_req_id JOIN fm_financial_summary fs ON pe.lifecycle_id = fs.parent_id AND fs.parent_entity_id = 526 AND fs.entity_type = 'FS' WHERE p.pfm_request_id = prj.request_id) AS financial_name
FROM kcrt_fg_pfm_project prj
WHERE prj.prj_financial_summary_id IS NULL;
-- FIX BAD GUYS:
UPDATE kcrt_fg_pfm_project prj
SET (prj.prj_financial_summary_id, prj.prj_financial_summary_name) =
(SELECT fs.financial_summary_id, fs.name FROM pm_projects p JOIN pfm_lifecycle_parent_entity pe ON p.pfm_request_id = pe.project_req_id JOIN fm_financial_summary fs ON pe.lifecycle_id = fs.parent_id AND fs.parent_entity_id = 526 AND fs.entity_type = 'FS' WHERE p.pfm_request_id = prj.request_id)
WHERE (prj.prj_financial_summary_id IS NULL OR prj.prj_financial_summary_name IS NULL);
I hope that helps,
Thanks,
Etienne.


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Thanks Etienne,
I tested in the PPM QA environment and after restart of the services I could add the project to a program.