Captain Captain
Captain
260 views

Program Content adding rules or policies

Jump to solution

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:

  1. Work plan is canceled.
  2. Work plan is active but only one line in the work plan
  3. 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

Labels (2)
0 Likes
1 Solution

Accepted Solutions
Micro Focus Expert
Micro Focus Expert

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.

View solution in original post

0 Likes
4 Replies
Micro Focus Expert
Micro Focus Expert

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.

0 Likes
Captain Captain
Captain

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

0 Likes
Micro Focus Expert
Micro Focus Expert

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.

View solution in original post

0 Likes
Captain Captain
Captain

Thanks Etienne,

I tested in the PPM QA environment and after restart of the services I could add the project to a program.

 

0 Likes
The opinions expressed above are the personal opinions of the authors, not of Micro Focus. By using this site, you accept the Terms of Use and Rules of Participation. Certain versions of content ("Material") accessible here may contain branding from Hewlett-Packard Company (now HP Inc.) and Hewlett Packard Enterprise Company. As of September 1, 2017, the Material is now offered by Micro Focus, a separately owned and operated company. Any reference to the HP and Hewlett Packard Enterprise/HPE marks is historical in nature, and the HP and Hewlett Packard Enterprise/HPE marks are the property of their respective owners.