25Opportunity Products and Revenue

This chapter contains the following:

The sales opportunity revenue model allows several feature configuration options during and after implementation. For example, you can make some fields read-only and modify lookups to meet your unique business needs.

Revenue Amount and Revenue Type

Consider the following options about the Revenue Amount and Revenue Type fields:

  • You may want to configure opportunities with Revenue Amount as a read-only field. This setup ensures that the revenue amount reconciles with quantity and estimated price. By default, the Revenue Amount is editable for cases where salespeople know a projected revenue amount but may not know the quantity. You can make the revenue amount read-only through configuration. For general information about configuring applications, see the Configuring Applications Using Application Composer guide. You can find information on extending opportunity revenue pages in the chapters on extending business objects in this guide.

  • Using Revenue Type, you can categorize revenue lines for grouping, sorting, and summarization purposes. The maximum number of opportunity revenue lines for a single opportunity is 500. The application comes with several predefined values, such as Pipeline, Upside, Expected, Committed, and Closed. Stored in the lookup MOO_REVENUE_TYPE, the values are user-defined.

    Caution: You should avoid changing these values after users have begun using the application, as data integrity issues may result. If you do decide to obsolete existing values after the application is deployed, be sure to clean up the revenue records that refer to the obsolete values.

Product Selection

Consider the following options for product selection:

  • To enable users to browse the sales catalog, you must set the profile option, Browse Sales Catalog in Opportunities Enabled (MOO_ENABLE_BROWSE_CATALOG), to Yes.

  • The product and product group search screens and sales catalog filter by territory. This filtering limits the product selection to those products available in a salesperson's territories. A check box in the product search pages lets salespeople turn off the filtering. For more information about this setup, see the topic, Configuring Sales Catalog Usage: Explained.

  • The product and product group search screens contain the same values as those in the sales catalog, if implemented.

Sales Credit Assignment

Consider the following rules around sales credit assignment:

  • To enable the Sales Credit icon in the opportunity products table, you must set the profile option, Opportunity Sales Credit Enabled (MOO_ENABLE_SALES_CREDITS) to Yes.

  • The application automatically assigns the salesperson who added the product line to the opportunity one hundred percent of the sales revenue credit, and makes him the default sales credit recipient.

  • Users need Full or Edit permissions to override the default sales credit recipient.

  • The territory assignment process can update credit recipients, unless they're locked in.

For more information about how salespeople assign sales credits in opportunities, see the Using Sales guide. Also see the related setup topics for sales credits.

Business Units

Each product line is associated with a single business unit. The application uses the opportunity header business unit (which is based on the profile of the user who created the opportunity) to populate the default business unit on product lines. Business unit as a field isn't displayed in the UI by default, but it can be exposed to suit your requirements.

  • For more information about multiple business units in opportunities, see the topic, Overview of Multiple Business Units in Opportunities.

  • For more information about configuring applications, see the Configuring Applications Using Application Composer guide.

Multicurrency Support

Opportunities and product lines support multiple currencies, if multiple currencies have been implemented. When a salesperson adds a product or product group to an opportunity, the application uses the opportunity header currency as the default currency on the product line. However, salespeople can override the default currency. For more information about currency setup, see the topic, Set Up Multiple Currencies.

Territory Assignment

When you're using territory-based assignment, the assignment engine automatically assigns territories to product lines. Territory team members on the territories are assigned to product lines based on their membership in the territories. For more information about territory setup, see the topics on setting up territories.

Enable the Products Subtab in Opportunities

You can expose the Products subtab in the Edit Opportunity page to let salespeople view more revenue line items at a glance. By default, the Products subtab doesn't appear in the Edit Opportunity page.

Here's how to expose the Products subtab in the Edit Opportunity page.

  1. Activate a sandbox.

  2. Navigate to Application Composer, in the Configuration category.

  3. Select Sales.

  4. In the navigation tree, expand Standard Objects, expand Opportunity, and click Pages.

  5. Ensure that the Simplified Pages tab is selected.

  6. In the Details Page Layouts region, duplicate the standard layout by highlighting the standard layout and clicking the Duplicate icon.

  7. Type a new layout name and click Save and Edit.

    The Details Layout page appears.

  8. In the Subtabs Region, click the Hide, Show, or Reorder Subtabs icon.

    The Configure Subtabs dialog box appears.

  9. Move Products from the Available Subtabs to the Selected Subtabs window.

  10. Click OK.

  11. From the Details Layout page, click Done.

  12. Make sure that the layout status for your layout is set to Active.

  13. Test the changes as follows:

    • Navigate to Sales > Opportunity as a user with access to the opportunity pages, for example, as a salesperson.

    • Edit an opportunity and ensure you can view the Products subtab in the Edit Opportunity page.

  14. Publish the sandbox.

For more information, see the related topics in the Configuring Applications Using Application Composer guide.

Enable Quick Edit to Opportunity Products

An opportunity can have a large number of products. If changes are required, salespeople have to modify product lines with lots of attributes, often a time-consuming task.

So to make the task easier, use Application Composer to let salespeople quickly navigate to a secondary dialog window to add new or edit existing product lines. From the products area of the opportunities UI, they can add, view, edit, close, go to next and previous records in a dedicated dialog box.

Here's how to enable the product line dialog box:

  1. Activate a sandbox.

  2. Navigate to the Application Composer, available under the Configuration menu.

  3. Expand the Opportunity object tree.

  4. In the Opportunity tree, click the Pages link.

  5. In the Details Page Layouts region, duplicate the standard layout and edit the resulting layout.

  6. From the Edit Revenue Table region, click the edit icon.

  7. Click these check boxes:

    • Enable Separate Create Pages check box to control how new product line records are added.

      If you enable this check box, salespeople can click Add to display a dedicated Add Product dialog box where they can add new product lines.

    • Enable Separate Edit Pages check box to control how existing product line records are edited.

      If you enable this check box, salespeople can click the link in the Name field to display a dedicated Edit Product dialog box for the product line records they want to change.

  8. Click Save and Close.

  9. Back in the Details Layout page, click Done.

  10. Ensure that the layout status for your user-defined layout is Active.

  11. Test the changes: Navigate to Sales > Opportunities as a user with access to the Edit Product page, for example, as a salesperson. Click the Name link for the product or group you want and ensure that a dedicated Edit Product dialog box is displayed.

  12. Publish the sandbox.

Forecasted Revenue

The application includes opportunity revenue in the current sales forecast based on how you set up the forecast criteria. If enabled, you can see which revenue items are included in the forecast and you can include or exclude revenue from the forecast. You can include or exclude an entire opportunity, and thus its revenue from products, if enabled.

Examples of Forecasted Opportunity Revenue

You use the Edit Opportunity page revenue (or products) region to view which revenue items are in the current forecast. A check mark in the Forecast column of a revenue line indicates that the revenue is included in the forecast the next time it's generated.

Note: A revenue item marked as forecasted doesn't necessarily mean that it's already included in the latest forecast. The inclusion is dependent upon when the refresh forecast process was last run. For example, a revenue item may meet the current forecasting criteria, but the latest forecast may have already been submitted when the revenue was added to the opportunity. When the next forecast snapshot is generated, the revenue item is included, provided it continues to meet the forecast criteria.

Revenue is included in the forecast based on how the configuration of the forecast rules. Here are some examples of how forecasted opportunity revenue operates:

  • Opportunity revenue can be systematically added to the forecast based on a set of global criteria specified during setup.

  • Include in Forecast drop-down list:

    You can enable a drop-down list called Include in Forecast. The drop-down list appears in both the opportunity and revenue (products) region.

    In the Edit Opportunity page, you can override the criteria for an entire opportunity or for individual opportunity revenue items by using the Include in Forecast drop-down list.

  • The application changes the Include in Forecast setting dynamically when you make changes to any of the following revenue attributes in the opportunity page. (The corresponding forecast is only updated when you save your changes.)

    • Product Group

    • Quantity

    • Estimated Price

    • Revenue

    • Win Probability

    • Revenue Type

    • Expected Revenue

    • Status

  • The application always includes in the forecast revenue items that have a status category of Won.

You can control how the opportunity revenue forecasting criteria operates by setting these two sales forecasting fields:

  • Enable Forecast Criteria Override: You can control the appearance and effect of the Include in Forecast list of values in the Edit Opportunity header and revenue (products) region.

  • Forecasting criteria: You can pick one of several different criteria for including revenue in the forecast. After you set criteria, the text, Forecast Criteria, along with the actual criteria, display in the revenue region.

You set these fields in the Select Forecasting Options page, Unadjusted Forecast Criteria region. This page is accessible by using the Setup and Maintenance work area and selecting the Forecasting Options task. For a procedure detailing how to create a forecast, see the topic, Creating a Forecast, in the Getting Started with Your Sales Implementation guide.

Set Forecast Criteria

Use this procedure to set forecast criteria:

  1. In the Setup and Maintenance work area, go to:

    • Offering: Sales

    • Functional Area: Sales Forecasting

    • Task: Select Forecasting Options

  2. In the Unadjusted Forecast Criteria region of the Select Forecasting Options page, set the criteria as you want.

    The remaining sections in this topic describe the impact of setting the criteria fields for opportunity revenue lines.

For more information about other forecasting setups not covered in this topic, see the help. Use keywords "forecasting" and "forecast".

Forecasting Criteria for Product Lines

You can specify one of several different criteria by which opportunity product line revenue is included in the current forecast. Here are the supported criteria. All of the criteria are fields in the products region of the Edit Opportunity page.

  • Estimated Price

  • Expected Revenue

  • Probability

  • Product Group

  • Quantity

  • Revenue (amount)

  • Revenue Type

  • Status

Impact of Enabling Forecast Criteria Override

If you check the Enable Forecast Criteria Override field in the Select Forecasting Options page, then a choice list appears in the opportunity UI called Include in Forecast. The list appears both in the opportunity header area and the products region. Salespeople can use the field to manually add or remove revenue from the current forecast. If the choice list is enabled, salespeople can add revenue to the forecast even if the revenue doesn't fit the current forecast criteria. Additionally, the impact of the opportunity UI changes depend on whether you also have set up forecasting criteria. For example, you might have set up a win probability percentage that must be met before a revenue item gets included.

This table explains how the application operates if you have set up forecasting criteria in the Unadjusted Forecast Criteria region in the Select Forecasting Options page.

Enable Forecast Criteria Override Checked Enable Forecast Criteria Override Unchecked Forecast Criteria Text Appears in Opportunity UI

The Include in Forecast list of values displays in the UI, allowing sales personnel to select from these options:

  • Always

  • Never

  • When matches forecast criteria

The Include in Forecast list of values doesn't appear. The default value for revenue items is When matches forecast criteria.

Yes

This table explains how the application operates if you haven't set forecasting criteria in the Unadjusted Forecast Criteria region in the Select Forecasting Options page.

Enable Forecast Criteria Override Checked Enable Forecast Criteria Override Unchecked Forecast Criteria Text Appears in Opportunity UI

The Include in Forecast list of values displays in the UI, allowing sales personnel to select from these options:

  • Always

  • Never

The Include in Forecast list of values doesn't appear. The default value for revenue items is When matches forecast criteria.

No

Sales Credits

Companies use sales credits to report on the performance and quota attainment of their sales personnel. They also use sales credits to aid in compensation calculation and to facilitate forecasting by territories. Sales credit recipients and revenue amounts roll up the resource hierarchy for pipeline reporting and quota attainment.

You assign sales credits to sales resources (salespeople or other sales users) while editing product lines in opportunities. When a product line is first added to an opportunity, the application sets the user who added it, as the sole sales credit recipient. This means that the sole recipient receives 100 percent of the sales credit.

Two types of sales credit exist for opportunities:

  • Revenue sales credit: Typically allocated to salespeople working the deal.

  • Overlay sales credit: Typically allocated to other resources helping out with the deal, such as a product or market specialist. Overlay sales credit is also known as nonrevenue sales credit.

Revenue Sales Credit

When assigning revenue sales credits, keep in mind:

  • Only internal resources are eligible as revenue credit recipients.

  • Revenue sales credits must add up to 100 percent.

  • The Forecast Territory can be set to any territory assigned to the product line with Revenue or Revenue and Nonrevenue Forecast Participation.

Overlay Sales Credit

When assigning overlay sales credits, keep in mind:

  • Both internal and external (for example, partner) resources are eligible as nonrevenue credit recipients.

  • Nonrevenue sales credits doesn't have to add up to 100 percent.

  • If the selected Allocation Style is Proportional to Revenue, the sales credit amounts adjust automatically and proportionally when the product line amount changes.

  • If the selected Allocation Style is Ad Hoc Amounts the sales credit amounts don't change with product line amount changes.

  • The Forecast Territory can be set to any territory assigned to the product line with Revenue or Revenue and Nonrevenue Forecast Participation.

Note: Territories with a Forecast Participation of Nonforecast aren't eligible to be set as the forecast territory on either revenue or nonrevenue sales credits.

Configure Revenue Territory Default Assignment

You can configure the revenue territory assignment default logic to meet your specific business needs for reporting and forecasting the product amounts on an opportunity. When a sales representative creates an opportunity, the opportunity amount gets reported in the sales representative's pipeline and forecasted in their territory. This is achieved through the seeded defaulting logic, part of the revenue territory assignment process, that sets the appropriate credit recipient and forecast territory on the opportunity product lines.

Some companies have territory setup that may result in many overlapping territories assigned to the opportunity products. They may have specific business logic that determines to whom the pipeline from an opportunity should be reported and forecast. For example, the opportunity creator may not be the owning sales representative. Instead the owner of the sale may be determined by the role or geography of the sales representative involved in closing the sale, or the business unit of the sale. Many of these scenarios can be met through appropriate territory setup, the standard revenue territory assignment processing, and subsequent sales credit recipient and forecast territory defaulting logic.

Note: A sales credit recipient selected by a user doesn't get replaced by the application unless the recipient is no longer a qualified credit receiver. The application won't change the recipient if:
  • The Lock Owner setting for the revenue item is enabled

  • The current credit recipient is under deal protection.

  • The current credit recipient is an owner or member of the forecast territory.

The application sets the forecast territory owner as the new credit recipient if the preceding criteria isn't met.

This table outlines the predefined deal protection logic to set the forecast territory for each revenue line in the sales credit.

If you're using Deal protection... If you aren't using Deal protection...

Sets the owner of the revenue line as the Forecast territory's owner. As a result, multiple revenue lines have the same owner after assignment.

Sets the owner of the revenue line as the owner of the forecast territory after setting the Primary forecast territory of the sales credit revenue line.

You can make the revenue line owner deal protected by setting a deal protection period in the MOO_DEAL_PROTECTION_PERIOD profile option. Go to Setup and Maintenance > Manage Opportunity Profile Options and set MOO_DEAL_PROTECTION_PERIOD to a value as required.

If you need to bypass setting the owner of the revenue line as the owner of the forecast territory, you will have to lock the owner either through running a Groovy script while adding the Sales Credit Recipient (SCR). Alternatively, you can set the MOO_DEAL_PROTECTION_PERIOD profile option, as required.

In the trigger createNonRevenueSplitLineAndAssignSCR
add the following lines in places where you're adding the SCR.

splitNonRevenueRow.setAttribute('OwnerLockAsgnFlag','Y');

This will retain the resource that you're adding to the overlay from the territory resources.
From the script, the places are as follows:
1. //==============================================================
// Block of code to create Non-Revenue Sales Credit Splits
//==============================================================
def splitRevenueNonQuotaIterator = nvl(getAttribute("SplitRevenueNonQuota"),null);
splitRevenueNonQuotaIterator?.reset();
if (!splitRevenueNonQuotaIterator?.hasNext()) {
splitNonRevenueRow = splitRevenueNonQuotaIterator.createRow();

splitNonRevenueRow.setAttribute('SplitParentRevnId',getAttribute("RevnId"));
splitNonRevenueRow.setAttribute('SalesCreditTypeCode','NONQUOTA');
splitNonRevenueRow.setAttribute('SplitPercent',60);
splitNonRevenueRow.setAttribute('OwnerLockAsgnFlag','Y'); //<--Added code here
splitNonRevenueRow.setAttribute('ResourcePartyId',Opportunity?.OwnerResourcePartyId);
println('Opportunity?.OwnerResourcePartyId '+Opportunity?.OwnerResourcePartyId)
setAttribute('ResourcePartyId',Opportunity?.OwnerResourcePartyId)

2.
if (splitRevenueNonQuotaIterator1?.hasNext()) {
splitNonRevenueRow = splitRevenueNonQuotaIterator1.createRow();

splitNonRevenueRow.setAttribute('SplitParentRevnId',getAttribute("RevnId"));
splitNonRevenueRow.setAttribute('SalesCreditTypeCode','NONQUOTA');
splitNonRevenueRow.setAttribute('SplitPercent',84);
splitNonRevenueRow.setAttribute('OwnerLockAsgnFlag','Y'); //Added code here
splitNonRevenueRow.setAttribute('ResourcePartyId',newSCR);
splitRevenueNonQuotaIterator1.insertRow(splitNonRevenueRow);
setAttribute('SplitTypeCode','PARENTSPLIT');
setAttribute('ResourcePartyId',newSCR);
println('Inside IF SET ATTRIBUTE.. (!splitRevenueNonQuotaIterator1?.hasNext())....SplitTypeCode' +SplitTypeCode)

See the article, Configuring Credit Recipients and Forecast Territories Assignment (Doc. ID 2089301.1), available on My Oracle Support (support.oracle.com).

Manual Territory Assignment by Administrators

In the sales credits screens, sales administrators can manually assign a sales representative's territory to a product line when the territory hasn't been assigned automatically. Manual assignment allows sales personnel to forecast an opportunity immediately while the territory setup is being reviewed and updated.

To enable sales credit functionality in opportunities, you must set the profile option, Opportunity Sales Credit Enabled (MOO_ENABLE_SALES_CREDITS).

If the value of the profile option is Y, the Sales Credit column displays in the opportunity Products table, and the editable sales credit icon displays on product lines. The sales credits icon lets salespeople access the pages where they assign revenue and nonrevenue (overlay) sales credit to other users. For more information, see the related topics.

Prerequisites

Keep in mind the following prerequisites when salespeople assign sales credits in opportunities:

  • Territories have been set up and your company is using territories for assignment of opportunity products.

  • The user must have Full access to the opportunity to assign sales credits.

Set the Sales Credit Profile Option

Here's how to set the sales credit profile option.

  1. In the Setup and Maintenance work area, go to:

    • Offering: Sales

    • Functional Area: Opportunities

    • Task: Manage Opportunity Profile Options

  2. In the search region of the Manage Opportunity Profile Options page, search for the profile option, Opportunity Sales Credit Enabled (MOO_ENABLE_SALES_CREDITS).

  3. In the search results, click the profile option name.

  4. Set the profile option value to Y.

  5. Save your changes.

Recurring Products

Recurring schedules in opportunities enables you to enter and track opportunity products or product groups that are part of a subscription business model.

The subscription business model applies to the sale of goods, software, or services where the customer is required to pay a subscription price for access to the goods, software, or services, with additional usage or pay-as-you go charges in some cases. Some examples are:

  • Data and phone services

  • Credit collection or payment processing services

  • Software, platform, or data-as-a-service costs

  • Magazine subscriptions

  • Product life cycle costs

  • Engineering and infrastructure services

The subscription model can encompass both business-to-business (B2B) and business-to-consumer (B2C) customers. For example, a telecommunications company may sell mobile phone services to individuals, and multiple phone lines to a business for their employees. The supplier of these services typically charges the customer a periodic rate applicable to the plan that they subscribed to.

After you define a schedule for a subscription product or service, the application creates the recurring transactions from the frequency and the number of transactions specified in the schedule. There are several time frequencies to choose from, such as weekly, monthly, quarterly, yearly, and so on. The multiple frequencies make it easy to set up a recurring schedule, like a monthly subscription for three years, or a biweekly annual subscription. You can review the schedule and quickly add a one-time registration or installation fee, and adjust the amount or date of any transaction.

Subscription changes are easy to manage. If there is a change in the terms or price of the subscription, you can quickly define a new schedule to replace the previous one. If the original subscription is extended, say, for another year, you can easily extend the existing schedule on the product for the period that you want.

Product amounts from recurring schedules are summed into the corresponding quarterly or yearly periods, and are readily available in pipeline reports and forecast rollups for you and sales managers.

Enable Recurring Opportunity Products

To enable recurring opportunity products, use Oracle Application Composer to add the Schedule column to the opportunities UI.

You access the recurring schedules pages from the schedule icon in the Schedule column of the edit opportunity page. For more information about recurring opportunity products functionality, see the related topics.

Add the Schedule Column

Here's how to add the Schedule column to the edit opportunity page from Application Composer.

Note: When modifying the UI, you must make your changes in a sandbox. See the Configuring Applications Using Application Composer guide for more information about using sandboxes.
  1. Create and activate a sandbox to work in.

  2. Navigate to Application Composer.

  3. In the Application Composer page, select Sales as the object.

  4. Expand Standard Objects and navigate to Opportunity, then Pages. The Opportunity: Pages page appears.

  5. In the Opportunity: Pages page, ensure that the Application Pages tab is active.

  6. In the Details Page Layouts region, select the Default Layout in the table and then click the edit icon. The Details Layout: Default Layout page appears.

    Note that you may be using a different layout than the default one. If this is the case, then select the appropriate layout.

  7. In the Edit Revenue Table region, click the edit icon.

  8. In the Details Layout: Default Layout: Edit Revenue Table page, find the Schedule field in the Configure Summary Table window. Move the field from the Available Fields window to the Selected Fields window.

  9. Click Save and Close.

  10. Click Done in the Details Layout: Default Layout page.

  11. Validate the change by navigating to the edit opportunity page and ensuring that you can see the Schedule field in the Products table.

    Note that the user you sign in as to validate the change must belong to a sales resource organization. For example, you must sign in as a sales representative.

  12. Publish the sandbox.

  13. The Schedule field is now available to sales users in the edit opportunity pages.

Manage Fields for Recurring Opportunity Products

You can add and modify fields to the recurring schedules UI in opportunities. You can also rearrange the frequency values that salespeople can choose from when creating a recurring schedule.

For more information about recurring opportunity functionality, see the related topics.

Configure Additional Fields

You can use Oracle Page Composer to enable additional fields in the recurring schedule UI, to meet your specific requirements.

The fields you can enable are:

  • Expected Revenue

  • Status

  • Win Loss Reason

  • Estimated Price

  • Best Case

  • Worst Case

  • Win Probability

  • Additional Number 1

  • Additional Amount 1

  • Additional Text 1

  • Additional Text 2

Note: To perform this procedure, you must have already enabled the Schedule icon in the Products table in the Edit Opportunity page. For more information, see the topic, Enable Recurring Opportunity Products.

Here are the steps to enable these fields:

  1. Click Navigator > Sales > Opportunities.

  2. Create and activate a sandbox to work in.

  3. Click your user name in the global header and select Edit Pages.

  4. Select a layer that you want to modify. For example, you can make the changes available only to users with a specific job role, such as sales representatives. Click OK to commit the modified layer.

  5. When modifying work areas, you start in the Design view. Design view lets you navigate to the component you want to modify.

  6. Click an opportunity to edit it.

    The Edit Opportunity page appears.

  7. Click the Schedule icon in the Products table.

    The Manage Schedule page appears.

  8. Click Select.

  9. Hover over the last column in the Transactions table header row until a border appears. Click the edge of the border.

  10. In the menu that appears, click Edit Parent Component.

    The Component Properties window appears.

  11. Click the Children tab.

  12. Select the fields you want to enable.

  13. Click Close to save.

You can use a similar procedure to modify the Set Schedule Page.

For more information about using Application Composer and Page Composer, see the Configuring Applications Using Application Composer guide.

Change the Display Order of Frequencies

When you create a recurring schedule, you must select a value, such as monthly, from the Frequency field. You can change the display order of the frequencies that display in the list. For example, you can make the Monthly value the first one in the list. You make these changes by modifying the supplied lookup type, MOO_RECURRING_FREQUENCY.

Here's how to change the display sequence.

  1. In the Setup and Maintenance work area, go to:

    • Offering: Sales

    • Functional Area: Opportunities

    • Task: Manage Standard Lookups

  2. In the Lookup Type field of the Manage Standard Lookups page, enter MOO_RECURRING_FREQUENCY and search. Or, you can enter Sales Recurring Revenue Frequency in the Meaning field and search.

  3. In the list of values, reorder the items as needed by changing the numbering in the Display Sequence column.

    The value that has the lowest display sequence is the one that's set as the default value.

  4. Click Save and Close.

Additional Implementation Considerations for Revenue

Opportunities and their product lines share common attributes, for example, status or win probability percentage. For several attributes, under certain conditions, the application automatically synchronizes them so that they're the same. In addition, the application updates certain opportunity and product line attributes based on the values of other attributes.

The attributes that the application synchronizes or updates automatically are:

  • Win probability

  • Close date

  • Include in forecast setting

  • Status

  • Win/loss reason

  • Competitor

Note: An attribute is said to be synchronized if its opportunity and product line values are the same, and if the product line is in the same status category as its opportunity. If a product line and its opportunity both have undefined values, they're considered to have the same value.

Synchronization of Opportunity and Product Line Attribute

The application synchronizes certain product line attributes based on the opportunity-level attribute, under certain conditions.

Synchronization occurs for these attributes:

  • Win probability

  • Close date

  • Include in forecast setting

  • Status (not status category)

Here is an example of close date synchronization:

  • An opportunity with an Open status category has a close date of July 14, 2018.

  • Product lines 1, 2, and 3 have the same close date and they're in the same status category.

  • Product line 4 has a different close date, but the same status category.

  • The close date of the opportunity is changed to August 14, 2018. The application automatically sets the close dates of product lines 1, 2, and 3 to the same close date as that of the opportunity. The close date of product line 4 remains unchanged, because it has close date that wasn't already synchronized with the date of the opportunity.

Opportunity Status Updates

These scenarios explain what happens when the opportunity status is updated. Note that status values display in alphabetic order on the UI.

  • Opportunity status is updated to a Won status:

    • The application updates the opportunity win probability to 100 percent. It also updates all synchronized product lines' win probability to 100 percent.

  • Opportunity status is updated to a Lost or No Sale status:

    • The application updates the opportunity close date to the current date. It doesn't update the close date on synchronized product lines.

  • Opportunity status is updated from an Open status to a Closed status:

    • The application enables the opportunity win/loss reason attribute.

    • If an opportunity primary competitor has been defined, the application updates the product line competitor to the opportunity primary competitor for all opportunity product lines, if they aren't already defined. This action applies only to the close opportunity and mass update opportunities flows.

  • Opportunity status is updated from a Closed status to an Open status:

    • The application disables the opportunity win/loss reason attribute.

    • The application sets the opportunity win/loss reason attribute to "undefined". It doesn't update the win/loss reason on synchronized product lines.

Product Line Status Updates

These scenarios explain what happens when the product line status is updated:

  • Product line status is updated to a Won status: The application sets the product line win probability to 100 percent.

  • Product line status is updated to a Lost or No Sale status: The application sets the product line close date to the current date.

  • Product line status is updated to a Closed status: The application enables the product line win/loss reason attribute.

  • Product line status is updated to an Open status:

    • The application disables the product line win/loss reason attribute.

    • The application updates the product line win/loss reason attribute to "undefined".

Opportunity Win/Loss Reason Updates

When an opportunity is in an Open status, the opportunity win/loss reason attribute is disabled. Win/loss reason is activated when the opportunity is set to a Closed status. When the opportunity win/loss reason is updated, the application updates all opportunity product lines where the win/loss reason attribute is synchronized.

Note: If the opportunity line item status is set to inactive, then Reason field is editable in the List view so that you can include a reason why the line item isn't active. However, the Reason field isn't editable on the Form view of the Opportunity Line Item. This is expected behavior due to the difference in the page structure. The edit page from the List view has a table view for Revenues, while the Form page has a form view and is therefore not editable.

Opportunity and Product Line Competitor Updates

If a primary competitor has been defined at the opportunity level, when the opportunity status changes from an Open status to a Closed status, the application updates the product line competitor to the primary competitor for all lines that don't already have a competitor.

Tip: If a product line without a competitor is set to closed and the opportunity is saved, the application displays a dialog box that lets you copy the opportunity primary competitor to the product lines without competitors.

This action applies only to edit opportunity and close opportunity flows. It doesn't apply to the mass update flow.

You can enhance and perform opportunity summary and revenue line synchronization for some attributes using Groovy scripting. Use the sample scripts in this topic to add rule definitions to the predefined opportunity cascading logic. The rule definitions keep opportunity summary and revenue lines in synchronization with each other.

Here's how to add specific attributes for opportunity summary and revenue lines synchronization:

  1. Sign in as a sales administrator or a setup user.

  2. Navigate to Application Composer.

  3. Select Sales to filter the object search.

  4. Expand Standard Objects and then expand Opportunity.

  5. Under Opportunity, click Server Scripts.

    The Server Scripts Help Request page opens.

  6. Under Validation Rules tab, select Action - Add under the Field Rules region and enter values as shown in the following example:

    Field Value

    Field Name

    Choose the field or attribute that you want from the drop-down list of values.

    Rule Name

    Enter a meaning full name for the rule.

    Error Message

    Enter a user-defined error message, for example, a message that warns the user the synchronization cascade has failed.

    Rule Definition

    In the script text field, cut and paste the script that you have written to validate the condition. For example, see the sections Sample Groovy Scripts for Opportunity Attributes and Sample Groovy Scripts for Opportunity Revenue Attributes in this topic for sample groovy scripts.

  7. Click Save and Close.

For a more detailed explanation of Groovy scripting using Application Composer, see the Oracle Applications Cloud Groovy Scripting Reference.

Sample Groovy Scripts for Opportunity Attributes

This table contains sample groovy script code for a subset of opportunity attributes:

Attribute Sample Groovy Script

Close Date

cascadeInSyncValueToAllRevenues("EffectiveDate", oldValue, newValue)

return true

Status and StatusCodeSetId

Both the Status and StatusCodeSetId attributes have to be assigned together. If you decide to selectively enable synchronization cascade for Status, then you must also perform synchronization cascade for StatusCodeSetId.

// For Status def cache_name = '_statuscode_insync_cascade' 
if (oldValue == 'OPEN' && newValue == 'WON')  
{
// Only allow synchronization cascade if Status moved from OPEN to WON.    
cascadeInSyncValueToAllRevenues("StatusCode", oldValue, newValue)        

// Mark this opportunity's StatusCode as having been synchronization cascaded  
adf.userSession.userData.put(getAttribute('OptyId') + cache_name, true)
// mark this opportunity as having status just cascaded. 
}
return true

// For StatusCodeSetIddef cache_name = '_statuscode_insync_cascade'def insync_cascade = adf.userSession.userData[getAttribute('OptyId') 
+ cache_name]println("StatusCodeSetId: insync_cascade = " 
+ insync_cascade)insync_cascade = (insync_cascade == null) ? false : insync_cascade  
// ensure insync_cascade is either true/false try 

{   
if (insync_cascade)    
    {
cascadeInSyncValueToAllRevenues("StatusCodeSetId", oldValue, newValue)     
// only cascade if the Status has just been cascaded.   
    }
}
Finally
{  adf.userSession.userData.remove(getAttribute("OptyId") + cache_name)
}
return true

Win/Loss and ReasonWonLostCodeSetId

// For Win/Loss Reasondef cache_name = '_winlossreason_insync_cascade'if (oldValue == 'INSTALL_BASE' && newValue == 'TEST_VO_1') 
{   cascadeInSyncValueToAllRevenues("ReasonWonLostCode", oldValue, newValue)  
// Mark this opportunity's WinLossReason as having been synchronization cascaded   adf.userSession.userData.put(getAttribute('OptyId') 
+ cache_name, true)}return true
// For ReasonWonLostCodeSetIddef cache_name = '_winlossreason_insync_cascade'def insync_cascade = adf.userSession.userData[getAttribute('OptyId') 
+ cache_name]println("ReasonWonLostCodeSetId: insync_cascade = " 
+ insync_cascade)insync_cascade = (insync_cascade == null) ? false : insync_cascade    

// ensure insync_cascade is either true/falsetry 
{
  if (insync_cascade)
     {     cascadeInSyncValueToAllRevenues("ReasonWonLostCodeSetId", oldValue, newValue)      
     }
}finally
{  
adf.userSession.userData.remove(getAttribute("OptyId") + cache_name)
}
return true

Primary Partner

cascadeInSyncValueToAllRevenues("PrimaryPartnerId", oldValue, newValue)

return true

Primary Competitor

cascadeInSyncValueToAllRevenues("PrimaryCompetitorId", oldValue, newValue)

return true

Sample Groovy Scripts for Opportunity Revenue Attributes

Let's look at sample groovy script code for a subset of opportunity revenue attributes.

Attribute Sample Groovy Script

Win Probability

cascadeInSyncValueToAllRevenues("WinProb", oldValue, newValue) 
return true

Sales Channel

cascadeInSyncValueToAllRevenues("SalesChannelCd", oldValue, newValue)
return true

Include Forecast

cascadeInSyncValueToAllRevenues("SalesChannelCd", oldValue, newValue)
return true

Add Status Categories for Open Revenue

You can specify additional revenue line status categories to include when the application calculates opportunity amount. By default, the application only includes revenue lines in Open status when calculating the opportunity summary amount. However, you can include, for example, both won and open lines by modifying the lookup type, Open Opportunity Rollup Status Mapping.

Here's how to modify the Open Opportunity Rollup Status Mapping lookup type:

  1. In the Setup and Maintenance work area, go to the following:

    • Offering: Sales

    • Functional Area: Opportunities

    • Task: Manage Standard Lookups

  2. In the Manage Standard Lookups page, enter Open Opportunity Rollup Status Mapping in the Meaning field. The lookup type code, which you can search for in the Lookup Type field, is ORA_MOO_OPEN_ROLLUP_MAPPING.

  3. Add the new lookup code. For example, add a code called WON.

    • Use Enabled to enable or disable a specific lookup code.

    • Update the meaning (display name), start date, end date, or display sequence of any of the predefined values.

    • Add or remove lookup codes, as long as they follow the correct lookup code formatting.

    Note: The OPEN category can't be modified.
  4. Click Save and Close.

After you make the changes, the opportunity summary amount calculation will include all revenue lines in OPEN status category, as well as any other status categories you have added and enabled.

FAQs for Opportunity Products and Revenue

This section contains the most frequently asked questions (FAQs) when setting up and maintaining opportunity products and revenue. In this section you can find the answers to such questions as:

  • Why you might not see REST API revenue line updates in opportunities

  • How to disable opportunity-to-revenue line synchronization logic

  • The maximum number of opportunity revenue lines for one opportunity

Why can't I see REST API revenue line updates in opportunities?

If a salesperson creates or updates a revenue line in the Opportunities UI and you also create or update the same record using a REST API, then the last record accessed is temporarily held in a storage area as cached data.

This means that the more recent REST API update to the same revenue line record isn't displayed on the Opportunities UI. To get around this issue, close and open the opportunity page after you complete your REST API revenue line record updates.

How can I disable opportunity to revenue line synchronization logic?

By default, opportunity cascading logic keeps opportunity summary and revenue lines in synchronization with each other. If you no longer want opportunity summary and revenue lines to be synchronized, open the Opportunity Synchronization Cascade Enabled profile option (MOO_ENABLE_INSYNC_CASCADE) and set the value to N. Note that you can enhance and perform opportunity summary and revenue line synchronization for some attributes using Groovy scripting if you choose to disable the predefined opportunity summary and revenue lines synchronization.

What's the maximum number of Opportunity revenue lines for one opportunity?

The maximum number of Opportunity revenue lines is 500.