Warning: Cannot modify header information - headers already sent by (output started at /home/globa75/public_html/bryanthompsononline/oracle/index.php:2) in /home/globa75/public_html/bryanthompsononline/oracle/wp-includes/feed-atom.php on line 9
Bryan Thompson - Oracle Consultant A forum for sharing Oracle knowledge! 2010-05-30T15:56:42Z WordPress http://www.bryanthompsononline.com/oracle/feed/atom/ bryan http://www.bryanthompsononline.com <![CDATA[Enhanced Change Management Functionality to the IR/ISO Process]]> http://www.bryanthompsononline.com/oracle/2010/05/29/enhanced-change-management-functionality-to-the-iriso-process/ 2010-05-30T15:56:42Z 2010-05-29T22:41:24Z In 12.1 and 12.1.2, Oracle has introduced long awaited improvements to the Internal Requisition/Internal Order (IR/ISO) process. As you may know, the Oracle IR/ISO has been a very rigid process, to the point where it has been deemed useless by many in the Oracle community.

One of the major downsides with using IR/ISO in 11i and the initial R12 releases was the change management process. Once an IR is approved it is essentially locked down and cannot be updated thereafter. Only cancelations were only allowed if the corresponding ISO was canceled. So if required dates needed to be changed on the IR, the corresponding ISO and the IR itself would have to be canceled and recreated with the proper dates. Terrible!

Additionally, changes to the ISO, which were restricted to cancelations and scheduled ship date changes, would not propagate automatically to the IR and would have to be done manually. In my opinion this was a huge gap in functionality. If cancelations or scheduled ship date changes were made to the ISO, and if the IR was not manually updated to reflect these changes, it would result in a conflicting supply/demand picture between the requesting and source organizations. In other words, the requesting organization would still see the supply quantity or required date of the IR it originally requested, while the source organization would be planning to the revised demand quantity or scheduled ship date on the ISO.

However, in 12.1 Oracle has finally provided some improvements. The “Improved Internal Requisition/Internal Order Change Management” functionality provides automated change control between the two transactions. In this release, changes made to the ISO can now be automatically applied to the IR. Better yet, the IR itself can also be modified after it has been approved, where changes are also propagated to the ISO. Workflow notifications can also be setup to notify the requesting or supplying organizations of such changes. No longer will there be a discrepancy between the IR and ISO!

Another nuisance of the IR/ISO process was that the changes to the IR or ISO could not be initiated from planning. So if planning had recommendations to change or cancel an IR, this would have to be done manually. Likewise, the ISO would also have to be manually updated to ensure both were in sync.

But in 12.1.2, Oracle has added integration between Advanced Supply Chain Planning (ASCP) and Purchasing to provide internal requisition management from the planner’s workbench. The “Release Recommendations for Internal Requisitions” functionality now allows the planner to release scheduled date and cancelations changes to the IR. This perfectly complements the change management functionality introduced in 12.1.

As a consultant who has seen the pain in implementing the IR/ISO process in the past, these are welcomed changes. I would highly recommend any customers who are in need of an integrated supply chain solution to consider these releases.

]]>
2
bryan http://www.bryanthompsononline.com <![CDATA[Does Oracle provide approval capabilities?]]> http://www.bryanthompsononline.com/oracle/?p=79 2009-07-28T03:21:17Z 2009-02-20T03:19:46Z Well, it depends.  Generally speaking, Oracle provides capabilities to integrate approvals within your business process.   However, depending on the module and transaction these capabilities can vary.  As an Order to Cash expert, I want to bring some clarity to what the out-of-the-box approval capabilities are within the Quoting and Order Management modules, then go into some of the enhancements I’ve implemented in the past to improve the functionality in some of these areas.

Approvals in Quoting

You may have heard of Oracle’s Approval Management (AME) module.  AME provides flexible, workflow-based approval capabilities and serves as a one-stop-shop for managing all fixed and dynamic approval hierarchies throughout Oracle EBS.

Lucky for you, the Quoting module is well integrated with AME functionality, allowing approval hierarchies to be dynamically built based on different types of transactional criteria such as operating unit, total quote amount, customer, etc.  Base approval lists can be built manually or can be associated with SQL statements to dynamically generate hierarchies based on employee data.  Quoting also provides security settings that allow skipping an approver in the hierarchy or bypassing the process entirely. 

Needless to say, the tight integration between the Quoting and AME modules provides great out-of-the-box approval functionality that is likely to meet or exceed your business requirements.

Approvals in Order Management

I wish I could say the same about Order Management (OM).  Unfortunately, there’s no out-of-the-box integration between OM and AME.  Compared to Quoting, the approval capabilities are limited and inconsistent depending on what type of transaction you’re performing. 

You’ve probably seen the Approver setups in the OM module by clicking on the “Approvals” button on the order type setup screen; however, these setups pertain only to Negotiations (OM’s version of quoting).  The configuration gives the impression that approval lists can be built for Fulfillment type transactions (orders), but Oracle hasn’t implemented these capabilities into any of the generic OM workflows.

Another setback with Approver setups in OM is that they’re assigned and dedicated to a transaction type.  This can cause issues if you have multiple facilities that each require their own set of approvers, but are under the same operating unit in Oracle and share the same set of order types.  The only work-around for this is to create a separate set of transaction types for each facility, but this can get ugly.  Additionally, the approval lists are fixed, sequential and do not provide any of the dynamic capabilities that are available in the AME module. 

It gets worse for return transactions.  The capabilities are limited to only allowing individual approvals and not approval hierarchies.  The generic return workflows in OM refer to a profile option that allows storage for only one approver.

Approval Enhancements

As you can guess, most of the enhancements I’ve designed and implemented have been to compensate for the limited approval functionality in OM.  Generally there are two approaches, each varying in complexity and produce different results.

As low-cost alternative with quick turnaround, I’ve provided enhancements to the seeded order and return workflows that incorporate the Approver setups in OM.  I say “quick” because Oracle already provides the necessary nuts and bolts to easily “plug” in the approver functionality with minimal customization.  Though the solution is low cost and quick, the functionality will still not provide all the capabilities of the AME module as I mentioned earlier.  However, this may suit your business fine depending upon your requirements.

A fancier approach I’ve taken is to integrate OM with the Approvals AME module entirely.  This way all the capabilities I spoke of earlier in the Quoting module are also made available to OM.  From a technical standpoint it’s definitely more involved than the first enhancement I mentioned, but if your business requires the flexibility, it certainly can provide a great return on investment.

]]>
5
bryan http://www.bryanthompsononline.com <![CDATA[Setting Organization Context in Oracle R12]]> http://www.bryanthompsononline.com/oracle/2009/02/03/setting-organization-context-in-oracle-r12/ 2009-07-28T03:28:00Z 2009-02-04T02:37:00Z For those of you who are trying to set the organization context within your SQL sessions or custom programs, there’s a new API you must call in R12.

The previous way of setting organization context in 11i was to execute the following statement:

dbms_application_info.set_client_info(ORG_ID);

However, in R12, the new way of setting the organization context is as follows:

mo_global.init(’AR’);
mo_global.set_policy_context(’S',ORG_ID);

The ‘S’ parameter indicates a single organization context. Replace ORG_ID with the ID of the operating unit you wish to use. You can also set a context for multiple operating units by setting the security profile. This is done by executing the following statement:

mo_global.set_org_access(NULL,SECURITY_PROFILE_ID,’ASO’);

Replace SECURITY_PROFILE_ID with the ID of the appropriate security profile.  ‘ASO’ represents the application short name associated with the responsibility you’ll be using.

]]>
0
bryan http://www.bryanthompsononline.com <![CDATA[Process Transformation & Change Management]]> http://www.bryanthompsononline.com/oracle/2008/09/18/process-transformation-change-management/ 2008-09-19T01:11:04Z 2008-09-19T01:09:14Z Whether you’re implementing a new system or simply changing office procedures, there are five core steps to successfully transforming your business process and implementing change.

Step 1 – Bringing Awareness

To effectively bring awareness, the objective is to influence the business users’:

  • Thinking – Helping them to understand the main objectives and the changes that may be needed to meet these objectives.
  • Feelings – Associating the concept of change with positive feelings. Communicating the overall change effort as a fun and interesting project, using all influences possible to prevent users assuming change is a negative.
  • Actions – Keeping people engaged and actively participating in the change effort. Though you cannot control one’s actions directly, your influence on their feelings has an impact on their actions.

Step 2 – Understanding Change and Committing

This phase deals with helping users to understand the specific changes that are coming and the reality of these changes. It’s important to enforce these changes through positive influence without causing any sharp resistance from the users. Effective listening and communication skills to ensure these changes are understood by all. During this phase, you must guide the user community through the decision making process on key business changes while setting expectations on the results and impacts of these decisions.

Step 3 – Preparation

Once the changes are defined and processes around these changes are established, business users that are impacted need preparation in the form of competency building, skill set training, and self-confidence. Through the preparation process there will be training sessions, proof of concepts, process testing, etc. This is all necessary to ensure that the business can operate in the new environment and that all details are reviewed, issues are exposed, and issues are resolved.

Step 4 – Launch

Once the business community is fully prepared and testing of the new process confirms satisfactory results, it’s time to bring the new process alive. Prior to enabling the new process, the project and user communities must be fully confident and ready for the launch and the short-term support required. As the new process lives, adaptations may be needed to address the immediate issues and process short comings.

Step 5 – Discipline and Enforcement

After brining alive the new process, the next step is to make sure the establish procedures are being followed by the user community. This is accomplished through positive recognition when a user excels at their new role while also holding users accountable by upper management when procedures are not followed. Emphasis should be placed on following the new process throughout the process transformation lifecycle.

]]>
0
bryan http://www.bryanthompsononline.com <![CDATA[Pricing Qualifiers – How They Work and Creating Your Own Part II]]> http://www.bryanthompsononline.com/oracle/2008/09/12/pricing-qualifiers-%e2%80%93-how-they-work-and-creating-your-own-part-ii/ 2008-09-18T00:43:18Z 2008-09-12T18:30:16Z In my last Qualifier article, I delved into the inner workings of Qualifiers in Advanced Pricing by walking through a quick demo of how to setup a Qualifier to reference Descriptive Flexfield data on a sales order transaction. In this article, I’d like to touch on how some Qualifiers require more advanced PL/SQL techniques to retrieve transactional data. For example, the “Customer Party ID” is tied to QP_SOURCING_API_PUB.GET_PARTY_ID function call because the Party ID isn’t stored directly in the G_HDR record structure. With that said, lets walk-thru the creation of a Qualifier that requires us to create our own PL/SQL function reference.

Let’s say that we have a requirement to qualify Modifier discounts against specific customer account numbers. Oracle provides us with a Qualifier for a customer’s Party ID, but does not provide a Qualifier for account number – we’ll need our own custom API to accomplish this.

Before we start, let’s not forget that a sales order could have multiple customer’s associated with the transaction. Remember that we can have up to three customers on a sales order that represent the selling, billing, and shipping organizations (there are even more when factoring in deliver to and installed at, but for this example let’s focus on the main three). The business requirements behind the discount could determine that we only need one of the three, but let’s assume that discounts could be applied to any of the selling, billing, and shipping customers. Hence, we’ll need three Qualifiers to represent each.

Let’s start by navigating to Setup > Attribute Management > Contexts and Attributes to choose our Context and create our core Attribute information. Since this Attribute will be mapped to a value stored on the customer master record, it’s most appropriate to place our attribute under the Customer context.

Next, let’s add three Attribute records under the Attributes block with the appropriate Codes, Names, and Descriptions that will represent our sold to, bill to, and ship to customer account numbers. I’ve also decided to use a seeded Customer Account Value Set to validate our attributes against a valid list of customer account numbers.

Lastly, we’ll need to assign an available column. As in my previous example, I’d recommend selecting a column that is a distance away from the last column that is being used to avoid any conflicts (in case Oracle decides to introduce new qualifying attributes in the future).

Now let’s navigate to Setup > Attribute Management > Attribute Linking and Mapping to map our Customer Account attributes. Select Order Fulfillment for Pricing Transaction Entity and Qualifier Context for Context Type, choose Customer as the Context, and click the Link Attributes button.

Once the Link Attributes form is open, we’ll add three new records for our Attributes. Since customer information is stored on the header AND line detail of a sales order transaction, our Level will be Both, followed by Attribute Mapping as our Attribute Mapping Method since we’re going to be referencing a PL/SQL function to retrieve our customer account number values.

After saving your changes, we’ll want to begin mapping all three attributes. Let’s start with the Customer Sold To Account Number by clicking on the corresponding record and clicking the Attribute Mapping button. Once the Attribute Mapping form appears, select the ONT reference record for Order Management.

Since we indicate Both as our reference level, we’re required to provide mapping references for both the Header and Line Source setups. At this point we know that our Source Type will be a PL/SQL API for each, but now here comes the hard point – exactly what PL/SQL will enable us to retrieve the Customer Sold To Account Number?

Going back to our Customer Party ID example, we see that this Qualifier is mapped to an Oracle seeded function called QP_SOURCING_API_PUB.GET_PARTY_ID.

QP_SOURCING_API_PUB.GET_PARTY_ID(OE_ORDER_PUB.G_HDR.sold_to_org_id)

QP_SOURCING_API_PUB.GET_PARTY_ID(OE_ORDER_PUB.G_LINE.sold_to_org_id)

We’ll need to create our own similar function in order to retrieve the sold to customer account. At a table level, since the order header (OE_SALES_ORDER_LINES_ALL) and order lines (OE_SALES_ORDER_LINES_ALL) contain direct references to the sold to customer (SOLD_TO_ORG_ID), and since the customer account number is stored directly in the customer master view (HZ_CUST_ACCOUNTS), we can build an almost identical query compared to what the seeded Customer Party ID function.

So given the SOLD_TO_ORG_ID of the sales order transaction, we can create a function that accepts SOLD_TO_ORG_ID as a parameter and retrieves the customer account number. We’ll need to build our own package which includes this function, so I created a package called XQP_SOURCING_API_PUB. This package will contain all of our custom functions needed to retrieve custom Qualifier values:

             

CREATE OR REPLACE PACKAGE BODY APPS.XQP_SOURCING_API_PUB AS

FUNCTION GET_SOLD_TO_ACCOUNT_NUMBER(p_sold_to_org_id IN NUMBER)
RETURN varchar2
IS

l_sold_to_account_number varchar2(30);

CURSOR get_sold_to_account_number_cur (l_sold_to_org_id NUMBER)
IS
SELECT account_number
FROM hz_cust_accounts
WHERE cust_account_id = l_sold_to_org_id;

BEGIN

OPEN get_sold_to_account_number_cur (p_sold_to_org_id);
FETCH get_sold_to_account_number_cur INTO l_sold_to_account_number;
CLOSE get_sold_to_account_number_cur;
RETURN l_sold_to_account_number;

EXCEPTION
WHEN OTHERS THEN
RETURN NULL;

END GET_SOLD_TO_ACCOUNT_NUMBER;

END XQP_SOURCING_API_PUB;

Let’s compile and confirm that our PL/SQL runs successfully. We need to also be sure to include the package specification before compiling the above source.

Now that we have our function, we need to complete our Attribute Mapping setup by including in the User Value field the PL/SQL reference to this function both in the Header and Line setups. Our function accepts the SOLD_TO_ORG_ID as a parameter, so by using the G_HDR and G_LINE record structures, we can pass this value as our parameter.

XQP_SOURCING_API_PUB.GET_SOLD_TO_ACCOUNT_NUMBER(OE_ORDER_PUB.G_HDR.sold_to_org_id)

XQP_SOURCING_API_PUB.GET_SOLD_TO_ACCOUNT_NUMBER(OE_ORDER_PUB.G_LINE.sold_to_org_id)

Finished! Let’s go to the Tools file menu and select “Build Attribute Mapping Rules” to confirm our setups are correct.

We’ve successfully built our Sold To Customer Account Qualifier, but we still need separate PL/SQL functions for the customer bill to and ship to account Qualifiers. On the OE_ORDER_HEADERS_ALL and OE_ORDER_LINES_ALL tables we have a reference to the BILL_TO_ORG_ID and INVOICE_TO_ORG_ID columns, but these ID’s refer to the site usage records in HZ_CUST_SITE_USES. With that said, our queries for these functions will be slightly different than the sold to function.

FUNCTION GET_SHIP_TO_ACCOUNT_NUMBER(p_ship_to_org_id IN NUMBER)
RETURN varchar2 IS

l_ship_to_account_number varchar2(30);

CURSOR get_ship_to_account_number_cur (l_ship_to_org_id NUMBER)
IS
SELECT c.account_number
FROM hz_cust_acct_sites a,
hz_cust_site_uses b,
hz_cust_accounts c
WHERE
a.cust_acct_site_id = b.cust_acct_site_id
AND b.site_use_id = l_ship_to_org_id
AND b.site_use_code = ‘SHIP_TO’
and a.cust_account_id = c.cust_account_id;

BEGIN
OPEN get_ship_to_account_number_cur (p_ship_to_org_id);
FETCH get_ship_to_account_number_cur INTO l_ship_to_account_number;
CLOSE get_ship_to_account_number_cur;
RETURN l_ship_to_account_number;
EXCEPTION WHEN OTHERS THEN

             

RETURN NULL;
END GET_SHIP_TO_ACCOUNT_NUMBER;

FUNCTION GET_INVOICE_TO_ACCOUNT_NUMBER(p_invoice_to_org_id IN NUMBER)
RETURN varchar2
IS

l_invoice_to_account_number varchar2(30);

CURSOR get_bill_to_account_number_cur (l_invoice_to_org_id NUMBER)
IS
SELECT c.account_number
FROM hz_cust_acct_sites a,
hz_cust_site_uses b,
hz_cust_accounts c
WHERE a.cust_acct_site_id = b.cust_acct_site_id
AND b.site_use_id = l_invoice_to_org_id
AND b.site_use_code = ‘BILL_TO’
and a.cust_account_id = c.cust_account_id;
BEGIN
OPEN get_bill_to_account_number_cur (p_invoice_to_org_id);
FETCH get_bill_to_account_number_cur INTO l_invoice_to_account_number;
CLOSE get_bill_to_account_number_cur;
RETURN l_invoice_to_account_number;

EXCEPTION WHEN OTHERS THEN

RETURN NULL;

END GET_INVOICE_TO_ACCOUNT_NUMBER;

Let’s also include these functions in our XQP_SOURCING_API_PUB package and compile our functions.

After confirming successful compilation, we can add similar function references in the Attribute Mapping setups for the Bill To Customer Account and Ship To Customer Account Qualifiers.

SCHQP_SOURCING_API_PUB.GET_SHIP_TO_ACCOUNT_NUMBER(OE_ORDER_PUB.G_HDR.ship_to_org_id)

SCHQP_SOURCING_API_PUB.GET_SHIP_TO_ACCOUNT_NUMBER(OE_ORDER_PUB.G_LINE.ship_to_org_id)

SCHQP_SOURCING_API_PUB.GET_INVOICE_TO_ACCOUNT_NUMBER(OE_ORDER_PUB.G_HDR.invoice_to_org_id)

SCHQP_SOURCING_API_PUB.GET_INVOICE_TO_ACCOUNT_NUMBER(OE_ORDER_PUB.G_LINE.invoice_to_org_id)

Once we’ve entered the references into the User Value fields, let’s build the attribute mapping rules for each to confirm the setups are successful.



All finished! Now if you go to Modifier setup form, you should see Sold To Customer Account Number, Bill To Customer Account Number, and Ship To Customer Account Number as available Qualifiers under the Customer context.



Without a doubt, the combination of Qualifier Attribute Mapping setups with PL/SQL creates flexible functionality for establishing how and when pricing Modifiers should be applied – empowering the implementer to meet the most complex of discounting and surcharge requirements.

]]>
5
bryan http://www.bryanthompsononline.com <![CDATA[R12 Order Management – What’s changed?]]> http://www.bryanthompsononline.com/oracle/2008/09/11/r12-order-management-%e2%80%93-what%e2%80%99s-changed/ 2008-09-15T10:14:00Z 2008-09-12T00:40:29Z Good question. I’m in the process of figuring this out myself. However, here are a few things I do know based on my research and my recent R12 engagement.

Multiple Operating Unit Access – In 11i, a responsibility could only be tied to a single operating unit. However, in R12, responsibilities can be assigned to one or more operating units by assigning the responsibility to a security profile. This is a great enhancement for businesses where users require multi-organization access.

Credit Card Entry Enhancements - An additional field has been added to the order entry screen to capture the security code typically located on the back of a credit card. Additionally, the credit card number is encrypted at the database level and stored within the Payments (formally iPayments) module. I’ll put out a more detailed article that talks about the drastic changes to the iPayments module.

Reoccurring Charges - Functionality has been added to the TSO (Telecommunications Service Ordering) module which allows reoccurring billings. This is perfect for subscriptions and other like services.

Partial Period Revenue Recognition – A joint OM and AR enhancement, partial period revenue recognition is a set of new revenue recognition rules in AR which allow for revenue recognition on a daily basis. Previously in 11i revenue recognition could only be done on a monthly basis.

Pay Now or Pay Later – Upfront billing in Order Management can now be done and can be configured based on pricing charges, taxes, deposits, installment billing, and prepayments.

Mass Scheduling Changes – The scheduling concurrent request can now pick up lines that have errored in the scheduling workflow activity. It also can now pick up lines that are in Entered status – both converted and manually entered orders.

Customer Acceptance Process - Oracle R12 now provides the ability to introduce a customer acceptance step prior to invoicing. By setting up a deferral reason in AR, invoicing can be deferred until acceptance has been captured.

Tax Updates – Additional tax fields have been added to the order entry screens that provide more flexibility with Vertex.

Architectural Changes to Inventory - in 11i, Discrete and Process Inventory modules were entirely separate entities. Oracle has converged these modules into one data structure, where functionalities from both modules have combined to be available to both. This doesn’t mean much from an OM perspective, but technical changes have been performed to the Pick Release and Ship Confirmation processes to work with the new combined inventory model.

Architectural Changes to OM, Install Base, and Service Contracts Integration – My understanding is that there is no functionality changes, but from a technical standpoint Oracle has implemented a best practice approach  to OM to Install Base and OM to Service Contracts touchpoints to ensure API calls are used rather than direct queries.

]]>
9
bryan http://www.bryanthompsononline.com <![CDATA[Pricing Qualifiers – How They Work and Creating Your Own]]> http://www.bryanthompsononline.com/oracle/2008/07/21/pricing-qualifiers-%e2%80%93-how-they-work-and-creating-your-own/ 2008-07-21T18:39:54Z 2008-07-21T18:11:23Z Oracle Advanced Pricing allows you to create discounts, surcharges, and other promotions (called Modifiers) that can be applied against sales orders both manually and automatically. Often there are requirements for Modifiers to only apply in certain situations. For example, promotions on specific products or product lines, discounts on customer types, additional charges on international shipments, etc. So in addition to creating Modifiers, Qualifiers can be used to reference specific attributes of a sales order, product, customer, etc. to determine if the Modifier qualifies for the sales transaction.

Oracle provides a wide array of Qualifiers to evaluate a sales transaction, but situations often arise where Qualifiers are needed for attributes that aren’t available out of the box. However, with a few configurations and little bit of PL/SQL knowledge, you can create your own Qualifier attributes.

But before we begin, it helps to look at some commonly used Qualifiers to see how they’re configured, and ultimately how Oracle is able to source the information. Let’s start by going to the Oracle Pricing Manager responsibility, navigate to Setup > Attribute Management > Contexts and Attributes. From this form, we’ll be able to see the starting point from where the Qualifier attributes are created.

Click the Search (flashlight) icon and select context type of Qualifier Context and code of Order. After you make the selection, you’ll see the seeded qualifying attributes listed under the Attributes block of the form.

As an example, let’s look at the Order Type attribute, which represents the Order Type field of the sales order header. Here you’ll see the basic information that is associated with this Qualifier, most notably the Column Mapped, which indicates where in the Qualifier attribute structure to store the referenced value, and the Value Set, which is used to validate this value. The Value Set is important because when assigning this Qualifier to a Modifier, this is the Value Set that will be used to validate the input accepted when comparing this Qualifier to a value. In this case, when we reference the Order Type qualifier, the “QP_ORDER_TYPES_ALL” value set will only compare this qualifier to valid order types; not line types, random text, numeric inputs, etc.

To see how this attribute is mapped to the actual Order Type field on the sales order, we need to return back to the menu and navigate to Setup > Attribute Management > Attribute Linking and Mapping. Enter Order Fulfillment for Pricing Transaction Entity and Qualifier Context for Context Type. You’ll notice that the same listing of contexts is displayed under the Contexts block.

Select the ORDER code record and click the Link Attributes button. A form will display a listing of all the same attributes we saw from the Contexts and Attributes form, but with information as to where the Attributes are sourced from.

Looking at the Order Type attribute, you’ll see that Level for this attribute is BOTH. This indicates that the Order Type can be referenced from the header or the line details of the corresponding transaction. Other options for Level include LINE, which indicates that the source is at the line detail level, and ORDER, which indicates the attribute can be sourced at header level of the transaction.

Next to the Level is the Attribute Mapping Method, which indicates the method in which the Attribute is sourced. In this case, the method for Order Type is ATTRIBUTE MAPPING, which indicates a more technical reference is required to source this value (i.e. PL/SQL, system variable, etc.). Other Attribute Mapping Methods include RUNTIME SOURCE, indicating that the attribute will be populated by the QP_CUSTOM package, and USER ENTERED, indicating that the value will be populated by the user (this is more common for Pricing Attributes rather than Qualifier Attributes).

To see the kind of Attribute Mapping reference that exists for Order Type, click on the Attribute Mapping button. What you’ll see is a listing of mapping setups for the Order Type attribute broken down by application. Oracle accepts an attribute mapping by application because from a data structure standpoint, the reference to Order Type can be different in Order Management then other modules like Telesales, Service Contracts, etc.

To view the source mapping for Order Management, click on the record indicating ONT for request type and take note of the settings for Header Level and Line Level Attribute Mappings on the bottom half of the form. Here’ you’ll see the actual PL/SQL references that are being made to retrieve the Order Type. Note the Seeded/User Source Type and Seeded/User Value String settings for each:

Reference Type:        PL/SQL API
User Value:                OE_ORDER_PUB.G_HDR.order_type_id

This shows us that this attribute is sourced via a PL/SQL API and calls the PL/SQL string OE_ORDER_PUB.G_HDR.order_type_id. The G_HDR record structure is seeded by Oracle and contains data for the sales order header transaction that is being actively processed and evaluated. It is accessible globally from where the Pricing Engine is executing the PL/SQL code contained in the User Value field. So by accessing this global record structure, Oracle was able to map the Order Type transaction ID to the Order Type attribute – making this information available to Qualifier and Modifier setups in Advanced Pricing.

Other more advanced Qualifier examples exist which show direct calls to seeded PL/SQL functions. Starting again from the Setup > Attribute Management > Attribute Linking and Mapping navigation path, check out the Party ID located under the CUSTOMER context and take a look at the User Value String under the same Link Attributes form we were just in.

Since the customer party ID cannot be directly sourced from sales order transaction, Oracle had to develop a quick function call that references the SOLD_TO_ORG_ID of the sales order to retrieve the Party ID from the HZ table structure (QP_SOURCING_API_PUB. GET_PARTY_ID). Notice that since customer information is stored on both the header and the lines of a sales order transaction that Oracle utilizes the G_HDR and G_LINE global record structures to pass the sold to customer information to the seeded API.

QP_SOURCING_API_PUB.GET_PARTY_ID(OE_ORDER_PUB.G_HDR.sold_to_org_id)

QP_SOURCING_API_PUB.GET_PARTY_ID(OE_ORDER_PUB.G_LINE.sold_to_org_id)

Opening up a TOAD session and running the describe command on the QP_SOURCING_API_PUB package shows the details of this function in addition to other functions developed by Oracle to retrieve other data mapping sources used by other seeded Qualifiers.

Given what we’ve seen so far, the configuration aspect of a Qualifier is quite simple, but it takes just a bit of PL/SQL knowledge to actually map your Qualifier to a source. You don’t quite need to be an expert per say, but have just enough technical know-how to be “dangerous”.

Now that we have a decent idea of the inner workings of a Qualifer, let’s walk through the steps again and try to create our own. Say for example that a business requirement has come up which calls for a discount to be applied based on a value stored in a Descriptive Flexfield segment (we’ll pretend it’s ATTRIBUTE10 of the sales order header).

We first begin by navigating to Setup > Attribute Management > Contexts and Attributes to choose our Context and create our core Attribute information. Since this Attribute will be mapped to a value stored on the sales order header, it’s most appropriate to place our attribute under the Order context.

Next, let’s add a record under the Attributes block and provide our Attribute with a Code, Name, and Description.

After identifying our Attribute, we’ll need to choose our Value Set. Let’s assume that this is a Yes/No field that will be validated against the “QP: Yes/No” value set. We’ll also need to assign an available column. I’d recommend selecting a column that is a distance away from the last column that is being used to avoid any conflicts (in case Oracle decides to introduce new qualifying attributes in the future).

Now let’s navigate to Setup > Attribute Management > Attribute Linking and Mapping to map our newly created Attribute to a source. Let’s again select Order Fulfillment for Pricing Transaction Entity and Qualifier Context for Context Type, choose ORDER as the Context, and click the Link Attributes button.

Once the Link Attributes form is open, we’ll add a new record to map our Attribute. By selecting the list of values for the Code, our new attribute should appear in the list. If our attribute is the only attribute under the Order context that is not mapped, it should default to our Attribute automatically.

Assuming that we’ll want this Qualifier accessible from the header and line details of a sales order transaction, we’ll select BOTH as our Level, followed by Attribute Mapping as our Attribute Mapping Method.

Save your changes, and click on the Attribute Mapping button. Since our Qualifier is referencing the Flexfield segment within the Order Management module, let’s again select the ONT reference record, but this time populate “Advanced Pricing” for the Application Name.

Moving along to the Header and Line Level setups, we want to indicate that our User Source Type will be a PL/SQL API for both, followed by the appropriate PL/SQL string in the User Value String field.

You might be asking, “How do we determine what PL/SQL string to use?”

If we refer back to the Order Type attribute example, the G_HDR record structure is the global structure that is populated with the current sales order header transaction data. If you’re familiar with the OE_ORDER_HEADERS_ALL table, you’ll know that all we need to do is reference G_HDR.ATTRIBUTE10 to retrieve our Flexfield segment. Since we’re referring to the Flexfield segment stored on the order header, the User Value String values for both the Header and Line Levels will be the same.

OE_ORDER_PUB.G_HDR.attribute10

This example was fairly straight forward since the Flexfield segments are easily identifiable and stored directly in the G_HDR record structure. However, if in other situations you’re unsure of which column actually stores the data you wish to reference, you may have to query data against the OE_ORDER_HEADERS_ALL or OE_ORDER_LINES_ALL tables to determine where your data is stored. And in cases where the value isn’t found in these tables, then you may have to develop a custom API similar to how the Party ID Qualifier is implemented (I’ll post an example of how to do this in a future article).

Now that we’re finished with our setups, we can save our changes.

After saving your work, let’s navigate to the Tools file menu and select Build Attribute Mapping rules. This will compile our Attribute Mapping setups with our PL/SQL reference in place. If any typos or incorrect syntax is made in the User Value, you’ll find out from the results of the compilation.

Assuming that you’ve enter the PL/SQL string correctly, you should receive a message indicating the Attribute Mapping Rules have been built successfully.

Upon clicking OK closing the Attribute Mapping form you may receive the following warning message:

Oracle is screaming at us because we chose to only map our attribute for the Order Management application and not the other applications that are listed under the Application Types. For the purposes of this demonstration, we can click OK and be done with hit. However, if you’re organization is utilizing Advanced Pricing from elsewhere (Service Contracts, Telesales, etc.), then I would recommend that you also provide source mappings for those dependent applications as well.

Sweet! Now you have a Qualifier that references a sales order header Flexfield attribute! You should now be able to view this Qualifier when setting up List or Line Qualifiers from the Modifier setup form as shown below.

Now even though we’ve built and compiled our attribute mapping, Oracle may still warn you that the Qualifier you’ve reference hasn’t been mapped. If this is the case, you can run the Build Attribute Mapping Rules concurrent request and this should take care of the issue.

As I mentioned, this Qualifier serves as a good example for when the data is readily accessible via the G_HDR or G_LINE global record structures, but stay tuned for another example which will show how we can create our own custom PL/SQL function to source an Attribute.

]]>
2
bryan http://www.bryanthompsononline.com <![CDATA[Cutting Implementation Costs by Leveraging Your Internal IT Resources]]> http://www.bryanthompsononline.com/oracle/2008/06/04/cutting-costs-by-leveraging-more-of-your-internal-it-resources/ 2008-06-12T18:41:52Z 2008-06-05T02:27:56Z Consultants – can’t live with them, can’t live without them. Majority of today’s software implementations require the need for outside consultants for their technology and industry expertise, but the costs of outside consulting can be a hard pill for top executives to swallow. Engaging consulting experts is a necessary evil in ensuring a successful implementation of your ERP system; however, by outsourcing the design process and leveraging your internal IT resources for testing and implementation, you can effectively utilize the strengths of both factions while lowering your outside consulting costs.

But doing this isn’t as simple as saying good bye to your consultants once process design is complete. Extra steps must be taken by project management to ensure that your internal IT staff are connected and engaged throughout gap analysis, requirements gathering, and process design. If your IT organization is to “take the ball and run”, it’s extremely important that they understand the design and can speak for it long after the consultants have left.

In addition to keeping your resources engaged, they must also be trained or have the experience necessary in carrying out the implementation. An investment in training will better prepare your staff for the implementation activities, while also leading to decreased consulting costs further along the project timeline (not to mention minimizing needs for consulting in future projects). So be ready to supplement some of your cost savings in consulting with additional funding towards training.

Also be ready to conduct a focused knowledge transfer session once gap analysis and process design is complete. It’s obvious that your internal resources will need all the knowledge and know-how to implement the solutions proposed by your outside consultants, so it’s important to execute a formal knowledge transfer session that involves transition of all documentation and related materials. Project metrics should be established that measures the progress and success of the knowledge transfer activities.

By following all these points, you place your IT organization in a position to implement your ERP system independently without extensive involvement of any outside consulting. Keep in mind that while this approach will most definitely minimize the need for any consulting involvement during implementation, it doesn’t eliminate the need. Therefore, it’s important to have a go forward plan established the keeps the lines of communication open between your IT organization and the consultants.

Outsourcing design and insourcing implementation efforts is a model that many businesses, and even some consulting organizations, have embraced. Lexerd Group, an IT consulting firm based in the east coast United States, is one of the first to offer services that are centered on the “outsourcing/insourcing” model. Lexerd Group’s Proof of Concept service offers their clients software expertise, requirements gathering, gap analysis, and solution design, followed by a specialized transition session which transfers process blueprints and a go-forward implementation strategy to their clients.

Read more about Lexerd Group’s unique Proof of Concept consulting services at http://www.lexerdgroup.com/proof-of-concept.

]]>
1
bryan http://www.bryanthompsononline.com <![CDATA[Implementing Export Compliance in Oracle]]> http://www.bryanthompsononline.com/oracle/2008/05/30/implementing-export-compliance-in-oracle/ 2008-05-31T02:40:43Z 2008-05-31T02:38:11Z In the United States there are numerous international embargo laws in place that restrict U.S. based corporations from selling to countries that are deemed a threat by the government. Cuba, Iran, and North Korea are all examples of countries which no one in the U.S. can conduct business with. These laws can change often depending on the political atmosphere or whoever happens to be in office, making it difficult for organizations who sell or distribute products globally to not only adhere to the laws, but to also adapt their audit procedures when a change to policy occurs.

For corporations which conduct sales in the U.S. and in other locations across the world, the complexity increases because every country has their own set of embargo laws. For example, a U.S. based company cannot sell to an Iranian company because of U.S. regulation, but on the other hand, if the same organization has a location or distribution warehouse in France, their French location could sell to that same Iranian customer. Granted, this situation is also dependent on the citizenship of the individual conducting the sale – an employee sitting at a desk in France can’t make the same sale to Iran if they hold U.S. citizenship.

By now I think you get the point – keeping track and enforcing export compliance procedures can be quite complex. If your business operates an international sales organization and has difficulty enforcing and adapting to the ever changing embargo regulations at a global level, then the Oracle Export Compliance module, in conjunction with Kewill export compliance screening, can provide just the tools you need to ensure your sales organization remains compliant.

A Brief Look at the Technology

Out of the box, Oracle provides a workflow process in Order Management that establishes an XML based connection to a selected 3rd party compliance screening service. Kewill, a commonly used screening service in the Oracle community, maintains an elaborate database of the latest export compliance regulations. Upon entering and booking a sales order, Oracle sends various information about the sale order transaction to Kewill, who then accepts and evaluates the sale based on the most current and up-to-date export compliance laws.

Once Kewill determines whether or not the sale is compliant, the results are sent back to Oracle Order Management. If the result is found to violate export compliance laws, the sales order goes on export compliance violation hold and awaits review by an individual in the organization who is given the property authority to either process the order or cancel the sale.

Additionally screening can be performed during the pick release and shipment confirmation processes to ensure that changes that are made to a sales order after booking are also captured and screened prior to sending the product out the door.

The technology around the communication between Oracle and Kewill services is fairly straightforward, but the actual screening performed by Kewill can be quite complex. As I mentioned earlier, international embargo laws vary country, so to deem a transaction compliant there are many pieces of information to consider. What country is the customer located? Do the billing and shipping locations for the customer differ? Or is the billing customer entirely different than the shipping customer?

What about your facilities – is the location of your shipping warehouse different than the location from where the order is being processed? Does the citizenship of the individual entering the transaction qualify to make the sale?

As you can see, the situation can get quite complex. How these questions are answered determines the set of export compliance laws that need to be evaluated. Lucky for you, Oracle Export Compliance and Kewill takes care of this complexity for you.

For more information regarding the Oracle Export Compliance product visit http://www.oracle.com/products/export/index.html.

]]>
4
bryan http://www.bryanthompsononline.com <![CDATA[Download Oracle AIM (Applications Implementation Methodology) Software]]> http://www.bryanthompsononline.com/oracle/2008/05/06/download-oracle-aim-applications-implementation-methodology-software/ 2008-05-08T18:21:10Z 2008-05-06T14:17:42Z Oracle’s Application Implementation Methodology is the “industry standard” for Oracle project management and implementation strategy.   The main feature of the AIM software is the documentation templates that are available.   I typically do not use all available templates, but there a few key documents such as the BR100, MD50, etc. that are handy.

Most Oracle consulting firms do not use AIM as is, but use it as a basis in coming up with their own implementation methodology.   Either way, it’s a great tool to keep handy.

Click here to download the entire AIM package.

If you happen to need an AIM document template but don’t necessarily need the entire package, you can select a template for download  below.

AP010_Executive_Proj..> 349k
AP010_Invitation_Mem..> 33k
AP010_Session_Planni..> 151k
AP020_Application_Ov..> 202k
AP020_Invitation_Mem..> 34k
AP020_Project_Team_O..> 319k
AP020_Session_Planni..> 153k
AP030_Project_Team_L..> 216k
AP040_Project_Team_L..> 299k
AP050_Project_Team_L..> 321k
AP060_Business_Unit_..> 441k
AP060_High_Level_Sys..> 209k
AP060_Invitation_Mem..> 34k
AP060_Session_Planni..> 153k
AP070_Invitation_Mem..> 35k
AP070_Project_Readin..> 656k
AP070_Session_Planni..> 154k
AP080_Communication_..> 175k
AP090_Application_to..> 206k
AP090_Invitation_Mem..> 34k
AP090_Managers_Readi..> 394k
AP090_Session_Planni..> 153k
AP100_Business_Proce..> 239k
AP110_Human_Performa..> 408k
AP120_Information_Te..> 355k
AP130_User_Learning_..> 400k
AP140_Learning_Plan.doc 497k
AP150_User_Learningw..> 273k
AP160_User_Learning_..> 438k
AP170_User_Learning_..> 160k
AP180_Effectiveness_..> 588k
AP180_Invitation_Mem..> 33k
AP180_Session_Planni..> 152k
BP010_Business_and_P..> 370k
BP020_Change_Catalog..> 161k
BP030_Data_Gathering..> 176k
BP040_Current_Proces..> 323k
BP050_Leading_Practi..> 150k
BP060_High_Level_Pro..> 173k
BP070_High_Level_Pro..> 162k
BP080_Future_Process..> 180k
BP090_Business_Proce..> 99k
BR010_High_Level_Gap..> 178k
BR020_Configured_Map..> 308k
BR030_Business_Requi..> 165k
BR050_Integration_Fi..> 396k
BR060_Information_Mo..> 404k
BR080_Business_Mappi..> 188k
BR100Aap_Accounts_Pa..> 733k
BR100Aar_Accounts_Re..> 1.4M
BR100Aas_Sales_and_M..> 1.1M
BR100Abom_Bill_Of_Ma..> 296k
BR100Aca_Common_Appl..> 2.3M
BR100Acas_Common_App..> 498k
BR100Ace_Cash_Manage..> 198k
BR100Acf_Common_Fina..> 1.1M
BR100Acm_Common_Manu..> 1.1M
BR100Acn_Sales_Compe..> 861k
BR100Acrp_Capacity_A..> 155k
BR100Acs_Service_App..> 1.1M
BR100Acst_Cost_Manag..> 1.4M
BR100Aeng_Engineerin..> 172k
BR100Afa_Fixed_Asset..> 771k
BR100Afi_OPM_Financi..> 419k
BR100Agl_General_Led..> 272k
BR100Ahr_Human_Resou..> 1.9M
BR100Aic_OPM_Invento..> 481k
BR100Ainv_Inventory_..> 1.1M
BR100Alo_OPM_Logisti..> 540k
BR100Amrp_Master_Sch..> 243k
BR100Aoe_Order_Entry..> 1.3M
BR100Apa_Project_Acc..> 994k
BR100Apd_OPM_Product..> 298k
BR100Apo_Purchasing_..> 1.3M
BR100App_OPM_Process..> 317k
BR100Aqa_Quality_App..> 301k
BR100Ascp_Supply_Cha..> 299k
BR100Ass_Supplier_Sc..> 254k
BR100Asy_OPM_Systems..> 234k
BR100Awip_Work_in_Pr..> 393k
CM010_Configuration_..> 154k
CM020_Document_Index..> 149k
CM020_Document_Updat..> 125k
CM030_Configuration_..> 170k
CM030_Configuration_..> 145k
CM040_Release_Note.doc 131k
CR010_Project_Manage..> 445k
CR010_Project_Start_..> 140k
CR020_Control_and_Re..> 225k
CR040_Risk_and_Issue..> 131k
CR040_Risk_and_Issue..> 171k
CR050_Problem_Report..> 129k
CR050_Problem_Report..> 153k
CR060_Change_Request..> 134k
CR060_Change_Request..> 154k
CR070_Meeting_Minute..> 127k
CR070_Project_Progre..> 192k
CR080_Acceptance_Cer..> 130k
CR080_Client_Satisfa..> 163k
CR080_End_Report.doc 157k
CV010_Data_Conversio..> 1.6M
CV020_Conversion_Sta..> 177k
CV030_Conversion_Env..> 295k
CV040_Conversion_Dat..> 179k
CV050_Manual_Convers..> 185k
CV060_Conversion_Pro..> 204k
CV070_Conversion_Tes..> 189k
CV120_Installed_Conv..> 180k
CV130_Converted_and_..> 184k
DO010_Documentation_..> 234k
DO020_Documentation_..> 355k
DO030_Glossary.doc 158k
DO040_Document_Envir..> 192k
DO060_User_Reference..> 167k
DO070_User_Guide.doc 156k
DO080_Technical_Refe..> 146k
DO090_System_Managem..> 146k
MD010_Application_Ex..> 290k
MD020_Application_Ex..> 243k
MD030_Design_Standar..> 238k
MD040_Build_Standard..> 195k
MD050_Application_Ex..> 179k
MD060_Database_Exten..> 171k
MD070_Application_Ex..> 227k
MD090_Development_En..> 282k
MD120_Installation_I..> 150k
PJM01_Engagement_Sum..> 131k
PJM02_Project_Memo.doc 123k
PJM03_Meeting_Agenda..> 129k
PJM04_Rejection_Note..> 136k
PJM05_Supplier_Asses..> 133k
PJM06_Project_Docume..> 142k
PJM07_Phase_End_Repo..> 145k
PJM08_Site_Visit_Rep..> 131k
PJM09_Project_Manage..> 209k
PJM10_Quality_Manage..> 192k
PM010_Transition_Str..> 189k
PM020_Production_Sup..> 204k
PM030_Transition_and..> 223k
PM040_Installation_Q..> 160k
PM090_System_Perform..> 177k
PM130_Business_Direc..> 169k
PM140_Technical_Dire..> 175k
PT010_Performance_Te..> 380k
PT020_Performance_Te..> 168k
PT030_Performance_Te..> 174k
PT040_Performance_Te..> 221k
PT050_Performance_Te..> 162k
PT060_Performance_Te..> 185k
PT070_Performance_Te..> 159k
PT110_Performance_Te..> 300k
PT120_Performance_Te..> 154k
PT130_Performance_Te..> 325k
QM010_Quality_Manage..> 168k
QM020_Review_Comment..> 140k
QM020_Review_Leader_..> 131k
QM030_Audit_Action_F..> 128k
QM030_Audit_Report.doc 138k
QM040_Metrics_Report..> 116k
QM045_Project_Health..> 172k
QM050_Quality_Report..> 161k
RD010_Current_Financ..> 310k
RD020_Current_Busine..> 161k
RD030_Process_and_Ma..> 271k
RD040_Business_Volum..> 407k
RD050_Business_Requi..> 171k
RD060_Audit_and_Cont..> 225k
RD070_Business_Avail..> 172k
RM010_Resource_Manag..> 162k
RM020_Assignment_Req..> 152k
RM020_Staffing_and_O..> 171k
RM025_Project_Orient..> 181k
RM030_Staff_Training..> 170k
RM040_Physical_Resou..> 250k
RM040_Service_Level_..> 145k
RM050_Incoming_Item_..> 151k
RM050_Installation_P..> 147k
RM060_Assignment_Ter..> 142k
RM070_Equipment_Faul..> 130k
TA010_Architecture_R..> 336k
TA020_Current_Techni..> 203k
TA030_Preliminary_Co..> 637k
TA040_Application_Ar..> 391k
TA050_System_Availab..> 240k
TA060_Reporting_and_..> 225k
TA080_Application_Se..> 150k
TA090_Application_an..> 1.2M
TA100_Architecture_S..> 172k
TA110_System_Capacit..> 218k
TA120_Platform_and_N..> 697k
TA130_Application_De..> 200k
TA140_Performance_Ri..> 162k
TA150_System_Managem..> 279k
TE010_Testing_Requir..> 228k
TE020_Unit_Test_Scri..> 326k
TE030_Link_Test_Scri..> 169k
TE040_System_Test_Sc..> 178k
TE050_Systems_Integr..> 205k
TE060_Testing_Enviro..> 297k
TE110_Test_Report_fo..> 177k
TE120_Test_Report_fo..> 177k
TE130_Test_Report_fo..> 181k
WM010_Work_Managemen..> 179k

]]>
95