PA Project Upload

Description

PA Project Upload creates and updates Oracle Projects projects from Excel: the project header, project manager, primary customer, dates, currency and billing setup, flags, and descriptive flexfield attributes. New projects are copied from a project template you choose, and existing projects are downloaded for editing and updated with only the values you change.

When to use it

  • Mass-create new projects from a standard project template with consistent header and billing setup.
  • Bulk-update header attributes such as status, dates, description, organization, billing setup and flags on many projects.
  • Reassign the project manager across a set of projects.
  • Set the primary customer for many new projects at once.
  • Populate project descriptive flexfield attributes in bulk.

Before you start

  • A responsibility with Blitz Report and project access to the operating unit, such as an Oracle Projects responsibility.
  • An active project template exists in the operating unit for every new project. Its quick entry fields marked as required decide which columns a new project must fill.
  • The project manager is an active employee.

Step 1 – Set the parameters

Open PA Project Upload in Blitz Report and set the parameters:

ParameterMeaning
Upload ModeCreate (default) opens an empty sheet for new projects; Create, Update downloads existing projects for editing and lets you add new ones.
Operating UnitThe operating unit of the projects (required).
Project NumberDownloads this project only.
Project NameDownloads the project with this name.
Project TypeDownloads projects of this project type.
Project StatusDownloads projects with this status.

Project templates are never downloaded, only projects.

Blitz Report run screen for PA Project Upload with Upload Mode Create, Update, Operating Unit Vision Operations and Project Type Operation

Step 2 – Run to download the Excel file

Click Run. The Excel file downloads and opens with one row per project, showing its template, current project manager, primary customer and header settings, or an empty sheet in Create mode.

Excel file with the two existing Operation projects OS101 and OS419 and their template, status, organization and project manager

Step 3 – Enter or change the projects

To change a downloaded project, overwrite the values you want to change, for example the Description, Long Name, Project Status, Completion Date or Project Manager. Only changed values are sent to Oracle; clearing a cell clears that value on the project.

To create a project, add a row with the Operating Unit, a new Project Number (up to 25 characters), the Project Name (up to 30 characters) and the Template to copy from. Entering the Template fills the other columns with the template’s values, such as Project Type, Project Status, Organization, Project Manager, dates, currency and billing setup. Overwrite what differs for the new project, at least the Start Date, and check that the Completion Date copied from the template is not before it. Customer Name becomes the project’s primary customer, and Pm Product Code (default Primavera Systems) records the external project management system that owns the project.

Excel file with the description of project OS419 changed, marked Update, and a new project OS2349 added from the Store Operations Template, marked Create

Step 4 – Validate and Save

Click Validate and Save. This checks for missing required values, the field lengths and the fields the template requires, then saves the file. Correct any rows it flags before uploading.

Both edited rows show status Valid after Validate and Save

Step 5 – Upload the file

In Blitz Report click Upload and select the saved file. This submits the upload request, which creates or updates each project.

File Upload page with the saved Excel file selected for upload

Step 6 – Review the result report

When the request completes, a result report opens listing every uploaded row with its status and message, for example Project created: <project number> or Project updated: <project number>, followed by a note when the project manager was replaced or assigned.

What’s produced

  • New projects copied from their template, with their project manager, primary customer and header setup.
  • Existing projects updated with the changed values, and project manager changes recorded with dates.
  • A result report listing every row with a status (success, warning or error) and a message.

Common questions

How does the upload decide between create and update?
A row updates the project if a project with that Project Number already exists in the operating unit, otherwise it creates a new project from the Template.

What happens when I change the project manager?
On an existing project the current project manager is end-dated as of yesterday and the new one is assigned from today. On a new project, a manager different from the template’s replaces the template’s manager from the project start date.

Can I change the customer or the Pm Product Code of an existing project?
No. Customer Name and Pm Product Code are applied when the project is created and are not changed by an update.

Which Pm Product Code should I use?
Keep the default Primavera Systems unless the project is maintained in another external system. Do not use Microsoft Project: it prevents later date updates on the project (Oracle bug 12954344).

Can I add tasks with this upload?
No. New projects get the tasks of their template. Use PA Task Upload to create and update tasks.

Where are the descriptive flexfield columns?
The Default template shows all columns except the descriptive flexfield attributes. Run the upload without a template to include the Attribute Category and attribute columns.

Troubleshooting

MessageCauseWhat to do
Required for template: …The template marks the listed fields (Organization, Project Manager, Description, start date, finish date or customer) as required and they are empty.Fill the listed columns.
Project Number exceeds 25 characters, Project Name exceeds 30 characters, Long Name exceeds 240 characters, Description exceeds 250 charactersA value is longer than Oracle Projects allows.Shorten the value.
Template is required for project creation.A new project row has no Template.Select an active project template of the operating unit.
MOAC initialization failedYour responsibility has no access to the row’s operating unit.Upload from a responsibility with access to the operating unit.
DFF validation: …A descriptive flexfield value is not valid for the project flexfield.Correct the Attribute Category or attribute value.
… (PM creation failed: …), (New PM creation failed: …), (PM replace failed: …)The project was saved, but the project manager change was rejected, so the row ends with a warning.Check that the project manager is an active employee with a valid assignment on the start date, and correct the manager in Oracle Projects or upload the row again.
select
null action_,
null status_,
null message_,
null request_id_,
null modified_columns_,
-- project identifiers
haouv.name operating_unit,
ppa.segment1 project_number,
ppa.name project_name,
(select ppa_t.name from pa_projects_all ppa_t where ppa_t.project_id=ppa.created_from_project_id) template,
ppa.long_name,
ppa.project_type,
pps.project_status_name project_status,
haouv2.name organization,
ppf.full_name project_manager,
ppa.description,
-- dates
ppa.start_date,
ppa.completion_date,
-- classification
decode(ppa.public_sector_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) public_sector,
pdr.meaning distribution_rule,
-- currency
ppa.project_currency_code,
ppa.projfunc_currency_code,
gdct1.user_conversion_type project_rate_type,
ppa.project_rate_date,
gdct2.user_conversion_type projfunc_cost_rate_type,
ppa.projfunc_cost_rate_date,
-- billing setup
xxen_util.meaning(ppa.labor_sch_type,'PROJECT SCHEDULE TYPE',275) labor_schedule_type,
ppa.labor_schedule_fixed_date,
ppa.labor_schedule_discount,
xxen_util.meaning(ppa.labor_disc_reason_code,'RATE AND DISCOUNT REASON',275) labor_discount_reason,
xxen_util.meaning(ppa.non_labor_sch_type,'PROJECT SCHEDULE TYPE',275) non_labor_schedule_type,
haouv4.name non_labor_bill_rate_org,
ppa.non_labor_schedule_fixed_date,
ppa.non_labor_schedule_discount,
xxen_util.meaning(ppa.non_labor_disc_reason_code,'RATE AND DISCOUNT REASON',275) non_labor_discount_reason,
psbrsa1.std_bill_rate_schedule employee_bill_rate_schedule,
psbrsa2.std_bill_rate_schedule job_bill_rate_schedule,
psbrsa3.std_bill_rate_schedule non_labor_bill_rate_schedule,
-- burden schedules
pirsab2.ind_rate_sch_name revenue_burden_schedule,
ppa.rev_ind_sch_fixed_date revenue_ind_sched_fixed_dt,
pirsab3.ind_rate_sch_name invoice_burden_schedule,
ppa.inv_ind_sch_fixed_date invoice_ind_sched_fixed_dt,
-- billing currency
xxen_util.meaning(ppa.invproc_currency_type,'INVPROCE_CURR_TYPE',275) invproc_currency_type,
ppa.revproc_currency_code,
xxen_util.meaning(ppa.project_bil_rate_date_code,'BILL_RATE_DATE_CODE',275) project_bil_rate_date_code,
gdct3.user_conversion_type project_bil_rate_type,
ppa.project_bil_rate_date,
ppa.project_bil_exchange_rate,
xxen_util.meaning(ppa.projfunc_bil_rate_date_code,'BILL_RATE_DATE_CODE',275) projfunc_bil_rate_date_code,
gdct4.user_conversion_type projfunc_bil_rate_type,
ppa.projfunc_bil_rate_date,
ppa.projfunc_bil_exchange_rate,
xxen_util.meaning(ppa.funding_rate_date_code,'BILL_RATE_DATE_CODE',275) funding_rate_date_code,
gdct5.user_conversion_type funding_rate_type,
ppa.funding_rate_date,
ppa.funding_exchange_rate,
-- flags
decode(ppa.baseline_funding_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) baseline_funding,
decode(ppa.multi_currency_billing_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) multi_currency_billing,
decode(ppa.inv_by_bill_trans_curr_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) invoice_by_bill_trx_currency,
decode(ppa.assign_precedes_task,'Y',xxen_util.meaning('Y','YES_NO',0)) assign_precedes_task,
decode(ppa.split_cost_from_workplan_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) split_cost_from_workplan,
decode(ppa.split_cost_from_bill_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) split_cost_from_billing,
decode(ppa.sys_program_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) system_program,
decode(ppa.allow_multi_program_rollup,'Y',xxen_util.meaning('Y','YES_NO',0)) allow_multi_program_rollup,
decode(ppa.projfunc_attr_for_ar_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) projfunc_attr_for_ar,
decode(ppa.revaluate_funding_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) revaluate_funding,
decode(ppa.include_gains_losses_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) include_gains_losses,
decode(ppa.retn_accounting_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) retention_accounting,
decode(ppa.cint_eligible_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) capital_interest_eligible,
ppa.cint_stop_date capital_interest_stop_date,
decode(ppa.enable_top_task_customer_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) enable_top_task_customer,
decode(ppa.enable_top_task_inv_mth_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) enable_top_task_invoice_method,
decode(ppa.limit_to_txn_controls_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) limit_to_txn_controls,
-- cross charge / transfer price
decode(ppa.allow_cross_charge_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) allow_cross_charge,
decode(ppa.cc_process_labor_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) cross_charge_process_labor,
decode(ppa.cc_process_nl_flag,'Y',xxen_util.meaning('Y','YES_NO',0)) cross_charge_process_non_labor,
pctsb1.name labor_transfer_price_schedule,
ppa.labor_tp_fixed_date labor_transfer_price_fixed_dt,
pctsb2.name non_labor_transfer_price_sched,
ppa.nl_tp_fixed_date non_labor_xfer_price_fxd_dt,
-- setup
pwtv.name work_type,
jtcv.calendar_name calendar,
hla.location_code location,
prl.name role_list,
to_char(ppm.probability_percentage) probability,
ppa.project_value,
ppa.expected_approval_date,
(select pl.meaning from pa_lookups pl where pl.lookup_type='PA_PROJECT_PRIORITY_CODE' and pl.lookup_code=ppa.priority_code) priority_code,
pjgv1.displayed_name cost_job_group,
pjgv2.displayed_name bill_job_group,
(select flvv.meaning from fnd_lookup_values_vl flvv where flvv.lookup_type='PA_SECURITY_LEVEL' and flvv.lookup_code=to_char(ppa.security_level) and flvv.enabled_flag='Y' and flvv.security_group_id=0) security_level,
-- retention / invoice format
pif.name retention_billing_invoice_fmt,
-- asset / capital
xxen_util.meaning(ppa.asset_allocation_method,'ASSET_ALLOCATION_METHOD',275) asset_allocation_method,
xxen_util.meaning(ppa.capital_event_processing,'CAPITAL_EVENT_PROCESSING',275) capital_event_processing,
pirsab4.ind_rate_sch_name capital_interest_rate_schedule,
-- tax
ppa.output_tax_code,
ppa.retention_tax_code,
-- DFF
xxen_util.display_flexfield_context(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category) attribute_category,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE1',ppa.rowid,ppa.attribute1) attribute1,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE2',ppa.rowid,ppa.attribute2) attribute2,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE3',ppa.rowid,ppa.attribute3) attribute3,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE4',ppa.rowid,ppa.attribute4) attribute4,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE5',ppa.rowid,ppa.attribute5) attribute5,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE6',ppa.rowid,ppa.attribute6) attribute6,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE7',ppa.rowid,ppa.attribute7) attribute7,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE8',ppa.rowid,ppa.attribute8) attribute8,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE9',ppa.rowid,ppa.attribute9) attribute9,
xxen_util.display_flexfield_value(275,'PA_PROJECTS_DESC_FLEX',ppa.attribute_category,'ATTRIBUTE10',ppa.rowid,ppa.attribute10) attribute10,
-- customer
(select hp.party_name from pa_project_customers ppc, hz_cust_accounts hca, hz_parties hp where ppc.project_id=ppa.project_id and ppc.customer_id=hca.cust_account_id and hca.party_id=hp.party_id and rownum=1) customer_name,
(select pl.meaning from pa_lookups pl where pl.lookup_type='PM_PRODUCT_CODE' and pl.lookup_code=ppa.pm_product_code) pm_product_code,
-- hidden
ppa.project_id,
0 upload_row
from
pa_projects_all ppa,
pa_project_statuses pps,
hr_all_organization_units_vl haouv,
hr_all_organization_units_vl haouv2,
hr_all_organization_units_vl haouv4,
pa_distribution_rules pdr,
per_all_people_f ppf,
pa_project_parties ppp,
gl_daily_conversion_types gdct1,
gl_daily_conversion_types gdct2,
gl_daily_conversion_types gdct3,
gl_daily_conversion_types gdct4,
gl_daily_conversion_types gdct5,
pa_std_bill_rate_schedules_all psbrsa1,
pa_std_bill_rate_schedules_all psbrsa2,
pa_std_bill_rate_schedules_all psbrsa3,
pa_ind_rate_schedules_all_bg pirsab2,
pa_ind_rate_schedules_all_bg pirsab3,
pa_ind_rate_schedules_all_bg pirsab4,
pa_cc_tp_schedules_bg pctsb1,
pa_cc_tp_schedules_bg pctsb2,
pa_work_types_vl pwtv,
jtf_calendars_vl jtcv,
hr_locations_all hla,
pa_role_lists prl,
pa_probability_members ppm,
per_job_groups_v pjgv1,
per_job_groups_v pjgv2,
pa_invoice_formats pif
where
1=1 and
ppa.template_flag='N' and
ppa.project_status_code=pps.project_status_code and
pps.status_type='PROJECT' and
ppa.org_id=haouv.organization_id and
haouv.organization_id in (select mgoat.organization_id from mo_glob_org_access_tmp mgoat union select fnd_global.org_id from dual where fnd_release.major_version=11) and
ppa.carrying_out_organization_id=haouv2.organization_id and
ppa.non_labor_bill_rate_org_id=haouv4.organization_id(+) and
ppa.distribution_rule=pdr.distribution_rule(+) and
ppa.project_id=ppp.project_id(+) and
ppp.project_role_id(+)=1 and
nvl(ppp.end_date_active(+),sysdate)>=sysdate and
ppp.resource_source_id=ppf.person_id(+) and
trunc(sysdate) between ppf.effective_start_date(+) and ppf.effective_end_date(+) and
ppa.project_rate_type=gdct1.conversion_type(+) and
ppa.projfunc_cost_rate_type=gdct2.conversion_type(+) and
ppa.project_bil_rate_type=gdct3.conversion_type(+) and
ppa.projfunc_bil_rate_type=gdct4.conversion_type(+) and
ppa.funding_rate_type=gdct5.conversion_type(+) and
ppa.emp_bill_rate_schedule_id=psbrsa1.bill_rate_sch_id(+) and
ppa.job_bill_rate_schedule_id=psbrsa2.bill_rate_sch_id(+) and
ppa.non_lab_std_bill_rt_sch_id=psbrsa3.bill_rate_sch_id(+) and
ppa.rev_ind_rate_sch_id=pirsab2.ind_rate_sch_id(+) and
ppa.inv_ind_rate_sch_id=pirsab3.ind_rate_sch_id(+) and
ppa.cint_rate_sch_id=pirsab4.ind_rate_sch_id(+) and
ppa.labor_tp_schedule_id=pctsb1.tp_schedule_id(+) and
ppa.nl_tp_schedule_id=pctsb2.tp_schedule_id(+) and
ppa.work_type_id=pwtv.work_type_id(+) and
ppa.calendar_id=jtcv.calendar_id(+) and
ppa.location_id=hla.location_id(+) and
ppa.role_list_id=prl.role_list_id(+) and
ppa.probability_member_id=ppm.probability_member_id(+) and
ppa.cost_job_group_id=pjgv1.job_group_id(+) and
ppa.bill_job_group_id=pjgv2.job_group_id(+) and
ppa.retn_billing_inv_format_id=pif.invoice_format_id(+)
Parameter NameSQL textValidation
Upload Mode
:p_upload_mode like '%' || xxen_upload.action_update
LOV
Operating Unit
haouv.name=:p_operating_unit
LOV
Project Number
ppa.segment1=:p_project_number
LOV
Project Name
ppa.name=:p_project_name
LOV
Project Type
ppa.project_type=:p_project_type
LOV
Project Status
pps.project_status_name=:p_project_status
LOV