Oracle Project Resource Management Setup Steps

PJRM Set-Up

1.    PA: Licensed to use Project Resource Management - Yes
2.    Create a Project type - Indirect with Administrative / Unassigned Time Check-box enabled
3.    Create a Project Template - T, Unassigned Time
4.    Create a project P, Unassigned Time
5.    Enable the "Organization Planning" check-box in Project Type and Save It
6.    Set Forecasting Implementation Options
7.    Set the look-up code - STAFFING_PRIORITY_CODE (Low/Medium/High)
8.    Set the look-up code - PROJECT_JOB_LEVEL (1/2/3/4/5)
9.    For HRMS, DFF - Human Resources - Extra Job Information
a.    Unfreeze the field
b.    Select the Job Category
c.    Segments
d.    Project Job Level
e.    Save It
f.     Freeze the field and compile the DFF
10.  In HRMS, Security > Information Types Security
a.    Query the Window
b.    Global HRMS Manager / Global Super HRMS Manager
c.    Add Job Category in Information Types
11.  In HRMS, Work Structures > Job > Description
a.    Select any Job - Architect Designer
b.    Extra Information > Job Category
                          i.        Category Name
                         ii.        Billable
                        iii.        Include in Utilization
                       iv.        Project Job Level
                        v.        Project Job Code
                       vi.        Schedulable
12.  Projects > Setup > Projects > Roles > Job
a.    Enter the Financial Forecasting & Resource Searching
13.  In CRM Resource Manager,
a.    Import Resources > Search Resources > Start Import
14.  Set PA: Default Calendar profile option
15.  Add "PRC: Generate Calendar Schedule for a Single Calendar" in the request group
16.  Run "PRC: Maintain Project Resources" in PJT
17.  Add Requirement > Check


Status Problems:

Please go to the Statuses form (Setup-->System-->Statuses).

Query the following:
Status Type = Candidate

Make sure that every record with this status type has the 'Next Allowable Status' set to 'All'.

Status Type = Requirement

Make sure that every record with this status type has the 'Next Allowable Status' set to 'All'.

Save the change.
Retest the issue.

Profile Options:

PA: Require Work Type Entry for Expenditures
No
PA: Resource Utilization Calculation Method
Total Worked Hours
PA: Resource Utilization Period Type
GL Period
PA: Utilization Manager Default Calculation Method
Capacity
PA: Utilization Manager Default Period Type
GL Period
PA: Starting Requirement Status
Open
PA: Starting Assignment Status
Provisional
PA: Default Starting Candidate Status
Pending Review
PA: Default Calendar
Calendar
BIS: Enterprise Calendar
Calendar
BIS: Period
13 PERIOD
BIS: Global Start Date (mm/dd/yyyy)
01/01/1951
PA: Global Week Start Day
Monday

Time Category Delete Script

Script to delete time category

/
declare
cursor c1 is
select *
 from hxc_time_category_comps
 where value_id in (select to_char(project_id)
                      from pa_projects_all
                     where segment1 in ('xxx','xxx'));
begin
for i in c1 loop
hxc_time_category_comp_api.delete_time_category_comp
                                (  p_time_category_comp_id   => i.time_category_comp_id
                                     ,p_object_version_number   => 1
                                   );
end loop;                                 
Commit;
end;
/

Project Accounting - A General Idea

Oracle Projects

Explain in few words about Project Costing

Project Costing module helps in calculating the cost and accounting of a project. It also interacts with other modules such as Payables, Purchasing to interface costs related to a project.

Explain in few words about Project Billing

Project billing module helps in calculating the revenue and billing of a project. It helps in generating invoice for a customer project based on the customer agreement on that project, typically based on agreed upon bill rates, payment terms etc. Invoice is generated to the customer based on the number of hours worked on the project. Project Billing also helps to perform milestone billing based on the percent of work done. Revenue and Invoice accounting also done using project billing.

Explain in few words about Project Management

Project Management module helps project managers to manage the project effectively by providing them the visibility of a project (how the project performs, what is the status of the project, any issues in the project etc).

Financial Plans help project managers to effectively plan the budget of a project. Using Change management the financial plans can be managed effectively. Status Reporting feature helps to communicate the project status to the stake holders of the project.

Explain in few words about Project Resource Management

Project Resource Management module helps project managers to effectively manage the schedule of the project using the available resources. It helps in scheduling of the resources across various tasks of the project based on the resource availability. It also provides capabilities to staff various resources in an organization to a project by raising resource requirements. Project managers also can raise resource requirements for a particular open position in a project and can also mention the resource competencies required for that position.

How Project accounting interacts with Accounts Payables module?

Project related Supplier invoices are created in Accounts Payables module. This is a cost against the project and hence has to be transferred from payables to oracle projects. To interface the supplier costs, PRC: Interface Supplier Costs process can be run. This process fetches all the approved and yet to be interfaced invoices to the projects module.

These invoices are transferred to Projects module as expenditure items. Each eligible invoice distribution in an invoice is transferred as an expenditure item to projects module. The cost of the item is same as the invoice distribution amount.

How Project accounting interacts with purchasing module?

Project related Purchase Orders are created in Oracle Purchasing module. This is a cost against the project and hence has to be transferred to oracle projects.

There are 2 ways to do this.

1) Create a Supplier invoice against the PO. Then interface the supplier invoice to projects module.

2) In case when we cannot wait for an invoice to be create, we will have to transfer the PO cost directly to projects. This can be done by creating a Purchase receipt against that PO. Then interface the receipts directly to projects module.

To interface the Purchase Receipts, PRC: Interface Supplier Costs process can be run. This process fetches all the receipts matched against  the project related PO.

Receipt distributions are interfaced to projects module as expenditure items.

How to use global project without Project Billing for two different legal entities and Ledgers?
You can use Cross–Charge Client Extensions

Explain about the cost distribution process in project costing

Project costing module calculates costs for expenditure items which are not yet costed. For example the timesheets transferred from OTL module are interfaced as uncosted expenditure items. The cost for those timesheets are yet to be calculated.

Cost can be derived by the use of cost rates setup against the project. Cost rates can be setup against a specific organization, Job or an employee. For example if 8 hours is worked on a project in a day and the cost rate for the timesheet’s employee is 100 usd / hour. Then the cost of that employee on that day is 8 x 100 = 800 USD.

There can be additional costs associated with a project. For example, to perform the 8 hours of work on that day, an employee might have used additional resources such as internet, telephone, electricity etc. These costs are called as indirect costs or burdened costs.

How does AutoAccounting work?

For each accounting transaction, you define rules to determine the appropriate account to charge. Each accounting transaction is identified by an AutoAccounting function. AutoAccounting functions are components of programs that you submit to generate accounting entries.

How do you implement AutoAccounting?

The steps are as follows: 
a). Design your AutoAccounting setup based on your implementation data. 
b). Define lookup sets. Navigation – Setup/AutoAccounting/Lookup Sets. 
c). Define rules. Navigation – Setup/AutoAccounting/Rules. 
d). Assign rules for each function. Navigation – Setup/AutoAccounting/ Assignments. 

How does AutoAccounting compare to Workflow Account Generator?
Both the account generation processes in Oracle Workflow and AutoAccounting in Oracle Projects can create account numbers dynamically, based on transactions in Oracle Projects.

How can I find out which parameters are valid for an AutoAccounting Function?
Run the IMP: AutoAccounting Functions report.

Can I create or edit existing AutoAccounting transactions?
Oracle Projects predefines AutoAccounting transactions; you cannot modify them, or define additional transactions.

Submitting the Interface Supplier Costs Process

The PRC: Interface Supplier Costs process retrieves the following items and interfaces them from Oracle Purchasing and Oracle Payables to Oracle Projects:

§  All eligible accounted, project-related supplier invoice distributions

§  All eligible receipt accrual information from Oracle Purchasing

§  Tax lines for project-related intercompany invoices

All eligible accounted payment discounts that are distributed to project-related invoice distributions Project Management:

What are the two main types of project structures in Oracle Projects?

Workplan structures: made up of tasks that plan, track (through progress) and deliver projects on time.
Financial structures: are comprised of tasks that track billing, costs, budgets, and other financial information for individual projects.

Are budgetary controls used in PJT?
No. Budgetary controls are used in Project Costing only.

What is the use of a Deliverable?
Deliverables allow you to define and track the required outputs a project or a specific task will require in order to successfully complete them within a certain period of time.

Which type of structural integration between the Workplan and Financial Plan allows for actuals (effort/cost) to roll up to the Workplan? 
For a Fully Shared WP and FP structures only.  For all other methods the WP (WBS) is used to gather statistics such as progress on a project and the FP (FBS) is used to gather financial data including commitments and actuals.

What form of integration between the WP and FP is most appropriate?
The degree to a project’s workplan and financial structures are integrated depends on the customer’s business model and their project management requirements.  The tracking of a project's planning and finances. You can plan work, cost, and revenue against a single structure of tasks, or you can define separate project structures. This flexibility allows project managers to manage work at the level of detail they require while still supporting the needs of the finance organization for cost collection and budgeting.

What page is used to enable the different structures and determine the form of integration between the WP and FP?
In a project template, navigate to the Structures setup option.
In a project, navigate to the Project > Setup > Structures page (if enabled in the template) to change how the structures are shared.

What form of integration between the WP and FP allows the use of the same task structure while permitting the differentiation of  certain tasks between WP and FP functionality in which some tasks belong to either exclusively while other tasks shared both a WP and FP function?
Partially Shared structural integration

Where should structures be setup?
Within project templates which allows reuse of their parameters and settings as defaults when entering new projects.

In order to take advantage of baseline, approval and publication functionality in WPs, including work flow notifications, what is required?
Enable Workplan versioning in the Workplan Structure Information Page for project templates and projects.

Is it possible to enable the structure (financial, workplan or deliverable) and change the configuration at any point in time during the life of the project? 
Yes, if allowed.

Are the summarization processes required to populate the project performance base summary tables with incremental cost/effort data changes entered in the transactional system?
Yes

What is required for the Work Breakdown Structure (WBS) and any updates to the WBS to be carried through to the Financial Breakdown Structure (FBS) for fully or partially shared structures?
The working version of the WP/WBS structure has to be published.   Note that the "PRC: Process Structure Updates" process must be submitted after any change is made to the WBS structure (eg: such as new project-task links for programs).


How can you easily maintain structures? Is it only done through HTML? Or can you maintain them in FORMS? 
Workplan and the new model Financial Structure are maintained in Self Service Applications (OA Framework / html).  Burdening and billing are still done in forms because most costing entry is still done through core PA.  Budgetary Control (core PA forms feature for Budgeting) does not exist in Self Service or PJT.

If I am using the 3rd party Microsoft Projects product can I maintain the financial structure AND workplan structure in the same .mpp file?  Can this only be done under a Partially Shared scenario as well?
Yes, MSP stores fully shared information. PJT also enabled MSP integration with Partially Shared structures. 

In order to pull in Actuals onto the Workplan structure that is FULLY shared you need to run the summarization processes .  Which ones? 
After PSI summarization, there are 2 new processes that need to be run to update effort & actuals in the workplan.
 - Update Project & Resource Base Summaries - This makes sure that the summarized base views are updated after changes to the workplan/financial plan structures, or creation of a new one.  It's an incremental process, so if there are no changes to the workplan, then we should just be able to update the proj performance data
 - Update Project Performance Data - This process incrementally adds new summarized amounts into the new structure views.   (Note: to rebuild existing performance data, run the associated refresh processes instead).

The Resource Breakdown Structure (RBS) can be associated to the WP through which page and requires what?
The RBS is associated to the WP using the current reporting version of the RBS and according to the integration method via the Additional Workplan Options : Plan Settings page (Project: WP Tab: Setup: Plan Settings)

To update projects with the latest resource breakdown structure version what process must be run?
The PRC: Process Resource Breakdown Structure Updates process

What are the seeded Resource Classes available?
People, Equipment,  Material Items and Financial Elements

What does quantity represent for the resource classes?
For People and Equipment class resource assignments, quantity is equivalent to effort, while for Material Item and Financial Element class resource assignments, quantity refers directly to the number items or elements used or consumed.

What is a program and how is it linked to other programs or projects?
A program is a project to which you can link other related projects. A program hierarchy consists of related projects rolling up to the program through their task structures.

Oracle Project Billing Flow:

1.       Create a Project using an appropriate Template with Tasks, Key members and
Customers who are having a valid Billing Contact. Change the Billing Setup as
Event/Event. Change the Project Status as Approved
2.       Create Agreements and Fundings for that Project.
3.       Create Approved Cost Budget and Approved Revenue Budget for the Project and
Baseline those Budgets.
4.       Create Events accordingly. Give any type of Event for a Task. Number of lines of
an Invoice is dependent upon number of Events.
We can create any number of Events for a Task. All these Events will appear as
Lines in Invoice.
5.       Run the PRC: Generate Draft Revenue for a Single Project program to generate Draft Revenue. Check this in Revenue Review.
6.       Run the PRC: Generate Draft Invoices for a Single Project program
to generate Draft Invoice Check it in Invoice Review and Approve and Release that
Invoice.
7.       Now, Run PRC: Interface Invoices to Receivables program to interface the Invoice 
to Receivables. Now all the Invoices will be in RA_INTERFACE_LINES_ALL
8.       Now, Run the Autoinvoice Master Program in Receivables. Batch Source is PROJECTS INVOICES. Now, the Invoices are successfully imported. 


How to Interface a Capital Project to Fixed Assets 

1) Distribute all Expenses 
2) Distribute Burden Costs
3) Post the transactions to GL and Tieback.
4) Summarize the costs using the programs - Update or Refresh Project Summary Amounts
5) To create asset lines, run PRC:Generate Asset Lines
6) To interface the assets to FA, run PRC:Interface Assets

API for Employee Competency Upload

CREATE OR REPLACE PROCEDURE APPS.xx_add_compt_element_prc (
   errbuf    OUT   VARCHAR2,
   retcode   OUT   NUMBER
)
IS
   l_competence_element_id        NUMBER (20);
   l_comp_object_version_number   NUMBER;
   lv_person_id                   NUMBER (20);
   lv_business_group_id           NUMBER (20);
   l_competence_id                NUMBER (20);
   status                         VARCHAR2 (50);
   error                          VARCHAR2 (500);
   lv_rating_level_id             NUMBER (20);
   l_competence_name              VARCHAR2 (200);
   l_total_records                NUMBER (20)    := 0;
   l_error_rec_cnt                NUMBER (20)    := 0;
   l_total_succ_records           NUMBER (20)    := 0;

   CURSOR comp_cur
   IS
      SELECT TRIM (employee_number) employee_number,
             TRIM (competency_name) competency_name,
             TRIM (proficiency_level) proficiency_level,
             TRIM (date_from) date_from, TRIM (date_to) date_to
        FROM xx_comp_prf_stg_tab
       WHERE v_status IS NULL OR v_status = 'E';

BEGIN

   DBMS_OUTPUT.put_line
            ('##############################################################');
   DBMS_OUTPUT.put_line ('DATA INTERFACE FOR COMPETENCE ELEMENT');
   DBMS_OUTPUT.put_line
            ('##############################################################');
   fnd_file.put_line (fnd_file.LOG,
                         'Start Time : '
                      || TO_CHAR (SYSDATE, 'DD-MON-YYYY     HH:MI:SS')
                     );
   FOR comp_ptr IN comp_cur
   LOOP
      l_total_records := l_total_records + 1;
      status := 'S';
      error := '';
      DBMS_OUTPUT.put_line ('Inside Loop');

      BEGIN
         SELECT person_id, business_group_id
           INTO lv_person_id, lv_business_group_id
           FROM per_all_people_f
          WHERE employee_number = TRUNC (comp_ptr.employee_number)
            AND TO_DATE('31-OCT-2010') BETWEEN effective_start_date AND effective_end_date;
         DBMS_OUTPUT.put_line ('person_id : ' || lv_person_id);
         DBMS_OUTPUT.put_line ('business_group_id : ' || lv_business_group_id);
      EXCEPTION
         WHEN NO_DATA_FOUND
         THEN
            l_error_rec_cnt := l_error_rec_cnt + 1;
            status := 'E';
            error := 'Error Occured at Person_ID' || SUBSTR (SQLERRM, 1, 200);
            DBMS_OUTPUT.put_line
                               (   'Error at Person_id and Business_group : '
                                || SUBSTR (SQLERRM, 2, 250)
                               );
      END;

     IF status = 'S'
      THEN
         BEGIN
            SELECT competence_id
              INTO l_competence_id
              FROM per_competences
             WHERE NAME = comp_ptr.competency_name;
         EXCEPTION
            WHEN OTHERS
            THEN
               l_error_rec_cnt := l_error_rec_cnt + 1;
               status := 'E';
               error :=
                    'Error Occured competence_id' || SUBSTR (SQLERRM, 1, 200);
               DBMS_OUTPUT.put_line ('competence id error:');
         END;
         DBMS_OUTPUT.put_line ('Competence_id : ' || l_competence_id);
      END IF;

      IF status = 'S'
      THEN
         BEGIN
            SELECT rating_level_id
              INTO lv_rating_level_id
              FROM per_rating_levels
             WHERE step_value = comp_ptr.proficiency_level
               AND rating_scale_id = '1001'
               AND business_group_id = 81;
         EXCEPTION
            WHEN OTHERS
            THEN
               l_error_rec_cnt := l_error_rec_cnt + 1;
               status := 'E';
               error :=
                  'Error Occured at rating level '
                  || SUBSTR (SQLERRM, 1, 200);
               DBMS_OUTPUT.put_line (   'Proficiency rating error:'
                                     || SUBSTR (SQLERRM, 1, 200)
                                    );
         END;

         DBMS_OUTPUT.put_line ('Rating_id : ' || lv_rating_level_id);
      END IF;

      IF status = 'S'
      THEN
         BEGIN
            DBMS_OUTPUT.put_line ('Entering API');
            hr_competence_element_api.create_competence_element
                    (p_validate                   => FALSE,
                     p_competence_element_id      => l_competence_element_id,
                     p_object_version_number      => l_comp_object_version_number,
                     p_type                       => 'REQUIREMENT',
                     p_business_group_id          => lv_business_group_id,
                     p_competence_id              => l_competence_id,
                     p_proficiency_level_id       => lv_rating_level_id,
                     p_person_id                  => lv_person_id,
                     p_effective_date             => TO_DATE('31-OCT-2010'),
                     p_effective_date_from        => comp_ptr.date_from,
                     p_effective_date_to          => comp_ptr.date_to
                    );
            COMMIT;
            status := 'S';
            error := 'Success';
            l_total_succ_records := l_total_succ_records + 1;
         EXCEPTION
            WHEN OTHERS
            THEN
               l_error_rec_cnt := l_error_rec_cnt + 1;
               DBMS_OUTPUT.put_line (   'Error in Competence API : '
                                     || SUBSTR (SQLERRM, 1, 255)
                                    );
               error := 'Error At API' || SUBSTR (SQLERRM, 1, 250);
               status := 'E';
         END;
      END IF;

      UPDATE xx_comp_prf_stg_tab
         SET v_status = status,
             v_error = error
       WHERE employee_number = comp_ptr.employee_number
         AND competency_name = comp_ptr.competency_name;
      COMMIT;
   END LOOP;

   fnd_file.put_line
      (fnd_file.LOG,
       '*****************************Summary for Competence Profile Upload*****************'
      );
   fnd_file.put_line (fnd_file.LOG,
                      'Total Records processed: ' || l_total_records
                     );
   fnd_file.put_line (fnd_file.LOG,
                         'Total Records successfully Loaded: '
                      || l_total_succ_records
                     );
   fnd_file.put_line (fnd_file.LOG,
                      'Total Records which has error: ' || l_error_rec_cnt
                     );
   fnd_file.put_line (fnd_file.LOG,
                         'End Time : '
                      || TO_CHAR (SYSDATE, 'DD-MON-YYYY     HH:MI:SS')
                     );
   fnd_file.put_line
      (fnd_file.LOG,
       '**********************************************End**********************************'
      );
END xx_add_compt_element_prc;
/