QA Collection Plan Upload

Description

QA Collection Plan Upload creates, updates and deletes Oracle Quality collection plans together with their full child hierarchy – transactions, collection triggers, plan elements, element values, action triggers, actions and action outputs – in one hierarchical spreadsheet.

When to use it

  • Mass-create new collection plans with their elements, triggers, values and actions instead of using the Quality Collection Plans form.
  • Clone or roll out a standardized set of plans across multiple organizations.
  • Bulk-update plan headers or element settings (prompt, mandatory, displayed, default value, precision, UOM) across many plans.
  • Add or remove collection elements on existing plans in bulk.
  • Maintain action triggers, actions and action outputs (such as assign-value or send-email alert actions).
  • Delete obsolete plans or specific child entities en masse.

Before you start

  • Blitz Report is installed and you are signed in to a responsibility with access to the inventory organization.
  • The collection elements, transactions, actions and alert action sets referenced already exist in Oracle Quality.
  • This upload assigns existing elements to a plan; it does not create the element definitions.

How the rows work

Each spreadsheet row represents one entity in the plan’s hierarchy, and the upload recognizes which entity it is from the columns you fill. The organization and Plan Name repeat on every row of the same plan, processed top-down:

RowWhat it defines
Plan HeaderThe plan (name, type, description, effective dates, multirow).
TransactionA quality transaction the plan collects against.
Collection TriggerA trigger condition on a transaction.
ElementA collection element assigned to the plan, with its prompt and flags.
Element ValueAn allowed value for an element.
Action Trigger / Action / Action OutputConditional actions (e.g. alerts) and their output mappings.

Step 1 – Choose a mode, set the parameters and download

In Blitz Report, open QA Collection Plan Upload, choose an Upload Mode (Create for an empty template, or Create, Update to download existing plans to edit), and set the parameters:

ParameterPurpose
Upload ModeCreate or Create, Update. Default is Create.
Organization / Plan Type / Collection Plan / Plan From / Plan ToRestrict which existing plans are downloaded.

Run the upload to download and open the Excel file. Each plan and child entity is automatically handled as a create or an update depending on whether it already exists.

Step 2 – Enter the plans

On the header row enter the Organization Code, Plan Name, Plan Type and description. Add a row per transaction, trigger, element, element value, and action, repeating the organization and Plan Name on each and filling only that entity’s columns.

Step 3 – Delete entities (optional)

Set the Delete column to Yes to remove an entity. Deleting a parent cascades to its children (deleting the plan header removes everything).

Step 4 – Validate and Save

Click Validate and Save. This checks for missing required values and runs the upload’s validation, then saves the file. Correct anything it flags before continuing.

Step 5 – Upload and view the result

Back in Blitz Report, click Upload and select your saved file. This submits the Blitz Upload request, which applies each plan and its child entities and completes the plan automatically. When it finishes, a result report opens showing each row as success or error.

What’s produced

  • Created, updated or deleted collection plans with their transactions, triggers, elements, values and actions.
  • A result report listing every row with a status (success or error) and a message.

Common questions

Do I repeat the plan name on every line?
Yes. Each child row carries the same Organization Code and Plan Name as its plan header, so the upload attaches the child to the right plan.

I changed one field on an action and it created a second action instead of updating it.
Actions are identified by their full set of fields (trigger, action name, assign type, assigned element, alert action set/action, status, message). Changing any of these is treated as a new action – delete the old one and add the corrected one.

Can I create the collection elements through this upload?
No. This upload assigns existing elements to a plan and edits the plan-level element settings. Create element definitions with the QA Collection Element Upload.

Are CAR (Corrective Action Request) actions supported?
Not yet.

Do I need to do anything to “save” the plan after adding elements?
No – the upload runs Quality’s plan-completion processing automatically for every plan whose elements changed or that was newly created.

Troubleshooting

MessageCauseWhat to do
Plan Type is required for new plansCreating a new plan header with no Plan Type.Fill the Plan Type column for header rows that create a plan.
Plan not foundA child row references a plan that doesn’t exist yet (or wrong name/org).Ensure the plan header row exists/created first with the exact same Plan Name and Organization Code.
Transaction not assigned to plan / action trigger not foundA trigger/action/output row references a parent that isn’t present on the plan.Add the parent transaction / action-trigger row before its child rows.
Element not found for deletionDelete = Yes but the target entity doesn’t exist.Verify the keys identify an existing record, or remove the delete flag.
Create plan / add element failed (Oracle message)The Oracle Quality API rejected the operation.Read the appended Oracle message, correct the data, and re-upload.
select
null action_,
null status_,
null message_,
null modified_columns_,
mp.organization_code,
qp.name plan_name,
qp.description plan_description,
xxen_util.meaning(qp.plan_type_code,'COLLECTION_PLAN_TYPE',3) plan_type,
qp.effective_from,
qp.effective_to,
xxen_util.meaning(decode(qp.multirow_flag,1,'Y','N'),'YES_NO',0) multirow,
to_char(null) transaction_description,
to_char(null) mandatory_collection,
to_char(null) background_collection,
to_char(null) transaction_enabled,
to_char(null) collection_trigger,
to_char(null) trigger_operator,
to_char(null) trigger_low_value,
to_char(null) trigger_high_value,
to_char(null) element_name,
to_number(null) prompt_sequence,
to_char(null) element_prompt,
to_char(null) element_enabled,
to_char(null) element_mandatory,
to_char(null) default_value,
to_char(null) displayed,
to_char(null) read_only,
to_char(null) ss_poplist,
to_char(null) information,
to_number(null) decimal_precision,
to_char(null) uom_code,
to_char(null) value_code,
to_char(null) value_description,
to_number(null) action_trigger_seq,
to_char(null) action_operator,
to_char(null) action_low_value,
to_char(null) action_high_value,
to_char(null) action_name,
to_char(null) assign_type,
to_char(null) assigned_element,
to_char(null) alert_action_set,
to_char(null) alert_action,
to_char(null) status_code,
to_char(null) action_message,
to_char(null) output_variable,
to_char(null) output_element,
null delete_record,
1 row_type,
qp.plan_id
from
qa_plans qp,
mtl_parameters mp
where
qp.organization_id=mp.organization_id and
1=1
union all
select
null action_,
null status_,
null message_,
null modified_columns_,
mp.organization_code,
qp.name plan_name,
qp.description plan_description,
xxen_util.meaning(qp.plan_type_code,'COLLECTION_PLAN_TYPE',3) plan_type,
qp.effective_from,
qp.effective_to,
xxen_util.meaning(decode(qp.multirow_flag,1,'Y','N'),'YES_NO',0) multirow,
qptv.transaction_description,
xxen_util.meaning(decode(qpt.mandatory_collection_flag,1,'Y','N'),'YES_NO',0) mandatory_collection,
xxen_util.meaning(decode(qpt.background_collection_flag,1,'Y','N'),'YES_NO',0) background_collection,
xxen_util.meaning(decode(qpt.enabled_flag,1,'Y','N'),'YES_NO',0) transaction_enabled,
to_char(null) collection_trigger,
to_char(null) trigger_operator,
to_char(null) trigger_low_value,
to_char(null) trigger_high_value,
to_char(null) element_name,
to_number(null) prompt_sequence,
to_char(null) element_prompt,
to_char(null) element_enabled,
to_char(null) element_mandatory,
to_char(null) default_value,
to_char(null) displayed,
to_char(null) read_only,
to_char(null) ss_poplist,
to_char(null) information,
to_number(null) decimal_precision,
to_char(null) uom_code,
to_char(null) value_code,
to_char(null) value_description,
to_number(null) action_trigger_seq,
to_char(null) action_operator,
to_char(null) action_low_value,
to_char(null) action_high_value,
to_char(null) action_name,
to_char(null) assign_type,
to_char(null) assigned_element,
to_char(null) alert_action_set,
to_char(null) alert_action,
to_char(null) status_code,
to_char(null) action_message,
to_char(null) output_variable,
to_char(null) output_element,
null delete_record,
2 row_type,
qp.plan_id
from
qa_plans qp,
mtl_parameters mp,
qa_plan_transactions qpt,
qa_plan_transactions_v qptv
where
qp.organization_id=mp.organization_id and
qp.plan_id=qpt.plan_id and
qpt.plan_transaction_id=qptv.plan_transaction_id and
1=1
union all
select
null action_,
null status_,
null message_,
null modified_columns_,
mp.organization_code,
qp.name plan_name,
qp.description plan_description,
xxen_util.meaning(qp.plan_type_code,'COLLECTION_PLAN_TYPE',3) plan_type,
qp.effective_from,
qp.effective_to,
xxen_util.meaning(decode(qp.multirow_flag,1,'Y','N'),'YES_NO',0) multirow,
qptv.transaction_description,
xxen_util.meaning(decode(qpt.mandatory_collection_flag,1,'Y','N'),'YES_NO',0) mandatory_collection,
xxen_util.meaning(decode(qpt.background_collection_flag,1,'Y','N'),'YES_NO',0) background_collection,
xxen_util.meaning(decode(qpt.enabled_flag,1,'Y','N'),'YES_NO',0) transaction_enabled,
qctdv.collection_trigger_description collection_trigger,
xxen_util.meaning(qpct.operator,'QA_OPERATOR',700) trigger_operator,
qpct.low_value trigger_low_value,
qpct.high_value trigger_high_value,
to_char(null) element_name,
to_number(null) prompt_sequence,
to_char(null) element_prompt,
to_char(null) element_enabled,
to_char(null) element_mandatory,
to_char(null) default_value,
to_char(null) displayed,
to_char(null) read_only,
to_char(null) ss_poplist,
to_char(null) information,
to_number(null) decimal_precision,
to_char(null) uom_code,
to_char(null) value_code,
to_char(null) value_description,
to_number(null) action_trigger_seq,
to_char(null) action_operator,
to_char(null) action_low_value,
to_char(null) action_high_value,
to_char(null) action_name,
to_char(null) assign_type,
to_char(null) assigned_element,
to_char(null) alert_action_set,
to_char(null) alert_action,
to_char(null) status_code,
to_char(null) action_message,
to_char(null) output_variable,
to_char(null) output_element,
null delete_record,
3 row_type,
qp.plan_id
from
qa_plans qp,
mtl_parameters mp,
qa_plan_transactions qpt,
qa_plan_transactions_v qptv,
qa_plan_collection_triggers qpct,
qa_txn_collection_triggers_v qctdv
where
qp.organization_id=mp.organization_id and
qp.plan_id=qpt.plan_id and
qpt.plan_transaction_id=qptv.plan_transaction_id and
qpt.plan_transaction_id=qpct.plan_transaction_id and
qpct.collection_trigger_id=qctdv.collection_trigger_id and
qpt.transaction_number=qctdv.transaction_number and
1=1
union all
select
null action_,
null status_,
null message_,
null modified_columns_,
mp.organization_code,
qp.name plan_name,
qp.description plan_description,
xxen_util.meaning(qp.plan_type_code,'COLLECTION_PLAN_TYPE',3) plan_type,
qp.effective_from,
qp.effective_to,
xxen_util.meaning(decode(qp.multirow_flag,1,'Y','N'),'YES_NO',0) multirow,
to_char(null) transaction_description,
to_char(null) mandatory_collection,
to_char(null) background_collection,
to_char(null) transaction_enabled,
to_char(null) collection_trigger,
to_char(null) trigger_operator,
to_char(null) trigger_low_value,
to_char(null) trigger_high_value,
qc.name element_name,
qpc.prompt_sequence,
qpc.prompt element_prompt,
xxen_util.meaning(decode(qpc.enabled_flag,1,'Y','N'),'YES_NO',0) element_enabled,
xxen_util.meaning(decode(qpc.mandatory_flag,1,'Y','N'),'YES_NO',0) element_mandatory,
qpc.default_value,
xxen_util.meaning(decode(qpc.displayed_flag,1,'Y','N'),'YES_NO',0) displayed,
xxen_util.meaning(decode(qpc.read_only_flag,1,'Y','N'),'YES_NO',0) read_only,
xxen_util.meaning(decode(qpc.ss_poplist_flag,1,'Y','N'),'YES_NO',0) ss_poplist,
xxen_util.meaning(decode(qpc.information_flag,1,'Y','N'),'YES_NO',0) information,
qpc.decimal_precision,
qpc.uom_code,
to_char(null) value_code,
to_char(null) value_description,
to_number(null) action_trigger_seq,
to_char(null) action_operator,
to_char(null) action_low_value,
to_char(null) action_high_value,
to_char(null) action_name,
to_char(null) assign_type,
to_char(null) assigned_element,
to_char(null) alert_action_set,
to_char(null) alert_action,
to_char(null) status_code,
to_char(null) action_message,
to_char(null) output_variable,
to_char(null) output_element,
null delete_record,
4 row_type,
qp.plan_id
from
qa_plans qp,
mtl_parameters mp,
qa_plan_chars qpc,
qa_chars qc
where
qp.organization_id=mp.organization_id and
qpc.plan_id=qp.plan_id and
qpc.char_id=qc.char_id and
1=1
union all
select
null action_,
null status_,
null message_,
null modified_columns_,
mp.organization_code,
qp.name plan_name,
qp.description plan_description,
xxen_util.meaning(qp.plan_type_code,'COLLECTION_PLAN_TYPE',3) plan_type,
qp.effective_from,
qp.effective_to,
xxen_util.meaning(decode(qp.multirow_flag,1,'Y','N'),'YES_NO',0) multirow,
to_char(null) transaction_description,
to_char(null) mandatory_collection,
to_char(null) background_collection,
to_char(null) transaction_enabled,
to_char(null) collection_trigger,
to_char(null) trigger_operator,
to_char(null) trigger_low_value,
to_char(null) trigger_high_value,
qc.name element_name,
qpc.prompt_sequence,
qpc.prompt element_prompt,
xxen_util.meaning(decode(qpc.enabled_flag,1,'Y','N'),'YES_NO',0) element_enabled,
xxen_util.meaning(decode(qpc.mandatory_flag,1,'Y','N'),'YES_NO',0) element_mandatory,
qpc.default_value,
xxen_util.meaning(decode(qpc.displayed_flag,1,'Y','N'),'YES_NO',0) displayed,
xxen_util.meaning(decode(qpc.read_only_flag,1,'Y','N'),'YES_NO',0) read_only,
xxen_util.meaning(decode(qpc.ss_poplist_flag,1,'Y','N'),'YES_NO',0) ss_poplist,
xxen_util.meaning(decode(qpc.information_flag,1,'Y','N'),'YES_NO',0) information,
qpc.decimal_precision,
qpc.uom_code,
qpcvl.short_code value_code,
qpcvl.description value_description,
to_number(null) action_trigger_seq,
to_char(null) action_operator,
to_char(null) action_low_value,
to_char(null) action_high_value,
to_char(null) action_name,
to_char(null) assign_type,
to_char(null) assigned_element,
to_char(null) alert_action_set,
to_char(null) alert_action,
to_char(null) status_code,
to_char(null) action_message,
to_char(null) output_variable,
to_char(null) output_element,
null delete_record,
5 row_type,
qp.plan_id
from
qa_plans qp,
mtl_parameters mp,
qa_plan_chars qpc,
qa_chars qc,
qa_plan_char_value_lookups qpcvl
where
qp.organization_id=mp.organization_id and
qpc.plan_id=qp.plan_id and
qpc.char_id=qc.char_id and
qpcvl.plan_id=qpc.plan_id and
qpcvl.char_id=qpc.char_id and
1=1
union all
select
null action_,
null status_,
null message_,
null modified_columns_,
mp.organization_code,
qp.name plan_name,
qp.description plan_description,
xxen_util.meaning(qp.plan_type_code,'COLLECTION_PLAN_TYPE',3) plan_type,
qp.effective_from,
qp.effective_to,
xxen_util.meaning(decode(qp.multirow_flag,1,'Y','N'),'YES_NO',0) multirow,
to_char(null) transaction_description,
to_char(null) mandatory_collection,
to_char(null) background_collection,
to_char(null) transaction_enabled,
to_char(null) collection_trigger,
to_char(null) trigger_operator,
to_char(null) trigger_low_value,
to_char(null) trigger_high_value,
qc.name element_name,
qpc.prompt_sequence,
qpc.prompt element_prompt,
xxen_util.meaning(decode(qpc.enabled_flag,1,'Y','N'),'YES_NO',0) element_enabled,
xxen_util.meaning(decode(qpc.mandatory_flag,1,'Y','N'),'YES_NO',0) element_mandatory,
qpc.default_value,
xxen_util.meaning(decode(qpc.displayed_flag,1,'Y','N'),'YES_NO',0) displayed,
xxen_util.meaning(decode(qpc.read_only_flag,1,'Y','N'),'YES_NO',0) read_only,
xxen_util.meaning(decode(qpc.ss_poplist_flag,1,'Y','N'),'YES_NO',0) ss_poplist,
xxen_util.meaning(decode(qpc.information_flag,1,'Y','N'),'YES_NO',0) information,
qpc.decimal_precision,
qpc.uom_code,
to_char(null) value_code,
to_char(null) value_description,
qpcat.trigger_sequence action_trigger_seq,
xxen_util.meaning(qpcat.operator,'QA_OPERATOR',700) action_operator,
qpcat.low_value_other action_low_value,
qpcat.high_value_other action_high_value,
to_char(null) action_name,
to_char(null) assign_type,
to_char(null) assigned_element,
to_char(null) alert_action_set,
to_char(null) alert_action,
to_char(null) status_code,
to_char(null) action_message,
to_char(null) output_variable,
to_char(null) output_element,
null delete_record,
6 row_type,
qp.plan_id
from
qa_plans qp,
mtl_parameters mp,
qa_plan_chars qpc,
qa_chars qc,
qa_plan_char_action_triggers qpcat
where
qp.organization_id=mp.organization_id and
qpc.plan_id=qp.plan_id and
qpc.char_id=qc.char_id and
qpcat.plan_id=qpc.plan_id and
qpcat.char_id=qpc.char_id and
1=1
union all
select
null action_,
null status_,
null message_,
null modified_columns_,
mp.organization_code,
qp.name plan_name,
qp.description plan_description,
xxen_util.meaning(qp.plan_type_code,'COLLECTION_PLAN_TYPE',3) plan_type,
qp.effective_from,
qp.effective_to,
xxen_util.meaning(decode(qp.multirow_flag,1,'Y','N'),'YES_NO',0) multirow,
to_char(null) transaction_description,
to_char(null) mandatory_collection,
to_char(null) background_collection,
to_char(null) transaction_enabled,
to_char(null) collection_trigger,
to_char(null) trigger_operator,
to_char(null) trigger_low_value,
to_char(null) trigger_high_value,
qc.name element_name,
qpc.prompt_sequence,
qpc.prompt element_prompt,
xxen_util.meaning(decode(qpc.enabled_flag,1,'Y','N'),'YES_NO',0) element_enabled,
xxen_util.meaning(decode(qpc.mandatory_flag,1,'Y','N'),'YES_NO',0) element_mandatory,
qpc.default_value,
xxen_util.meaning(decode(qpc.displayed_flag,1,'Y','N'),'YES_NO',0) displayed,
xxen_util.meaning(decode(qpc.read_only_flag,1,'Y','N'),'YES_NO',0) read_only,
xxen_util.meaning(decode(qpc.ss_poplist_flag,1,'Y','N'),'YES_NO',0) ss_poplist,
xxen_util.meaning(decode(qpc.information_flag,1,'Y','N'),'YES_NO',0) information,
qpc.decimal_precision,
qpc.uom_code,
to_char(null) value_code,
to_char(null) value_description,
qpcat.trigger_sequence action_trigger_seq,
xxen_util.meaning(qpcat.operator,'QA_OPERATOR',700) action_operator,
qpcat.low_value_other action_low_value,
qpcat.high_value_other action_high_value,
qa.description action_name,
decode(qpca.assign_type,'F','Formula','S','SQL Statement') assign_type,
qc_assigned.name assigned_element,
alas.name alert_action_set,
ala.name alert_action,
qpca.status_code,
qpca.message action_message,
to_char(null) output_variable,
to_char(null) output_element,
null delete_record,
7 row_type,
qp.plan_id
from
qa_plans qp,
mtl_parameters mp,
qa_plan_chars qpc,
qa_chars qc,
qa_plan_char_action_triggers qpcat,
qa_plan_char_actions qpca,
qa_actions qa,
qa_chars qc_assigned,
alr_action_sets alas,
alr_actions ala
where
qp.organization_id=mp.organization_id and
qpc.plan_id=qp.plan_id and
qpc.char_id=qc.char_id and
qpcat.plan_id=qpc.plan_id and
qpcat.char_id=qpc.char_id and
qpca.plan_char_action_trigger_id=qpcat.plan_char_action_trigger_id and
qpca.action_id=qa.action_id and
qpca.assigned_char_id=qc_assigned.char_id(+) and
qpca.alr_action_set_id=alas.action_set_id(+) and
qpca.alr_action_id=ala.action_id(+) and
1=1
union all
select
null action_,
null status_,
null message_,
null modified_columns_,
mp.organization_code,
qp.name plan_name,
qp.description plan_description,
xxen_util.meaning(qp.plan_type_code,'COLLECTION_PLAN_TYPE',3) plan_type,
qp.effective_from,
qp.effective_to,
xxen_util.meaning(decode(qp.multirow_flag,1,'Y','N'),'YES_NO',0) multirow,
to_char(null) transaction_description,
to_char(null) mandatory_collection,
to_char(null) background_collection,
to_char(null) transaction_enabled,
to_char(null) collection_trigger,
to_char(null) trigger_operator,
to_char(null) trigger_low_value,
to_char(null) trigger_high_value,
qc.name element_name,
qpc.prompt_sequence,
qpc.prompt element_prompt,
xxen_util.meaning(decode(qpc.enabled_flag,1,'Y','N'),'YES_NO',0) element_enabled,
xxen_util.meaning(decode(qpc.mandatory_flag,1,'Y','N'),'YES_NO',0) element_mandatory,
qpc.default_value,
xxen_util.meaning(decode(qpc.displayed_flag,1,'Y','N'),'YES_NO',0) displayed,
xxen_util.meaning(decode(qpc.read_only_flag,1,'Y','N'),'YES_NO',0) read_only,
xxen_util.meaning(decode(qpc.ss_poplist_flag,1,'Y','N'),'YES_NO',0) ss_poplist,
xxen_util.meaning(decode(qpc.information_flag,1,'Y','N'),'YES_NO',0) information,
qpc.decimal_precision,
qpc.uom_code,
to_char(null) value_code,
to_char(null) value_description,
qpcat.trigger_sequence action_trigger_seq,
xxen_util.meaning(qpcat.operator,'QA_OPERATOR',700) action_operator,
qpcat.low_value_other action_low_value,
qpcat.high_value_other action_high_value,
qa.description action_name,
decode(qpca.assign_type,'F','Formula','S','SQL Statement') assign_type,
qc_assigned.name assigned_element,
alas.name alert_action_set,
ala.name alert_action,
qpca.status_code,
qpca.message action_message,
qpcao.token_name output_variable,
qc2.name output_element,
null delete_record,
8 row_type,
qp.plan_id
from
qa_plans qp,
mtl_parameters mp,
qa_plan_chars qpc,
qa_chars qc,
qa_plan_char_action_triggers qpcat,
qa_plan_char_actions qpca,
qa_actions qa,
qa_plan_char_action_outputs qpcao,
qa_chars qc2,
qa_chars qc_assigned,
alr_action_sets alas,
alr_actions ala
where
qp.organization_id=mp.organization_id and
qpc.plan_id=qp.plan_id and
qpc.char_id=qc.char_id and
qpcat.plan_id=qpc.plan_id and
qpcat.char_id=qpc.char_id and
qpca.plan_char_action_trigger_id=qpcat.plan_char_action_trigger_id and
qpca.action_id=qa.action_id and
qpcao.plan_char_action_id=qpca.plan_char_action_id and
qpcao.char_id=qc2.char_id and
qpca.assigned_char_id=qc_assigned.char_id(+) and
qpca.alr_action_set_id=alas.action_set_id(+) and
qpca.alr_action_id=ala.action_id(+) and
1=1
Parameter NameSQL textValidation
Upload Mode
:p_upload_mode like '%' || xxen_upload.action_update
LOV
Organization
mp.organization_code=:p_organization
LOV
Plan Type
qp.plan_type_code=:p_plan_type
LOV
Collection Plan
qp.name=:p_plan
LOV
Collection Plan From
qp.name>=:p_plan_from
LOV
Collection Plan To
qp.name<=:p_plan_to
LOV
Download
Blitz Report™