In previous releases of Oracle Order Entry,
a feature called Security Rules enabled you to control whether changes could be
made to certain characteristics of an order after certain cycle steps had been
reached. In Release 11i Order Management, Oracle has introduced a new security
paradigm called Processing Constraints, which offers somewhat differing
functionality. Processing Constraints allow Order Management users the ability
to control changes to sales orders, at all stages of its order or line
workflows.
Reasons to limit changes to existing orders can be:
- Changing data on an entity that would make the data inconsistent
and difficult to audit. For example, changing the price list on an order
already invoiced. Oracle Applications generally enforces these constraints
through seeded processing constraints or within the operation of forms and
processes.
- Changing data on an entity that has effected downstream activities
that are difficult or costly to undo. For example, changing options on an
ATO configuration order if the item is already built. You generally
determine the business need for these constraints and, to express them,
create processing constraints.
Processing Constraints also provide:
- The ability to control who can make changes based on
Responsibility. A constraint (rule) may apply to all responsibilities, a
list of constrained responsibilities, or to all except a list of
authorized responsibilities.
- The ability to define constraining conditions based on the state of
related objects (for example, define a processing constraint for order
lines based upon the current status of the order).
- The ability to control order changes based on field values
- The ability to call custom PL/SQL code to determine whether a
processing constraint condition evaluates to true.
- The ability to constrain operations at any point in the order or
line process flow. In prior releases of Oracle Order Entry, you could only
control operations for certain hard-coded cycle actions.
A processing constraint includes these
components:
- Entity
- Operation
- Attribute
If
an attribute is not assigned to a constraint, the constraint prevents you from
updating all attributes on the entity.
- Group Number
- Conditions
- User Action
- Validation Entity
- Scope
- Record Set
- Modifier
- Validation Template
- Applicable To (Optional, user responsibility)
You can define processing constraints for entity
or attributes. Entities include regions on the Sales Orders
window, such as Order, Line, Order Price Adjustments, Line Price Adjustments,
Order Sales Credits, and Line Sales Credits. Attributes include
individual fields (of a particular entity), such as Warehouse, Ship To
Location, or Agreement.
As you use Order Management, processing
constraints are evaluated for any entity you try to cancel, delete,
create, split, or update. If you are trying to modify an order line, Order
Management evaluates the processing constraints for the Line entity.
You can relate a given role to the highest
state of the order that changes can be made. For example, the order entry clerk
cannot change an order when it has been acknowledged by customer, but the order
entry supervisor can change the order until it has shipped. These constraints
may apply to the entire order or individual attributes.
For a complete list of processing
constraints that are available in the Order Management application, see the
Oracle Order Management Suite Implementation Manual, Release 11i,
Appendix G.
Processing Constraint Terminology
Entity
Processing Constraints enable you to define
constraints for entities such as order header, order line, order/line price
adjustments, and order/line sales credits.
Entities can consist of a group of related
attributes that similarly correspond to a database table or Order Management
form. Entities that can be managed with Processing Constraints are:
- Line Price Adjustment
- Line Sales Credit
- Order Header
- Order Line
- Order Price Adjustment
- Order Sales Credit
Operation
You can define processing constraints to
prevent users from performing the operations of Cancel, Create, Delete, Update,
and Split on your orders and returns. You can prevent Update on attributes.
You can effectively assign a general Update rule to all attributes
associated with a particular entity, as a data entry tool. For example,
given a set of conditions you may not allow a user to create a new order line.
Attribute
An attribute is considered a field or
column that belongs to an entity. For example, ordered unit of measure
is an attribute of the 'Order Line' entity
Select an attribute when the operation is
UPDATE or leave the field blank to prevent update of all attributes.
Action
In addition to completely forbidding an
action (Not Allowed), you can allow certain actions such as Update or Delete,
but maintain an Audit Trail of the changes. To indicate you want to keep an
Audit Trail only when a reason is required (Requires Reason with History) or
not required (Requires History).
The Requires Reason and History
action is applicable for the cancel or update operations to the Order
Quantity attribute on the line, only.
System Changes
System changes are used for defaulting and
enabling the system to re-default attribute values whenever the defaulting
source changes. A changed attribute value would default even if constraint
conditions are applicable. This is only applicable for attribute or filed level
UPDATE operations.
User Changes
Users changes can be used to indicate
whether an attribute level constraint applies to the user only for record
updates or will the constraint apply even if the attribute value is modified by
the user while the record is being created.
- Select Never after Insert, (default), to indicate that a
user may modify this field only if the entity has not yet been saved to
the database. This is for attribute for field level update operations.
- Select Never so that an attribute value can never be updated
by a user.
For example, setting System Changes to
'Always' and User Changes to 'Never' sets up a constraint where this attribute
value can never be edited by the user while constraint conditions are
applicable; however the system can always default or re-default a value for
this attribute.
Conditions
The condition of your processing constraint
is like an If-Then statement. Order Management checks for occurrences of
the condition in your constraint while users are cancelling, deleting,
creating, splitting lines, and updating orders and returns. When the condition
or conditions of a processing constraint are met, Order Management prevents the
operation of that constraint.
Group Number
Each processing constraint condition has a
number that indicates whether the condition is independent of all other
conditions, or whether it should be considered only when another condition is
also true. Use this number to create and/or conditions. Create an And
condition by using the same group number for each row in the condition, or an Or
condition by using a different group number for each row. Conditions with the
same number must both be true for the processing constraint to apply.
For conditions with different numbers, at
least one must be true for the processing constraint to apply. You can create
several And conditions and Or conditions for one object or
attribute.
Attention: Order Management does not allow you to
enter a number equal to any number already used in the Number field of a system
processing constraint condition. This would, in effect, create an And
statement with a system processing constraint, and could endanger data
integrity.
Scope
Scope indicates whether you want Order
Management to evaluate the condition of the constraint against any or all
entities in the record sets.
- If the Scope is Any the condition holds true if any
line within the record set meets the condition.
- If the scope is All, all lines in the record set must meet the
condition for the entire condition to be evaluated as True.
Validation Entity
The validation entity is the entity on
which the constraint condition is based on. This could be same as the entity on
the constraint or it could be an entity related to the constrained entity. For
example, a constraint might be defined for UPDATE of Ship To on Order Header
entity but condition needs to be if Any Order Line has been shipped. Thus
validation entity is Order Line while constrained entity is Order Header.
Record Sets
A record set is a set of records that are
bound by common attributes such as invoice sets. You can define constraining
conditions and specify a record set to be validated for a given condition as
defined by its validation template.
Modifier / Not
You can use a modifier in the condition of
a processing constraint to define a negative condition. For example, if the
condition is Booked and the Modifier/Not check box is checked, then the
condition is evaluated as NOT booked.
Validation Template
The validation template defines how the
condition is to be evaluated. The template could be based on a workflow state,
field value or if it is complex, it could also be based on the output of a
validation API.
API based validation templates are not
available if the constrained entity is different from the validation entity on
the condition. Validation templates are not available even if the record set
being used is anything other than the primary key record set.
For example,
API based Validation template Pick
Released has been set up for entity Order Line. If you set up a constraint
for attribute Ship To on Order Line, the validation template Pick
Released is available but for a constraint on attribute Ship To on
Order Header, Pick Released will not be available.
For attribute Ship To on Order Line,
if the constraint condition uses any record set (ATO Configuration, for
example) other than the primary key record set Order Line, the
validation template Pick Released will not be available.
Special
Considerations
Rules That Cannot Apply
If you define a constraint for Create on an
entity where the condition would be applicable on the same existing
entity, the constraint will never apply. If the condition only occurs for
existing entities, but they are already inserted, the constraint cannot be
enforced and will not be applied. For example, a rule for Insert on a Line
where the condition is Ship Confirm is unenforceable because a line is already
inserted if that condition exists.
Processing Constraints Must Be Cooperative
at Various Entity Levels
Order Management evaluates processing
constraints for an entity when you are trying to perform an action on that
entity. If you have a processing constraint on a lower-level entity (such as
Line), and you try to perform an operation on the higher-level entity (such as
Order), the Line level constraint is not evaluated. Therefore, when defining
processing constraints, make sure that your higher-level entity constraints
cooperate with your lower-level entity constraints so that all levels are
synchronized. For example, if you have a constraint for the Line entity on the
operation of Delete, define a comparable constraint for the Order entity so
that you can cover all delete situations.
Defining Processing
Constraints
This describes how to set up your
processing constraints based on validation conditions in validation templates
(for example, Booked = Yes) which are evaluated for groups of records (record
sets).
Prerequisites
Become familiar with the Processing
Constraints that are delivered with the Order Management Application. See:
Oracle Order Management Suite Implementation Manual, Release 11i, Order
Management Processing Constraints Appendix.
- You must define your validation templates and record sets:
Defining Validation
Templates
Order Management provides you the ability
to define your own validation conditions by the use of validation templates. A
validation template names a condition and defines the semantics of how to
validate that condition. Validation templates can be used in the processing
constraints framework to specify the constraining conditions for a given
constraint. These conditions are based on:
- where the entity is in its workflow
- the state of attributes on an entity
- any other validation condition that cannot be modeled using the
above methods
API based validation templates are not
available if constrained entity is different from the entity for which the
validation template has been defined (or the Validation templates are not available
even if the record set being used is anything other than the primary key record
set).
For example,
API based Validation template Pick
Released has been set up for entity Order Line. If you set up a constraint
for attribute Ship To on Order Line, the validation template Pick
Released is available but for a constraint on attribute Ship To on
Order Header, Pick Released will not be available.
For attribute Ship To on Order Line,
if the constraint condition uses any record set (ATO Configuration, for example)
other than the primary key record set Order Line, the validation
template Pick Released will not be available.
To define a validation
template:
- Navigate to Validation Templates window.
The
Validation Templates window displays.
- Select the Entity for which the condition is to be defined.
- Enter a Template Name for the condition.
- Enter a name in the Short Name field for the condition.
- Optionally, enter a Description for the constraint condition.
- Select the Validation Type to be performed by the condition. Select
from:
- Wf: (validation is based on the workflow status of this entity):
- Select the Activity for the condition.
- Select the Activity Status for the condition. Select from: Active,
Complete, Error, Notified, and Suspended.
- Select the activity Result for the condition.
- Save your work.
- API (validation is completed through an Application Program
Interface):
- Select the PL/SQL Package you wish to interface with the
constraint condition.
- Enter the Procedure name of the API.
- Save your work.
- Col (validation is based on the values of database columns on this
entity):
- Select the Attribute Column name on the entity for the constraint
condition.
- Select the Validation Operation for the constraint condition.
Select from: = (Equal To), <> (Not Equal To), Is NULL, Is Not NULL.
- Select the Value String you want to validate against the value of
the column.
Note: You can add more than one attribute, value pair,
otherwise all pairs will be added together in the validation.
- Save your work.
- When you have created new validation templates or record sets, you
will need to submit the Create Validation Packages concurrent program from
the Tools menu to submit a concurrent request to create a validation
package for all new or modified validation templates and record sets that
may constitute a permitted validation combination. After the request
completes, all validation templates that processed successfully will be
visible in the list of values in the Processing Constraints window.
Defining Record
Sets
The Records Sets feature in Order
Management is used to define and maintain record set definitions for processing
constraints. A record set is a set of records that are bound by common
attributes such as ship sets. You can define constraining conditions and
specify a record set to be validated for a given condition as defined by its
validation template.
To define a record
set:
- Navigate to the Record Sets window.
The
Record Sets window displays.
- Select the Entity for which you are defining a record set.
The
Seeded check box is enabled if the system automatically defines the name of the
record set. This check box is non updateable.
- Enter the name of the Record Set.
- Enter the Short Name for the record set.
Note: You cannot modify
the Short Name once it has been entered.
- Optionally, enter a Description for the record set.
The
Based On Primary Key check box is used to indicate the record set that is based
on the primary key columns for the entity. There can only be one primary record
set per entity. These records are seeded and cannot be updated.
- Select the name of the columns that should be matched from the
validated record in the Matched Columns For Record Selection region.
For
example, if you define a Ship Set record set, the matching columns will be the
Header ID and the Ship Set number.
- Save your work.
- Select the Create Validation Packages concurrent program from the
Tools menu to submit a concurrent request to create a validation package
for all modified validation templates and record sets that may constitute
a permitted validation combination.
Only
after the request completes, the created validation template is visible in the
list of values in the Processing Constraints window.
- Save your work.
To set up processing constraints
- Navigate to the Define Processing Constraints form.
The
Define Processing Constraints window appears.
- Query Application for Oracle Order Management and Entity for the
entity for which you want the processing constraint, for example, Order
Header or Order Line.
- Move to the Constraints region. In the top area of the region,
enter each constraint in a line.
- In Operation, select the operation that you want to constrain.
- Select an Attribute to constraint, based upon the operation
selected.
- If you select the value UPDATE for the Operation field and you do
not select an Attribute value, the constraint allows no update to any
field of the entity, by any user.
- In User Action, select one of the following:
- Not Allowed: You cannot perform the constrained operation.
- Require Reason and History: You can perform the operation only if
you enter a reason. Use this with Operation CANCEL, Operation UPDATE if
the constrained attribute is Ordered Quantity only, and for recording
Audit Trail history when requiring a reason for an attribute change.
- Requires History: You can perform the operation and will not be
prompted to enter a Reason. You still have the option to enter both a
Reason and Comment, and if you do so, the information is recorded. Use the
value for enabling Audit Trail history to be recorded without a reason for
an attribute change.
- Select a value for the System Changes field. The value selected in
this field determines if system changes are allowed, despite the
constraint. Choose from:
- Always: System changes allowed
- Never after Insert: System changes allowed if the entry has not
been saved to the database.
- Select a value for the User Changes Field. Choose from:
- Never: The user is always constrained
- Never after Insert: The user is constrained after the entry is
saved to the database
- Seeded Check Box - If a Constraint has the seeded check box
selected, you cannot update the constraint definition.
- Move to the Conditions tabbed region. Enter a constraining
condition for the selected constraint. The selected constraint is
determined by the previous cursor position prior to moving to the
Conditions tabbed region.
- In Group Number field, enter a numeric value according to the
following principles:
- For conditions that should together evaluate to TRUE (AND
conditions), enter the same group number. The constraint applies if the
entity in question meets all of the conditions defined.
- For conditions that should together evaluate to OR (OR conditions),
enter a different number for each record. The constraint applies if the
entity in question meets any one of the conditions defined.
- In Scope, if the record set applies to multiple records, indicate
the scope of evaluation of the record set for this condition. An example
of a record set that applies to multiple records is the record set of all
of the lines of a sales order. Select one of the following:
- Any: The condition is satisfied if one of the records meets it,
for example, the condition is satisfied if one of the sales order lines
is booked.
- All: The condition is satisfied if all of the records meet it, for
example, the condition is satisfied if all of the sales order lines are
booked
- In Validation Entity, enter the entity for which the condition is
validated. You can enter the same entity as the constraint (at the top of
the Constraints region) or you can enter an entity related to the
constraint. For example, if the constraint is against Order Header,
Validation Entity can be Order Line.
- In Record Set, select the record set that corresponds to the
entities to which the constraints process should apply the condition. For
example, if you enter the order line record set Line, the condition is
evaluated against the order line in question. If you enter the order line
record set Order, the condition is evaluated against any or all (depending
on the scope) lines of the order in question.
If
Validation Entity is different from Entity (at the top of the form), you can
only select record sets based on the primary key of the validation entity.
- Select the Not check box (the negative condition modifier) to
direct the constraints processing to evaluate the NOT condition of
Validation Template. For example, if you expect to select Validation
Template Booked, selecting NOT creates the condition of not booked for the
constraint.
- In Validation Template, select a validation template. This item
specifies the condition being evaluated.
- Constraint Condition Seeded check box:
- If a Constraint has the seeded check box selected, and the
constraint condition check box is also selected, you cannot update the
constraint condition.
- If a Constraint has the seeded check box selected, and the
constraint condition check box is not selected, you can update the
constraint condition.
- In User Message, enter the trailing portion of the error message
that the constraint processing should display when the user violates the
constraint.
For
example, if the constraint was to not allow an update of the item field on the
order line if the line has been previously booked, constraints processing
displays the error message You are not allowed to update the item; the item is
booked.
- Move to the Applicable To tabbed region. In this region, specify to
whom the constraint applies.
- Select one of the following:
- All responsibilities: The constraint applies to all
responsibilities.
- Authorized responsibilities: The constraint applies to all responsibilities
except ones that you specify. Specify the excepted responsibilities in
the untitled lines below your selection.
- Constrained responsibilities: The constraint applies to the
responsibilities that you specify. Specify the excepted responsibilities
in the untitled lines below your selection.
- Save your work.
Processing Constraints
Example
To set up a processing constraint that
forbids update of the sales order header order type when there are order lines
created or when the order is booked, do the following after navigating to the
Define Processing Constraints form:
- Query in the top of the form:
- Application: Oracle Order Management
- Entity: Order Header
- Enter on a new line at top of the Constraints region:
- Operation: Update
- Attribute: Order Type
- User Action: Not allowed
- Leave System Changes, User Changes blank
- Clear Seeded check box
- Enter in the first line of the Conditions tabbed region:
- Group Number: 1
- Scope: Any
- Validation Entity: Order Header
- Record Set: Order
- Clear NOT check box
- Validation Template: Booked
- Clear Seeded checkbox
- User Message: the order is booked
- Enter in the second line of the Conditions tabbed region:
- Group Number 2
- Scope: Any
- Validation Entity: Order Header
- Record Set: Order
- Clear NOT checkbox
- Validation Template: Lines Exist
- Clear Seeded checkbox
- User Message: the order has lines
Processing
Constraints Usage
As you use Order Management, processing
constraints are evaluated for any entity you try to cancel, delete,
insert, split, or update. If you are trying to modify an order line, Order
Management evaluates the processing constraints for the Line entity.