QA Collection Plan Upload
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:
| Row | What it defines |
|---|---|
| Plan Header | The plan (name, type, description, effective dates, multirow). |
| Transaction | A quality transaction the plan collects against. |
| Collection Trigger | A trigger condition on a transaction. |
| Element | A collection element assigned to the plan, with its prompt and flags. |
| Element Value | An allowed value for an element. |
| Action Trigger / Action / Action Output | Conditional 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:
| Parameter | Purpose |
|---|---|
| Upload Mode | Create or Create, Update. Default is Create. |
| Organization / Plan Type / Collection Plan / Plan From / Plan To | Restrict 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
| Message | Cause | What to do |
|---|---|---|
| Plan Type is required for new plans | Creating a new plan header with no Plan Type. | Fill the Plan Type column for header rows that create a plan. |
| Plan not found | A 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 found | A 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 deletion | Delete = 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 Name | SQL text | Validation | |
|---|---|---|---|
| Upload Mode |
| LOV | |
| Organization |
| LOV | |
| Plan Type |
| LOV | |
| Collection Plan |
| LOV | |
| Collection Plan From |
| LOV | |
| Collection Plan To |
| LOV |