Browser version scriptSkip Headers

Oracle® Fusion Applications CRM Extensibility Guide
11g Release 1 (11.1.3)
Part Number E20388-03
Go to contents  page
Contents
Go to Previous  page
Previous
Go to previous page
Next

1 Extending Oracle Fusion CRM Applications

This chapter contains the following:

Extending CRM Applications: Top Tasks

Extending CRM Applications: How It Works

Customizing Oracle Fusion CRM Applications Using Oracle Fusion CRM Application Composer: Explained

Defining Objects: Explained

Object Relationships: Explained

Defining Fields: Explained

Field Types

Defining Pages: Explained

Creating a Work Area: Explained

Subtabs: Explained

Tree Nodes: Explained

Buttons and Links: Explained

Saved Searches for CRM Objects: Explained

Securing Custom Objects: Explained

Groovy Scripting: Explained

Groovy Scripting: Examples

Supported Classes and Methods for Use in Groovy Scripts: Explained

Importing and Exporting Custom Objects: Explained

FAQs for Extending Oracle Fusion CRM Applications

Extending CRM Applications: Top Tasks

The Oracle Fusion CRM Application Composer is but one tool that lets you customize and extend your Oracle Fusion CRM applications. Before you start to extend and customize any application within Oracle Fusion CRM, refer first to the Oracle Fusion Applications Extensibility Guide to learn more about all the extensibility options and tools that are available to you.

The Oracle Fusion Applications Extensibility Guide walks you through the customization process for all Oracle Fusion applications, not just within Oracle Fusion CRM. After reviewing that guide, you can then review the Oracle Fusion CRM Extensibility Guide to understand in more detail how to use the Application Composer to extend and customize an application within Oracle Fusion CRM.

Getting Started: Review the Oracle Fusion Applications Extensibility Guide

Extending CRM Applications: How It Works

The Oracle Fusion CRM Application Composer is a browser-based configuration tool that enables business analysts and administrators, not just application developers, to customize and extend an Oracle Fusion CRM application. Make the type of data model changes which, for non-CRM applications, can only be made by application developers. For example, easily create a new object and related fields, then create new Enterprise pages where that object and its fields are exposed to users. The Application Composer is a design time at runtime tool, which means that you can navigate to the Application Composer directly from a CRM application, make your changes, and see most changes take immediate effect in real time, without having to sign back in to the application. Data model changes, such as the creation of custom fields, do require that you reauthenticate before you can see those changes.

Pattern-Based Application Design

The Application Composer hides the complexity of customization from business analysts by leveraging a set of standard design patterns and wizards. You focus on the application changes that your business requires (object model extensions and layout changes, for example), and the Application Composer creates the underlying object artifacts for you.

Access the Application Composer from any CRM application at runtime by using the Navigator menu, and selecting Application Composer under the Tools category. The first view of the Application Composer is the main Overview page, which is the entry point into all your customization options.

This is a screenshot of the main Overview
page in the Oracle Fusion Application Composer.

From the Application Composer's Overview page, you can make application changes such as:

Getting Started: The Application Composer's Overview Page

To access the Application Composer, log in with the Customer Relationship Management Administrator job role. Then, select Application Composer under the Tools category in the Navigator menu to navigate to the main Overview page.

From the main Overview page, select the application you want to customize using the Application choice list. Then:

Change the selected application in the Application choice list at any time to customize another CRM application.

Oracle Fusion Applications Extensibility

The Application Composer is but one tool that lets you customize and extend your Oracle Fusion CRM applications. To learn more about extensibility options that are available to you across all Oracle Fusion applications, see the Oracle Fusion Applications Extensibility Guide.

Customizing Oracle Fusion CRM Applications Using Oracle Fusion CRM Application Composer: Explained

The Oracle Fusion CRM Application Composer provides a series of task flows which let you customize and extend an Oracle Fusion CRM application according to the needs of your users. For example, you can create new fields for an existing standard object, and expose those new fields on the object's work area. Or, create a brand new custom object and related fields, then create a work area where that object and its fields are exposed to users. The task flows available to you are dependent upon the CRM application that you are customizing. This topic provides an overview of which CRM Application Composer task flows are available for use in each CRM application.

This topic addresses extensibility for these CRM applications:

You can also refer to the product-specific implementation guides to learn more about how a particular application works with the Application Composer.

Oracle Fusion Common CRM

The creation of custom objects is not supported for the Oracle Fusion Common CRM application.

For Oracle Fusion Common CRM standard objects, you can do the following in the Application Composer:


Customization Task Flow

Trading Community Org Contact

Trading Community Resource Profile

Trading Community Organization Profile

Trading Community Address

Activity Task

Interaction

Note

Create and expose custom fields on existing pages that are available for extensibility

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Edit display label and help text of standard fields

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Create custom currency fields

No

No

No

No

No

No

No

Index custom fields

Yes

Yes

Yes

Yes

No

Yes

Yes

Add custom buttons (Groovy script or URL) to selected pages

No

Yes

No

No

No

Yes

Yes

Add links (URL) to selected pages

No

Yes

No

No

No

Yes

Yes

Create and expose custom child objects on an object's details page

No

No

No

No

Not applicable

Not applicable

Not applicable

Create custom field-level and object-level validation logic (Groovy scripts)

Yes

Yes

Yes

Yes

No

Yes

Yes

Create custom logic at various object trigger points (Groovy scripts)

Yes

Yes

Yes

Yes

No

Yes

Yes

Create custom saved searches at the site level

Yes

Yes

Yes

Yes

No

Yes

Yes

Provide Mobile page support

Yes

No

No

No

No

No

No

Create custom relationships

Yes

Yes

Yes

Yes

No

No

No

Manage object workflows

No

Yes

No

No

No

No

No

Web services

Yes

Yes

Yes

Yes

Yes

Yes

Not applicable

Import data using file-based import

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Export data using bulk export

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Create custom subject areas

No

Yes

No

No

No

No

No

Oracle Fusion Customer Center

You can create custom objects for the Oracle Fusion Customer Center application.

For Oracle Fusion Customer Center's standard object, you can do the following in the Application Composer:


Customization Task Flow

Sales Account Profile

Create and expose custom fields on existing pages that are available for extensibility

Yes

Edit display label and help text of standard fields

Yes

Create custom currency fields

No

Index custom fields

Yes

Add custom buttons (Groovy script or URL) to selected pages

No

Add links (URL) to selected pages

No

Create and expose custom child objects on an object's details page

Yes

Create custom field-level and object-level validation logic (Groovy scripts)

Yes

Create custom logic at various object trigger points (Groovy scripts)

Yes

Create custom saved searches at the site level

No

Provide Mobile page support

No

Create custom relationships

Yes

Manage object workflows

Yes

Web services

Yes

Import data using file-based import

Yes

Export data using bulk export

Yes

Create custom subject areas

Yes

Oracle Fusion Marketing

You can create custom objects for the Oracle Fusion Marketing application.

For Oracle Fusion Marketing standard objects, you can do the following in the Application Composer:


Customization Task Flow

Sales Lead

Marketing Campaign

Marketing Budget

Marketing Response

Marketing List

Marketing Treatment

Marketing Event Activity

MarketingAdvertising Activity

Marketing Claim

Marketing Claim Settlement (child)

Marketing Budget Entry

Marketing Budget Fund Request

Create and expose custom fields on existing pages that are available for extensibility

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Edit display label and help text of standard fields

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Create custom currency fields

No

No

No

No

No

No

No

No

No

No

No

No

Index custom fields

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Add custom buttons (Groovy script or URL) to selected pages

Yes

No

Yes

No

No

No

No

No

Yes

Yes

Yes

Yes

Add links (URL) to selected pages

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Create and expose custom child objects on an object's details page

Yes

No

Yes

Yes

No

No

No

No

Yes

Not applicable

No

Yes

Create custom field-level and object-level validation logic (Groovy scripts)

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Create custom logic at various object trigger points (Groovy scripts)

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Create custom saved searches at the site level

Yes

Yes

Yes

Yes

Yes

Yes

No

No

Yes

No

Yes

Yes

Provide Mobile page support

No

No

No

No

No

No

No

No

No

No

No

No

Create custom relationships

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

No

Yes

Yes

Manage object workflows

Yes

No

Yes

No

No

No

No

No

Yes

Yes

Yes

Yes

Web services

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Import data using file-based import

Yes

Yes

Yes

Yes

Yes

No

Yes

Yes

No

No

No

No

Export data using bulk export

Yes

No

Yes

No

No

No

No

No

No

No

No

No

Create custom subject areas

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Yes

Oracle Fusion Sales

You can create custom objects for the Oracle Fusion Sales application.

For Oracle Fusion Sales standard objects, you can do the following in the Application Composer:


Customization Task Flow

Opportunity

Sales Competitor

Partner

Opportunity Resource (child)

Opportunity Revenue (child)

Create and expose custom fields on existing pages that are available for extensibility

Yes

Yes

Yes

Yes

Yes

Edit display label and help text of standard fields

Yes

Yes

Yes

Yes

Yes

Create custom currency fields

Yes

No

No

No

Yes

Index custom fields

Yes

Yes

Yes

Yes

Yes

Add custom buttons (Groovy script or URL) to selected pages

Yes

Yes

Yes

Yes

Yes

Add links (URL) to selected pages

Yes

Yes

Yes

Yes

Yes

Create and expose custom child objects on an object's details page

Yes

Yes

Yes

Not applicable

Not applicable

Create custom field-level and object-level validation logic (Groovy scripts)

Yes

Yes

Yes

Yes

Yes

Create custom logic at various object trigger points (Groovy scripts)

Yes

Yes

Yes

Yes

Yes

Create custom saved searches at the site level

Yes

Yes

Yes

No

No

Provide Mobile page support

Yes

Yes

Yes

Yes

Yes

Create custom relationships

Yes

Yes

Yes

No

No

Manage object workflows

Yes

Yes

Yes

No

No

Web services

Yes

Yes

Yes

Not applicable

Not applicable

Import data using file-based import

Yes

Yes

Yes

Yes

Yes

Export data using bulk export

Yes

Yes

Yes

Yes

Yes

Create custom subject areas

Yes

Yes

Yes

Yes

Yes

Oracle Fusion Sales Catalog

The creation of custom objects is not supported for the Oracle Fusion Sales Catalog application.

For Oracle Fusion Sales Catalog's standard object, you can do the following in the Application Composer:


Customization Task Flow

Product Group

Create and expose custom fields on existing pages that are available for extensibility

Yes

Edit display label and help text of standard fields

Yes

Create custom currency fields

No

Index custom fields

Yes

Add custom buttons (Groovy script or URL) to selected pages

No

Add links (URL) to selected pages

No

Create and expose custom child objects on an object's details page

No

Create custom field-level and object-level validation logic (Groovy scripts)

No

Create custom logic at various object trigger points (Groovy scripts)

No

Create custom saved searches at the site level

No

Provide Mobile page support

No

Create custom relationships

No

Manage object workflows

No

Web services

No

Import data using file-based import

Yes

Export data using bulk export

Yes

Create custom subject areas

No

Defining Objects: Explained

One of the primary customization options available to you when using the Oracle Fusion CRM Application Composer is the ability to extend a CRM application's object model. Customize CRM objects by adding new fields to an existing object (standard objects), or create entirely new objects (custom objects). Standard objects are objects that are delivered with a CRM application, and made available to the Application Composer for customization. Custom objects are objects that you create using the Application Composer. You can create either top-level objects (objects without a parent) or child objects (objects created in the context of a parent).

Review these aspects of the object model extension process in the Application Composer before you begin to customize or extend your CRM application's object model:

CRM Application Composer's Object Tree

Access the Application Composer from a CRM application at runtime by using the Navigator menu. The first view of the Application Composer is the main Overview page, which is the entry point into all your customization options.

This is a screenshot of the main Overview
page in the Oracle Fusion CRM Application Composer.

On the main Overview page, the regional pane at left displays the object tree, which lets you browse an application's existing object configuration in a tree format. The object tree reflects the latest configuration of the application: both standard objects as well as custom objects.

To use the object tree:

  1. Select Application Composer from the Navigator menu, under the Tools category.

  2. On the main Overview page, select an application from the Application choice list.

    This is a screenshot of the Application
choice list, where you can select which application you want to extend.

  3. For each object node, whether standard or custom, expand it further to view and edit object details, such as an object's fields and Enterprise pages where the object is exposed.

    This is a screenshot of the object
tree in the Oracle Fusion CRM Application Composer.

    Tip

    At the top of the object tree, you can also click the New icon to create a new custom object.

    For both standard and custom objects, you can view and edit the following details:

    For custom objects, you can also view and edit details for:

Creating a Custom Object

To create a new custom object, you first select an application on the main Overview page of the Application Composer. The new custom object will belong to the application that you select. After you select the application:

  1. Select the Custom Objects node or link in either the object tree or local area of the main Overview page.

    On the resulting summary table, click the New icon.

  2. Or, at the top of the object tree, click the New icon

  3. Complete the primary identifying attributes for a custom object:

    1. Display Label

      An object's display label is the user-friendly label for an object, and also becomes the default page title for the object's work area.

    2. Plural Label

      The plural label is used when the object is displayed as the detail section of a master-detail page, such as on a subtab.

    3. Record Name

      Use the Record Name field to specify the display label for the object's RecordName field. The RecordName field stores the "name" of the record. For example, for an opportunity object, this RecordName field stores the opportunity's name. Accordingly, if you were creating this object as a custom object, then you would set the Record Name field to Opportunity Name.

      Typically, this field is the object's primary user-recognizable identifier for the object, and as such, is usually the identifier that runtime users drill down on, from the overview page to the detail page.

    4. Object Name

      The object name is the internal name for the object.

    5. Description

Tip

To create a custom child object, click the Create Child Object button in the standard or custom objects summary table, or from an object's Object Overview page.

Once created, a child object cannot be changed to a parent object. Similarly, a parent object cannot be changed to a child object.

Child objects are discussed below.

Using the Object Overview Page

The Object Overview page provides a high-level overview of a standard or custom object. The Object Overview page displays the primary attributes for an object, plus a list of child objects and related objects, if any.

This is a screenshot of the Object
Overview page for an object, in the Oracle Fusion CRM Application
Composer.

To access the Object Overview page:

  1. Select an application on the main Overview page.

  2. Select a standard or custom object in the object tree.

  3. Or, select the Standard Objects or Custom Objects node or link in either the object tree or local area of the main Overview page, choose an object from the resulting summary table, and select the Edit icon.

From the Object Overview page, you can:

Editing an Object's Attributes

After an object has been created, you can edit its attributes from its Object Overview page.

To edit an object's attributes:

  1. Select an application on the main Overview page.

  2. Select the Standard Objects or Custom Objects node or link in either the object tree or local area of the main Overview page.

  3. From the resulting summary table, select an object and then select the Edit icon to navigate to its Object Overview page.

  4. On the Object Overview page, click Edit:

Viewing Child and Related Objects

The Object Overview page displays a list of child objects and related objects, if any, that have been created for an object. You can also create new child objects from this page.

To create a child object for a standard or custom object:

  1. Navigate to an object's Object Overview page.

  2. Click the Create Child Object button. Creating a child object is the same as creating a custom object, except:

Deleting a Custom Object

The Application Composer does not support the deletion of either standard or custom objects. If you no longer need an object, optionally enter a note in the description that the object is no longer used.

Object Relationships: Explained

A relationship is a foreign key association between two objects, and indicates a connection between two objects' data. You can expose this connection on Enterprise pages through the use of child or related object subtabs or tree nodes. Using the Oracle Fusion CRM Application Composer, you can create one-to-many relationships between two objects within the same application, where one object's primary identifier is stored in another object's table. A relationship must exist before you can expose the "many" objects on a subtab or tree node that is displayed on the "one" object's details page or tree. For example, an account can have multiple service requests associated to it. To expose a list of service requests associated with a specific account as a subtab on the account's details page, you must first create a one-to-many relationship between the account and service request objects. You can create these relationships implicitly by creating a child object or by creating a dynamic choice list. Or, create relationships explicitly on the Create Relationship page.

Review these aspects of the relationship creation process in the Application Composer before you begin to create relationships between objects:

Relationship Types

Four types of one-to-many relationships exist:

Creating Reference Relationships

Create a foreign key-based, one-to-many relationship between two top-level objects explicitly using the Create Relationship page. Explicitly created relationships are also known as reference relationships.

You can also create a foreign key-based, one-to-many relationship by creating child objects and dynamic choice lists. These implicit relationships are discussed in related topics.

To explicitly create a relationship between two top-level objects within the same application:

  1. Select Relationships in the Common Setup pane.

  2. On the Relationships page, click the New icon.

    This is a screenshot of the Relationships
page in the Oracle Fusion CRM Application Composer.

  3. Select the source object and target object.

    This is a screenshot of the Create
Relationship page in the Oracle Fusion CRM Application Composer.

    A child object cannot be the source object or target object.

    Common components, such as notes, interactions, or tasks, are not available for selection as either source objects or target objects.

    In general, you create a relationship between two objects within the same application. You can, however, select common objects as target objects. Common objects include:

    Once you create a relationship, you can no longer edit the source and target objects.

    This relationship adds a field to the target object to store the foreign key details. If the source object is ever deleted, the target object records remain in the system.

  4. Enter the relationship name and description.

    Once you create a relationship, you can no longer edit the relationship name.

  5. Optionally add the target object in a subtab to the source object's detail page, or as a tree node.

Note

You can create multiple relationships between the same source and target objects. For example, create both a Primary Contact and Secondary Contact relationship between the contact and opportunity objects.

Adding Subtabs or Tree Nodes

After you create relationships between objects, you can then expose the "many" objects on a subtab or tree node that is displayed on the "one" object's details page or tree.

When adding a subtab or a tree node to an object's details page or object, you select to add a Child or Related Objects subtab from the object's Pages Overview page. The Application Composer lets you add a subtab or tree node based on any target object that has a relationship with the current object as the source object. Subtabs and tree nodes are discussed in related topics.

Many-to-Many Relationships

Objects can also have a many-to-many relationship. For example, a service request can have multiple employees working on it. At the same time, a single employee can work on multiple service requests. In this scenario, you would create a many-to-many relationship between the service request and employee objects, where the related records from both objects store their primary identifiers in an intersection table.

To create a many-to-many relationship using the Application Composer:

  1. Create a child object of one object, and use this child object to represent the intersection table that stores the record identifiers of both objects.

    For example, create a service request member object as a child of the service request object. The service request member object's table records the service request identifier as a foreign key.

  2. Add a dynamic choice list for the new child object whose related object is the other object in the many-to-many relationship.

    For example, create a dynamic choice list, Support Representative, for the service request member object where the choice list's related object is employee. The Application Composer automatically creates the underlying relationship for you, where the employee is the source object and the service request member is the target object. The service request member object's table records the employee identifier as a foreign key.

Now, the service request member object's table records two foreign keys: one for the service request object and the other for the employee object. This enables the many-to-many relationship. You can now do the following:

Defining Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. A standard object has a set of standard fields. Standard fields are the fields that are delivered for a standard object in a CRM application. The fields that you add to an object are custom fields. When creating a custom field, the Application Composer provides a set of field types that you can choose from. For example, you can create a check box field, or create a long text field. When you create custom fields for objects and expose the fields on Enterprise pages, the Application Composer automatically creates all the underlying object artifacts for you, and provides full Web service support for those new fields, as well. The Application Composer also makes it easy to enable your object model extensions for importing and exporting.

Review these aspects of editing fields in the Application Composer before you begin to customize or extend your CRM application's object model:

Adding Fields to Objects

Use the Fields page to review the list of standard and custom fields for an object, and create custom fields. A CRM object can have a maximum of 625 fields.

To view the Fields page for an object:

  1. Select an application from the Application choice list on the main Overview page.

  2. Select either the Standard Objects or Custom Objects node in the object tree to expand the list of objects.

  3. Select the object itself to further expand the tree hierarchy.

  4. Select the Fields node to navigate to the Fields page.

On the Fields page:

Deleting Fields

The Application Composer does not support the deletion of either standard or custom fields from objects. If you no longer need a field, optionally enter a note in the field description that the field is no longer used.

Field Types

Field Types and Field Properties: Explained

When you create a custom field, you select from a set of standard field types. Each field type has a corresponding set of standard properties. Some properties are unique to a specific field type, whereas other properties are common across field types. For example, for all field types, you must specify a display label for the field to indicate how you want the field to appear on an Enterprise page.

Before you create a new field for a object, you should understand:

Field Types

When creating a new field for a object, the Oracle Fusion CRM Application Composer provides a set of standard field types that you can choose from.

The types of fields that you can create are listed below.

Common Field Properties

When you create a custom field, you first select the field type. For example, are you creating a check box field, a formula field, or a long text field? You cannot change the field type after the field is created. The specified field type controls which field properties you must define when creating the field. Some properties are common across field types, whereas other properties are unique to a specific field type.

The common field properties that you can define for a custom field are listed in this table, along with the regions on the field configuration pages where they appear and a list of the applicable field types that you must set these properties for. Use this table to understand the common properties that you must define when creating a new field.


Field Property

Field Property Region

Related Field Types

Label

Specify the display label for the field.

A maximum length of 80 characters is recommended, although no maximum length is actually enforced.

Appearance

These properties control how the field appears to your users in the runtime application.

Set this property for all field types.

Help Text

The help text displays when users hover over the field in the runtime application.

A maximum length of 80 characters is recommended, although no maximum length is actually enforced.

Appearance

Set this property for all field types.

Display Width

Specify the display width for most field types at runtime. The display width is the actual character width for the field on an Enterprise page.

Tip

When setting the display width, consider the resolution in use where this field will be displayed on an Enterprise page. A display width that is too wide will stretch beyond the resolution of the display and result in scroll bars.

Generally, enter a display width of no more than 20 to 25 characters.

Appearance

Set this property for all field types except for check box, date, and datetime fields.

Name

Enter a unique field name, which is for internal use only.

The field name is automatically populated based on the field label you enter, but without spaces.

Field names can contain only underscores and alphanumeric characters. They must begin with a letter, not include spaces, not end with an underscore, and not contain consecutive underscores. Field names are limited to 28 characters.

You cannot change this property after the field is created.

Tip

It is possible to create custom fields with different names, but the same display label. Avoid this scenario, however, so that you do not see two fields with the same display label when configuring an Enterprise page.

Note

The API name is also automatically generated for a field, by taking the logical name and appending _c. The API name is used in your Groovy scripts.

Name

Set this property for all field types.

Description

Enter a unique field description, which is for internal use only.

Name

Set this property for all field types.

Required

Indicate if the field is a required field. You can also optionally use the expression editor to write an expression that describes the conditions required for this field to be required.

Note

If you write an expression to control whether a field is required, then you must also configure the Depends On choice list. This choice list includes fields from the current object, and is used in the evaluation of your expression at runtime.

Constraints

Specify constraints, which let you control the runtime behavior of the field.

Set this property for all field types except for formula fields.

Updateable

Indicate if the field is an updateable field. You can also optionally use the expression editor to write an expression that describes the conditions required for this field to be updateable. This includes being updateable on an Enterprise page, via Web services, through the import and export functionality, and by server scripts.

Note

If you write an expression to control whether a field is updateable, then you must also configure the Depends On choice list. This choice list includes fields from the current object, and is used in the evaluation of your expression at runtime.

Constraints

Set this property for all field types except for formula fields.

Searchable

Indicate if you want this field to be made available for selection as an additional search criteria from the Add Fields choice list in the Advanced Search mode.

Constraints

Set this property for all field types except for long text and formula fields.

Indexed

Enable faster searching by indexing this column.

Only a limited number of columns are indexed. Accordingly, use this property only on the most frequently searched fields.

You cannot change this property after the field is created.

Constraints

Set this property for text, number, date, datetime, currency, and percentage field types.

You cannot index long text, formula, and check box fields, or fixed and dynamic choice lists.

Note

You cannot index long text fields. Instead, your users can use the Oracle Fusion Applications search capability to search these field types.

Fixed Value

Specify a literal default value for the field.

Warning

Do not assign a literal default value to fields that are both required and intended to be unique, as a runtime error could occur.

Default Value

Set this property for all field types except for formula fields and dynamic choice lists.

Expression

Use the expression editor to write an expression that dynamically sets the default value for a field at runtime.

Default Value

Set this property for all field types except for check box and formula fields, and fixed and dynamic choice lists. To set default values for these types of fields, write server scripts.

How Fields Types Work With Other Components

When you create new fields for objects, the Application Composer limits you to a set of standard field types. The field types that you can select from are already integrated with other components of the CRM Extensibility Framework to provide you with the most flexibility possible when customizing and extending your CRM implementation:

Text Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a text field. A text field is a field where users in the runtime application can enter a combination of letters, numbers, or symbols.

Text Field Properties

Create a text field by specifying values for the common set of field properties, such as display label and field name. You also set properties for this field that are specific to the text field type.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Display Width

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Searchable

Constraints

Indexed

Constraints

Fixed Value

Default Value

Expression

Default Value

The following properties are unique to only certain field types, including text fields:


Field Property

Field Property Region

Display Type

Indicate if you want this text field to render in the runtime application as a simple text box. Or, indicate if the field should allow multiple lines where text can wrap, or where the user can enter carriage returns.

Appearance

Maximum Length

Indicate the maximum number of characters that a user can enter in the field. You can set a maximum length of 254 characters. If the field is a multiline field, then carriage returns are permitted and count as characters against the total.

Constraints

Minimum Length

Indicate the minimum number of characters that a user can enter into the field.

Constraints

Additional Text Field Specifications

Additional specifications for this field type include the following details:

Long Text Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a long text field. A long text field is a field where users in the runtime application can enter a combination of letters, numbers, or symbols. This field type supports 32,000 characters.

Long Text Field Properties

Create a long text field by specifying values for the common set of field properties, such as display label and field name. You also set properties for this field that are specific to the long text field type.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Display Width

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Fixed Value

Default Value

Expression

Default Value

The following properties are unique to only certain field types, including long text fields:


Field Property

Field Property Region

Display Type

Indicate if you want this text field to render in the runtime application as a simple text box. Or, indicate if the field should allow multiple lines where text can wrap, or where the user can enter carriage returns.

Appearance

Additional Long Text Field Specifications

Additional specifications for this field type include the following details:

Number Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a number field. A number field is a field where users in the runtime application can enter a number.

Number Field Properties

Create a number field by specifying values for the common set of field properties, such as display label and field name. You also set properties for this field that are specific to the number field type.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Display Width

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Searchable

Constraints

Indexed

Constraints

Fixed Value

Default Value

Expression

Default Value

The following properties are unique to only certain field types, including number fields:


Field Property

Field Property Region

Decimal Places

Specify how many numbers can be entered and displayed to the right of the decimal point. If at runtime, a user enters more numbers after the decimal point, then the Application Composer rounds up (using the tie-breaking rule, round half up) to derive the field's value.

For example, if you enter 2 for the number of decimal places, then at runtime, an entry of 4.986 is displayed as 4.99.

Constraints

Maximum Length

Specify how many numbers a user can enter in the field.

During field creation, consider how this property interacts with these other field properties:

  • Display Width

    If you set a maximum length that is longer than the display width, then users will have to scroll inside the field at runtime to see the number in this field.

  • Decimal Places

    Maximum Length - Decimal Places = the number of digits that can appear to the left of the decimal point.

    Do not set a maximum length that is shorter than the number of decimal places.

Constraints

Minimum Value

Indicate the minimum numerical value that a user can enter into this field.

Constraints

Maximum Value

Indicate the maximum numerical value that a user can enter into this field.

Constraints

Additional Number Field Specifications

Additional specifications for this field type include the following details:

Date Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a date field. A date field is a field where users in the runtime application can enter a date, or select a date from a calendar. This type of field has no time component.

Date Field Properties

Create a date field by specifying values for the common set of field properties, such as display label and field name.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Searchable

Constraints

Indexed

Constraints

Fixed Value

Default Value

Expression

Default Value

Additional Date Field Specifications

Additional specifications for this field type include the following details:

Datetime Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a datetime field. A datetime field is a field where users in the runtime application can enter a date, or select a date from a calendar, and enter a time of day. You can show the date or time, or both.

Datetime Field Properties

Create a datetime field by specifying values for the common set of field properties, such as display label and field name. You also set properties for this field that are specific to the datetime field type.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Searchable

Constraints

Indexed

Constraints

Fixed Value

Default Value

Expression

Default Value

The following property is unique to only certain field types, including datetime fields:


Field Property

Field Property Region

Display Type

Indicate if you want this datetime field to show the date or time, or both.

Appearance

Additional Datetime Field Specifications

Additional specifications for this field type include the following details:

Check Box Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a check box field. A check box field is a field where users in the runtime application can select a check box, indicating a true or false attribute of a record.

Check Box Field Properties

Create a check box field by specifying values for the common set of field properties, such as display label and field name.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Searchable

Constraints

Fixed Value

Default Value

Additional Check Box Field Specifications

Additional specifications for this field type include the following details:

Percentage Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a percentage field. A percentage field is a field where users in the runtime application can enter a percentage. The Application Composer automatically adds the percent sign to the number.

Percentage Field Properties

Create a percentage field by specifying values for the common set of field properties, such as display label and field name. You also set properties for this field that are specific to the percentage field type.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Display Width

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Searchable

Constraints

Indexed

Constraints

Fixed Value

Default Value

Expression

Default Value

The following properties are unique to only certain field types, including percentage fields:


Field Property

Field Property Region

Decimal Places

Specify how many numbers can be entered and displayed to the right of the decimal point. If at runtime, a user enters more numbers after the decimal point, then the Application Composer rounds up (using the tie-breaking rule, round half up) to derive the field's value.

For example, if you enter 2 for the number of decimal places, then at runtime, an entry of 4.986 is displayed as 4.99.

Constraints

Maximum Length

Specify how many numbers a user can enter in the field.

During field creation, consider how this property interacts with these other field properties:

  • Display Width

    If you set a maximum length that is longer than the display width, then users will have to scroll inside the field at runtime to see the amount in this field.

  • Decimal Places

    Maximum Length - Decimal Places = the number of digits that can appear to the left of the decimal point.

    Do not set a maximum length that is shorter than the number of decimal places.

Constraints

Additional Percentage Field Specifications

Additional specifications for this field type include the following details:

Currency Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a currency field. A currency field is a field where users in the runtime application can enter a currency amount.

Currency Field Properties

Create a currency field by specifying values for the common set of field properties, such as display label and field name. You also set properties for this field that are specific to the currency field type.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Display Width

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Searchable

Constraints

Indexed

Constraints

Fixed Value

Default Value

Expression

Default Value

The following properties are unique to only certain field types, including currency fields:


Field Property

Field Property Region

Minimum Value

Indicate the minimum numerical value that a user can enter into this field.

Constraints

Maximum Value

Indicate the maximum numerical value that a user can enter into this field.

Constraints

Exchange Date

Optionally specify the exchange date to use to calculate the currency conversion rate.

Tip

To use the system date when the record was created as the exchange date, specify the field's creation date as the exchange date.

Exchange Date

Additional Currency Field Specifications

Additional specifications for this field type include the following details:

Fixed Choice Lists: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a fixed choice list. A fixed choice list is a field that contains a list of static values which are populated from FND lookup types. At runtime, your users can select one or more values from this field, depending on the field's definition.

Fixed Choice List Properties

Create a fixed choice list by specifying values for the common set of field properties, such as display label and field name. You also set properties for this field that are specific to the fixed choice list field type.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Display Width

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Searchable

Constraints

Fixed Value

Tip

If this choice list allows multiple values, you can still write an expression to preselect multiple values by default. For example, if the field is comprised of three lookup codes with (Code,Label) of (S,Small),(M,Medium),(L,Large),(XL,Extra Large), then to preselect the Small and Extra Large selections by default, set the default value to the literal string (without quotes): S,XL.

Default Value

The following properties are unique to only certain field types, including fixed choice lists:


Field Property

Field Property Region

Display Type

Indicate if your users can select only one value, or multiple values, from the choice list at runtime. Selecting the display type is possible only during field creation.

Appearance

Lookup Type

List of Values

Constrain List by Parent Field Value Selection

List of Values

Using the List of Values Region

The values in a fixed choice list are populated from FND lookup types. Select the lookup type whose values you want to display in this choice list. Selecting the lookup type is possible only during field creation.

Or, create a new lookup type and add new values to it. You can also enter a lookup type and select the Edit icon to modify the existing values.

The set of FND lookup types that are available for selection is constrained to those lookup types that are related to this fixed choice list's object (via product code), as well as all custom lookup types that have been created for your CRM implementation.

This is a screenshot of the List of
Values region, which you can configure when defining a fixed choice
list.

You can constrain the actual values that display in this fixed choice list at runtime by relating this fixed choice list to a parent fixed choice list. The value selected in the parent fixed choice list drives the values that display in this fixed choice list. For example, you might want your users to see two choice lists on an Enterprise page where they can create a trouble ticket: one choice list for specifying the trouble ticket type and one choice list for specifying the trouble ticket area. If a user selects Hardware from the Type choice list, then the Area choice list should contain a list of only hardware options against which the trouble ticket can be logged.

To do this, select the Constrain List by Parent Field Value Selection check box, select the parent field, and then map the values between the parent lookup type and this field's lookup type.

This is a screenshot of the Edit Value
Map window, where you can map the values between the parent lookup
type and this field's lookup type.

Note

The Constrain List by Parent Field Value Selection check box is available for selection only during field creation, and only if at least one other fixed choice list, which is a single-select choice list, has been defined.

After field creation, however, you can update the mapping between lookup values.

To implement the previous example:

  1. Define the Type fixed choice list.

  2. Define the Area fixed choice list.

  3. Select the Constrain List by Parent Field Value Selection check box and select the parent field, Type.

  4. Finally, map the values between the Type and Area lookup types.

    For example, map all relevant hardware values in the Area lookup type's set of values, such as desktop and laptop, to the value of Hardware in the Type's lookup type.

Additional Fixed Choice List Specifications

Additional specifications for this field type include the following details:

Dynamic Choice Lists: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a dynamic choice list. A dynamic choice list is a field that contains a list of values which are populated from the actual data of another object. For example, you might want to expose on an Enterprise page a dynamic choice list which lets users specify the account that they are logging a trouble ticket against. In this example, the Account Name choice list is a field that you are adding to the trouble ticket object, but the list of values is populated by actual names from the account object.

When creating dynamic choice lists, review the following:

Note

When you are ready to add this dynamic choice list to a page, note that you cannot add dynamic choice lists to the local search region of a custom work area.

Dynamic Choice List Properties

Create a dynamic choice list by specifying values for the common set of field properties, such as display label and field name. You also set properties for this field that are specific to the dynamic choice list field type.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Display Width

Appearance

Name

Name

Description

Name

Required

Constraints

Updateable

Constraints

Searchable

Constraints

The following properties are unique to only certain field types, including dynamic choice lists:


Field Property

Field Property Region

Related Object

List Data Source

List Selection Display Value

List Data Source

Data Filter

List Data Source

Additional List Display Values

Additional List Display Values

Additional List Search Fields

Additional List Search Fields

Using the List Data Source, Additional List Display Values, and Additional List Search Fields Regions

When defining a dynamic choice list, use the following regions to determine what data will display in the list of values at runtime.

Implicit Relationship Creation

When you create a dynamic choice list for an object based on a related object, you are implicitly creating a one-to-many foreign key relationship where the current object is the "many" object and the related object is the "one" object. This implicit creation of a relationship lets you later add a related object subtab for the "many" object on the "one" object's details page. You can view these implicitly created choice list relationships on the Relationships page.

In the previous example of making a list of accounts available for selection for a trouble ticket, an account can be tied to multiple trouble tickets. The relationship that is created is a one-to-many relationship between the account and trouble ticket objects, which enables users to store an account identifier in the trouble ticket object's table. In this relationship, the account object is the source object and the trouble ticket object is the target object. If a source object is ever deleted from the system, then at runtime, the dynamic choice list will have no values in it.

Later, you might want to expose a related object subtab on the account details page which shows, for a single account, all the trouble tickets that are related to it. You can create this related object subtab because the relationship was already created when you created the dynamic choice list.

Note

Generally, the dynamic choice list that you create results in the implicit creation of a choice list relationship. The exception is if you create a dynamic choice list between a CRM object and a common object: resource, organization contact, organization profile, address. In such cases, relationships are not implicitly created.

Additional Dynamic Choice List Specifications

Additional specifications for this field type include the following details:

Formula Fields: Explained

Using the Oracle Fusion CRM Application Composer, you can extend a CRM application's object model by adding new fields to both standard or custom objects. One field type that you can add to a custom or standard object is a formula field. A formula field is a field that is calculated in the runtime CRM application using the Groovy-based expression included in the formula field's definition. For example, write an expression to calculate an employee's annual bonus amount.

Formula Field Properties

Create a formula field by specifying values for the common set of field properties, such as display label and field name. You also set properties for this field that are specific to the formula field type.

The following properties are common across multiple field types:


Field Property

Field Property Region

Label

Appearance

Help Text

Appearance

Display Width

Appearance

Name

Name

Description

Name

The following properties are unique to only certain field types, including formula fields:


Field Property

Field Property Region

Formula Type

Specify the field's data type, such as text, number, or date. The type can be specified only during field creation.

Field Value Type

Display Type

If the formula type is Text, then indicate if you want this formula field to render in the runtime application as a simple text box. Or, indicate if the field should allow multiple lines where text can wrap.

Appearance

Depends On

Constraints

Using the Expression Editor and the Depends On Choice List

Use the Depends On choice list to indicate if the field should be automatically recalculated (using the expression you write) if another field's value changes.

This is a screenshot of the Constraints
region, which you set up when defining a formula field.

Note

The Depends On choice list includes a list of fields that belong to the same object. If you want this formula field to automatically recalculate if the value of another field on a different object changes, then you must write a server script.

Use the expression editor to write an expression that will calculate the field's value at runtime.



For example, if your expression calculates the value of an employee's annual bonus amount, then you could set the expression to automatically recalculate that amount if the employee's salary changes. Whenever the salary changes, the bonus field immediately reflects the new bonus amount without your users having to refresh the employee's record.

In another example, if your expression determines the right customer phone number to use for an opportunity, then you could set the expression to automatically reset the phone number if the opportunity's customer account changes. Whenever the customer account changes, the phone number field immediately reflects the new phone number without your users having to refresh the opportunity record.

Additional Formula Field Specifications

Additional specifications for this field type include the following details:

Defining Pages: Explained

After you extend a CRM application's object model, your next step is to expose those new objects and fields on Enterprise pages. Customizing and creating Enterprise pages in CRM is a simplified process because the pages available to display an object are limited to a set of standard page types. Every top-level CRM object has an overview page, a creation page, and a details page, collectively known as a work area. When you create new fields, the Oracle Fusion CRM Application Composer provides work area configuration pages where you can add those fields for display. Or, create a new work area for a custom object and its fields using the work area wizard. This combination of standard page types, configuration pages, and a wizard-driven page creation process means that you can quickly and easily expose object model extensions to your users.

Review these aspects of the Enterprise page creation process in the Application Composer before you begin to customize or create new pages for a CRM application:

Using the Pages Overview Page

The Pages Overview page provides an overview of the set of standard Enterprise pages for an object.

This is a screenshot of the Pages Overview
page for the opportunity standard object.

To access the Pages Overview page:

  1. Select an application on the main Overview page.

  2. Select a standard or custom object in the object tree.

  3. Select the Pages node.

    This is a screenshot of the object
tree in the Oracle Fusion CRM Application Composer, with the Pages
node selected for an object.

    Note

    Only top-level objects have pages that you can configure. A child object does not exist outside the context of the parent object, and does not have its own work area.

From the Pages Overview page, you can:

Understanding Page Types

Every top-level CRM object can be displayed on a set of standard page types: an overview page, a creation page, and a details page.

Note

Some CRM objects, also known as common objects, do not have a standard work area. These include common components (note, interaction, task) and common objects (resource, organization contact, organization profile, address).

Defining Pages

Since every top-level CRM object can be displayed on a set of standard page types, each page type has its own configuration page where you can hide or show fields. After you create new objects and fields, navigate to the Pages Overview page. The Pages Overview page contains hyperlinks to the configuration pages for an object's existing work area. Use these configuration pages to customize the object's work area pages, for example add newly created fields to a creation page.

Note

If the Pages Overview page does not contain these configuration page hyperlinks, then the object does not yet have a work area, and you must create one if you want the object to be visible to users at runtime.

Use the configuration pages available from the Pages Overview page as follows:

Note

As previously mentioned, some CRM objects (common components and common objects) do not have a standard work area. This means that the configuration pages available from their Pages Overview page are different than described above. For example, the Trading Community address object has configuration pages for customizing the overview page, creation page, and address details form. The Trading Community organization profile has configuration pages for customizing only the details form and create form.

When you customize pages for common objects, the changes you make are reflected across the multiple applications where the object is used, provided that the applications also share the same metadata repository.

Creating a Work Area

When first created, top-level custom objects do not yet have pages in a runtime CRM application where those objects are exposed to users. After you create such a custom object, you must create a set of pages where records belonging to this object are exposed to users.

The Application Composer employs a wizard approach to walk you through the creation of these pages, also known as a work area. Creating a work area is discussed in a related topic.

You do not create a work area for child objects.

Securing Objects on Pages

After you create custom objects and fields, you then expose them on Enterprise pages for your users. Your next step is to control which users can access that object's data at runtime. By default, the object and its records are visible and editable only to a default duty role specified by the application. Grant additional access manually for either an object or role, using the Application Composer's security policy configuration pages.

The security options available to you for restricting access to custom objects, including child objects, are discussed in a related topic.

Using Oracle Composer to Customize Pages

Once you create a set of new pages, or edit preexisting pages delivered by a CRM application, you cannot use Oracle Composer to edit those pages again.

Note

The exception is the customer profile in Oracle Fusion Customer Center. You can create and add new fields to the Sales Account region on the customer profile using Oracle Composer.

Creating a Work Area: Explained

When first created, custom objects do not yet have pages in a runtime CRM application where those objects are exposed to users. After you create a top-level custom object, you must create a set of Enterprise pages, also known as a work area, for that object. Every CRM object can be displayed on a work area, which consists of an overview page, a creation page, and a details page. The Oracle Fusion CRM Application Composer employs a wizard approach to walk you through the creation of that object's work area. After you create the initial work area, you can always navigate to the object's Pages Overview page to continue to customize those Enterprise pages using work area configuration pages. You do not create a work area for child objects. To create and modify pages displayed on a mobile device, use the separate Mobile Pages wizard which is also available from the object's Pages Overview page.

Review these aspects of the work area creation process in the Application Composer before you create a new work area for a custom object:

Using the Work Area Wizard

Access the wizard on the Pages Overview page using the same navigation path that you use to configure pages in an existing work area. However, if a work area has not yet been created for an object, then hyperlinks to the work area configuration pages are not displayed. Instead, the Pages Overview page displays only a single hyperlink to launch the work area wizard.

This is a screenshot of how you first
launch the work area wizard to create a new work area for a custom
object.

To access the work area wizard:

  1. Select an application on the main Overview page.

  2. Select a standard or custom object in the object tree.

  3. Select the Pages node.

    Note

    Only top-level objects have pages that you can configure. A child object does not exist outside the context of the parent object, and does not have its own work area.

  4. Select the hyperlink to launch the work area wizard.

Note

Use the work area wizard to create a work area.

Use the work area configuration pages to customize existing work area pages.

Configuring the Navigator Menu

As part of the work area creation for a custom object, you must specify the object label that appears in the Navigator menu at runtime. The label you specify is what users will select to navigate to this work area.

This is a screenshot of how you configure
the Navigator menu to display a custom object's work area.

On this page, you can also do the following:

After creating the work area for a custom object, the work area label automatically appears in the Navigator menu without your having to reauthenticate.

Note

Changing the object label on the Navigator menu is available in the Application Composer only for custom objects. To change the menu label for a standard object, refer to Fusion Setup Manager documentation.

Configuring the Local Search Region

Select the fields that you want to display as search criteria in the local search region. The local search region appears above the summary table on an object's overview page. Adding fields to this region is optional.

This is a screenshot of how you configure
the local search area for a custom object.

  1. Select the fields that you want to display as search criteria fields in the local search region.

    The list of fields available for selection is displayed to you in a single column, although the local search region is formatted as a region with two columns. The first field you select is displayed in the first column, the second field you select is displayed in the second column, the third field you select is displayed in the first column again, and so on.

Note

During field creation, consider indexing any fields that you plan to display as search criteria for your custom objects.

Configuring the Overview and Creation Pages

Select the fields that you want to display in the work area's overview page, and in the object's creation page.

This is a screenshot of how you configure
the overview page and createion page, which appear in a custom object's
work area.

  1. Select the fields that you want to display as columns in the summary table, on the object's overview page.

  2. Select the drilldown column for the summary table.

    The drilldown column is the column in the summary table that users can click to drill down to an object record's details page. You cannot change a summary table's drilldown column after the work area is created.

  3. Select the Allow Access Grant check box if you want users to be able to grant access to a record in the summary table to another user, at runtime.

  4. Add custom buttons to the summary table, if you previously created them.

  5. Select the fields that you want to display on the object's creation page.

    The fields that you select should include the object's required fields.

    The list of fields available for selection is displayed to you in a single column, although the creation page is formatted as a page with three columns. The first field you select is displayed in the first column, the second field you select is displayed in the second column, the third field you select is displayed in the third column, the fourth field you select is displayed in the first column again, and so on.

Configuring the Details Page

Select the fields that you want to display on the object's details page.

This is a screenshot of how you configure
the details page, which appears in a custom object's work area.

Note

A details page can have subtabs, which include information that is related to the object record. For example, the details page for an opportunity could include a subtab that lists customer contacts or previous orders. To add subtabs to a details page, create the work area first, then navigate back to the Pages Overview page. Adding subtabs to a details page is discussed in a related topic.

  1. Select the fields that you want to display on the object's details page, including both the default summary and detailed summary regions.

    Tip

    Include the primary object fields in the default summary, since the detailed summary could be collapsed when users navigate to this page.

    The list of fields available for selection is displayed to you in a single column, although the details page is formatted as a page with three columns. The first field you select is displayed in the first column, the second field you select is displayed in the second column, the third field you select is displayed in the third column, the fourth field you select is displayed in the first column again, and so on.

  2. Add custom buttons to the details page, if you previously created them.

  3. Select the Allow Attachments check box to enable the attachments feature on the runtime details page, in the collapsible detailed summary.

Subtabs: Explained

Every top-level CRM object has a details page as part of its work area. When configuring the details page, you can optionally display details that are related to the current object but derived from another object, or from another source outside the current Oracle Fusion CRM application altogether. You do this by adding subtabs to the details page, and specifying the source of subtab data. Add subtabs to a standard or custom object's details page from that object's Pages Overview page in the Oracle Fusion CRM Application Composer.

Review these aspects of the subtab creation process in the Application Composer before you begin to add subtabs to an object's details page:

Note

Subtabs and tree nodes are two master/detail UI patterns which Oracle Fusion CRM applications support.

For custom objects, only subtabs are supported.

For standard objects that are already using tree nodes, such as the Sales Account Profile and Partner objects, additional details adopt the same tree node pattern. In other words, if a standard object uses a tree to display its related pages, then you would expose child or related objects, for example, as tree nodes instead of subtabs on a details page. Adding tree nodes is discussed in a related topic.

Using the Details Page

The details page is the Enterprise page where users can view more details about an object. Depending on the security setup, users access the details page by clicking the Edit icon or by selecting the Edit menu item from the Actions menu on the summary table's toolbar. Users can also access the details page by clicking the object record name itself in the summary table.

The details page can include both a default summary and a detailed summary. The default summary includes the primary object fields and is always displayed to users. The detailed summary includes additional fields for an object. You cannot add the same field to both the default and detailed summaries.

The details page can also include information that is related to the object record, and displayed in subtabs. For example, the details page for an opportunity could include a subtab that lists customer contacts or previous orders.

Adding Subtabs

Add a subtab to an object's details page from that object's Pages Overview page. The details page must exist already; you cannot add subtabs when first creating a work area.

To add a subtab to an existing details page:

  1. Select an application on the main Overview page.

  2. Select a standard or custom object in the object tree.

  3. Select the Pages node.

    Note

    Only top-level objects have pages that you can configure. A child object does not have its own work area.

  4. On the Pages Overview page, click the Create Subtab icon in the Details Page region to create one or more subtabs to display on the object's details page.

  5. Select the type of subtab you want to add.

    This is a screenshot of the Create
Subtab page, where you select the type of subtab you want to add to
an object's details page.

Child or Related Object Subtabs

A relationship is a foreign key association between two objects. Using the Application Composer, you can create a one-to-many relationship between two objects within the same application. Once relationships are created, you can expose the "many" objects on a subtab that is displayed on the "one" object's details page. For example, an account can have multiple service requests associated to it. To expose a list of service requests associated with a specific account as a subtab on the account's details page, you must first create a one-to-many relationship between the account and service request objects. In this example, the account is the source object and the service request is the target object. This relationship adds the account identifier to the service request object's table.

The Application Composer lets you add a subtab to an object's details page for either a child object or for three types of related objects. These objects exist in four types of one-to-many relationships:

To add a child or related object subtab to an existing details page:

  1. On the Pages Overview page, click the Create Subtab icon.

  2. Select Child or Related Object.

    This is a screenshot of the Create
Subtab page, where you configure a new subtab for a child or related
object.

  3. On the Child or Related Object subtab configuration page:

    1. Select the related object from the list of all related objects that is to be exposed on the subtab, and choose the subtab display label.

    2. Optionally hide the New and Delete buttons that appear on the subtab at runtime.

      For child object subtabs, you can also optionally hide the Edit button.

    3. For child object subtabs only, specify if you want to display the Manage Permission button on the subtab at runtime.

      At runtime, users can select an object record and click that button to specify the level of access another user should have to the selected record.

    4. Select which fields and links you want to display on the subtab summary table at runtime.

      You can configure fields and links for the main summary table which lists the child object records or related object records.

    5. Select which buttons you want to display on the subtab at runtime.

      Note

      This region appears only if you previously created buttons for this object.

    6. Select which fields you want to display on the subtab detail form at runtime.

      You can configure fields for the detail form that appears under the summary table. If the subtab's object is a child object, then users can enter child object data into this detail form at runtime. Always include required fields in this section.

      If the subtab's object is a related object, then users can associate an existing record of the subtab object to the master object of the page. However, to create new related object records, users must do so in the object's own creation page.

Context Link Subtabs

A context link subtab displays a filtered list of records from any top-level object, where the filter is often based on the runtime values from the current object. The object does not have to be related to the current object. Context link subtabs are read only.

To add a context link subtab to an existing details page:

  1. On the Pages Overview page, click the Create Subtab icon.

  2. Select Context Link.

    This is a screenshot of the Create
Subtab page, where you configure a new context link subtab.

  3. On the Context Link subtab configuration page:

    1. Select the object that is to be exposed on the subtab, and choose the subtab display label.

    2. Optionally constrain the list of records displayed at runtime using a set of search criteria for the selected object, whose runtime values must match the current object record's runtime values.

      Tip

      Values can be literal values, or derived from the runtime values in the current object record, or from the runtime values in the current object's parent record.

      If your search criteria includes a fixed choice list field, then you must specify the fixed choice list's runtime value using the lookup code, not the lookup meaning.

    3. Select which fields you want to display on the subtab's read-only summary table at runtime.

      You can configure fields for the main summary table which lists the child object records or related object records.

    4. Select which fields you want to display on the subtab's read-only detail form at runtime.

      You can configure fields for the detail form that appears under the summary table.

Common Component Subtabs

A common component subtab adds a Notes, Tasks, Interactions or Appointments subtab to show a list of the selected components related to a custom, top-level object. Each component has a standard user interface (UI) that is shared across all Oracle Fusion CRM applications. To customize such a UI for all common components (other than Appointments), select the appropriate object under the Common application, then select the Pages node on the object's navigation tree to access the work area configuration pages.

At runtime, users can access these subtabs and create a common component record that is tied to the object record. For example, a user can record a customer interaction on an service request record.

To add a common component subtab to an existing details page:

  1. On the Pages Overview page, click the Create Subtab icon.

  2. Select Common Component.

    This is a screenshot of the Create
Subtab page, where you configure a new common component subtab.

  3. On the Common Component subtab configuration page, select the type of common component you want to add to the details page as a subtab.

Web Content Subtabs

A Web content subtab exposes an external Web site right on an object's details page. The Web content is a result of the expression that you define which builds the intended URL.

For example, on the Contact details page, perhaps you want to add a Google map that shows the location of the contact. The Google Maps API expects the URL to be formatted in a certain manner. In this example, write an expression using the fields: Contact Address, Contact City and Contact State. Then, pass the URL to the Google Maps API.

To add a Web content subtab to an existing details page:

  1. On the Pages Overview page, click the Create Subtab icon to create one or more subtabs to display on the object's details page.

  2. Select Web Content.

    This is a screenshot of the Create
Subtab page, where you configure a new Web content subtab.

  3. On the Web Content subab configuration page, enter the display label for the subtab, and then define the URL to retrieve the subtab's Web content.

    Optionally use the expression editor to build the URL expression that you need.

The expression you build should include the following:

For example:

def myURL1 = adf.util.GlobalEncodeField(ContactAddress_c)
def myURL2 = adf.util.GlobalEncodeField(ContactCity_c)
def myURL3 = adf.util.GlobalEncodeField(ContactState_c)
def myfinalURL = "http://maps.google.com/maps?hl=en&q=" + myURL1 + "+" + myURL2 + "+" + myURL3
return(myfinalURL)

 

Tree Nodes: Explained

Some CRM standard objects, such as the Sales Account Profile and Partner objects, use a tree to display its related pages. When configuring an object's work area, you can optionally display details that are related to the current object by adding tree nodes to the object's tree, and specifying the source of tree node data. Tree node data can be derived from another object, or from another source outside the current Oracle Fusion CRM application altogether. Add a tree node to a standard object's tree from that object's Pages Overview page in the Oracle Fusion CRM Application Composer.

Review these aspects of the tree node creation process in the Application Composer before you begin to add tree nodes to an object's tree:

Note

Subtabs and tree nodes are two master/detail UI patterns which Oracle Fusion CRM applications support.

For custom objects, only subtabs are supported.

For standard objects that are already using tree nodes, such as the Sales Account Profile and Partner objects, additional details adopt the same tree node pattern. In other words, if a standard object uses a tree to display its related pages, then you would expose child or related objects, for example, as tree nodes instead of subtabs on a details page. Adding subtabs is discussed in a related topic.

Adding Tree Nodes

Add a tree node to an object's tree from that object's Pages Overview page.

To add a tree node to an object's tree:

  1. Select an application on the main Overview page.

  2. Select a standard object, either the Sales Account Profile or Partner object, in the object tree.

  3. Select the Pages node.

    Note

    Only the top-level objects, Sales Account Profile and Partner, let you add tree nodes.

  4. On the Pages Overview page, click the Create Tree Node icon to create one or more tree nodes to display on the object's tree.

  5. Select the type of tree node you want to add.

    This is a screenshot of the Create
Tree Node page, where you select the type of tree node you want to
add to an object's tree.

Child or Related Object Tree Nodes

A relationship is a foreign key association between two objects. Using the Application Composer, you can create a one-to-many relationship between two objects within the same application. Once relationships are created, you can expose the "many" objects on a tree node that is displayed on the "one" object's tree. For example, a partner can have multiple contacts associated to it. To expose a list of contacts associated with a specific partner as a tree node on the partner's tree, you must first create a one-to-many relationship between the partner and contact objects. In this example, the partner is the source object and the contact is the target object. This relationship adds the partner identifier to the contact object's table.

The Application Composer lets you add a tree node to an object's tree for either a child object or for three types of related objects. These objects exist in four types of one-to-many relationships, which are described in detail in the related topic about object relationships:

To add a child or related object tree node to an existing tree:

  1. On the Pages Overview page, click the Create Tree Node icon.

  2. Select Child or Related Object.

    This is a screenshot of the Create
Tree Node page, where you configure a new tree node for a child or
related object.

  3. On the Child or Related Object tree node configuration page:

    1. Select the tree node category and enter the tree node label.

    2. Select the related object from the list of all related objects that is to be exposed on the tree node page.

    3. Set the position of the new tree node.

    4. Optionally hide the New and Delete buttons that appear on the tree node page at runtime.

      For child object tree node pages, you can also optionally hide the Edit button.

    5. For child object tree node pages only, specify if you want to display the Manage Permission button on the tree node page's summary table at runtime.

      At runtime, users can select an object record and click that button to specify the level of access another user should have to the selected record.

    6. Select which fields and links you want to display on the tree node page's summary table at runtime.

      You can configure fields and links for the main summary table which lists the child object records or related object records.

    7. Select which buttons you want to display on the tree node page at runtime.

      Note

      This region appears only if you previously created buttons for this object.

      You cannot add buttons to a tree node page for the Sales Account Profile object.

    8. Select which fields you want to display on the tree node page's detail form at runtime.

      You can configure fields for the detail form that appears under the summary table. If the tree node's object is a child object, then users can enter child object data into this detail form at runtime. Always include required fields in this section.

      If the tree node's object is a related object, then users can associate an existing record of the tree node object to the master object of the page. However, to create new related object records, users must do so in the object's own creation page.

Context Link Tree Nodes

A context link tree node page displays a filtered list of records from any top-level object, where the filter is often based on the runtime values from the current object. The object does not have to be related to the current object. Context link tree node pages are read only.

To add a context link tree node to an object's tree:

  1. On the Pages Overview page, click the Create Tree Node icon.

  2. Select Context Link.

    This is a screenshot of the Create
Tree Node page, where you configure a new context link tree node.

  3. On the Context Link tree node configuration page:

    1. Select the tree node category and enter the tree node label.

    2. Enter the name of the tree node filter.

    3. Select the object that is to be exposed on the tree node page.

    4. Set the position of the new tree node.

    5. Optionally constrain the list of records displayed at runtime using a set of search criteria for the selected object, whose runtime values must match the current object record's runtime values.

      Tip

      Values can be literal values, or derived from the runtime values in the current object record, or from the runtime values in the current object's parent record.

      If your search criteria includes a fixed choice list field, then you must specify the fixed choice list's runtime value using the lookup code, not the lookup meaning.

    6. Select which fields you want to display on the tree node page's read-only summary table at runtime.

      You can configure fields for the main summary table which lists the child object records or related object records.

    7. Select which fields you want to display on the tree node page's read-only detail form at runtime.

      You can configure fields for the detail form that appears under the summary table.

Web Content Tree Nodes

A Web content tree node page exposes an external Web site on an Enterprise page. The Web content is a result of the expression that you define which builds the intended URL.

For example, on the Contact tree node page, perhaps you want to add a Google map that shows the location of the contact. The Google Maps API expects the URL to be formatted in a certain manner. In this example, write an expression using the fields: Contact Address, Contact City and Contact State. Then, pass the URL to the Google Maps API.

To add a Web content tree node to object's tree:

  1. On the Pages Overview page, click the Create Tree Node icon to create one or more tree nodes to display on the object's tree.

  2. Select Web Content.

    This is a screenshot of the Create
Tree Node page, where you configure a new Web content tree node.

  3. On the Web Content tree node configuration page:

    1. Select the tree node category and enter the tree node label.

    2. Set the position of the new tree node.

    3. Define the URL to retrieve the tree node page's Web content.

      Optionally use the expression editor to build the URL expression that you need.

The expression you build should include the following:

For example:

def myURL1 = adf.util.GlobalEncodeField(ContactAddress_c)
def myURL2 = adf.util.GlobalEncodeField(ContactCity_c)
def myURL3 = adf.util.GlobalEncodeField(ContactState_c)
def myfinalURL = "http://maps.google.com/maps?hl=en&q=" + myURL1 + "+" + myURL2 + "+" + myURL3
return(myfinalURL)

 

Buttons and Links: Explained

When configuring the work area for a standard or custom object, you can add custom buttons or links to certain work area locations. A button can perform an action or navigate the user to another page in the runtime application, or to another Web site entirely. A link can take the user to another Web site. Web sites can be either inside or outside the user's firewall. For example, you might want to provide a static link from an overview page to a corporate Web site. Or, you might want to include a button on a summary table, which users can click at runtime to create a new type of record from a selected row, such as escalating an existing "trouble ticket" to a more severe "case" that can be separately managed. To add buttons or links, you first define a button or link for an object. Next, you use the Oracle Fusion CRM Application Composer's work area configuration pages to add that button or link to an overview page or details page.

Adding Buttons or Links

You add buttons or links from the Create Button or Link page.

To add a button or link:

  1. Select an application on the main Overview page.

  2. Select a standard or custom object in the object tree.

  3. Select the Buttons and Links node.

    This is a screenshot of the Create
Button or Link page, where you can create a button or link.

Buttons

When you define a button, you specify what the button should do once clicked at runtime. To do this, indicate if the button's source is a URL or script.

If the source is a URL, you can enter a static URL, enclosed in double quotation marks. Or define the URL using the expression editor, which provides access to this object's fields to assist you in constructing the URL. If this object has a parent or relationship with a source object, then optionally change the context to access another object's fields for URL definition.

If the source is a script, you can either select a predefined object function from the Method Name choice list, or create a new object function using the expression editor.

This is a screenshot of what the Create
Button or Link page looks like, if the new button's source is a script.

Note

The object functions that you can tie to a button must have a return type of void, with no parameters.

After you define a button for an object, you can add that button to a variety of locations in that object's work area:

Links

When you define a link, you can enter either a static URL, or construct a URL using the expression editor.

Enclose static URLs in double quotation marks. Or define the URL using the expression editor, which provides access to this object's fields to assist you in constructing the URL. If this object has a parent or relationship with a source object, then optionally change the context to access another object's fields for URL definition.

After you define a link for an object, you can add that link to a variety of locations in that object's work area. You can add a link wherever you can add a field. Possible locations include, but are not limited to:

Saved Searches for CRM Objects: Explained

A saved search is a predefined set of search criteria that you define which users can apply at runtime to a standard or custom object's overview page. The overview page provides a list of records for an object in a summary table, which is the starting point in a CRM application for users to view and manage data. If you think your users will be most interested in a particular data set (for example, the top 10 opportunities), then define a saved search for an object. At runtime, users can select a saved search from the Saved Search choice list to constrain the list of records that appear in the summary table. Users can also personalize the list of saved searches by creating new saved searches.

Review these aspects of the saved search definition process in the Oracle Fusion CRM Application Composer before you begin to define saved searches for CRM objects:

Saved Searches at Runtime

The list of saved searches is available from the Saved Search choice list above the overview page's summary table.

The list of saved searches includes the searches you define, as well as any personal searches that users defined themselves using personalization. Searches are displayed in alphabetical order, followed by the Personalize option.

The saved searches that you define for an object are available to all users and roles with functional security access to the object's overview page.

Defining a Saved Search

You define a saved search for an object on the object's Create Saved Search page. You define saved searches only for top-level objects, because only top-level objects have overview pages in the runtime CRM application.

To define a saved search for an object:

  1. Select an application on the main Overview page.

  2. Select a standard or custom object in the object tree.

  3. Select the Saved Searches node.

  4. On the Create Saved Search page for the object, enter the display label for the saved search.

    The display label is the label that appears in the Saved Search choice list.

  5. Enter the internal name and description for the saved search.

    The name is automatically generated based on the specified display label, where all spaces use an underscore. For example, Top Ten Opportunities is automatically populated as Top_Ten_Opportunities.

  6. Specify the search criteria that you want to include.

    You can enter up to four search conditions using the following criteria:

Securing Custom Objects: Explained

After you create custom objects and fields, you then expose them on Enterprise pages for your users. Your next step is to control which users can access that object's data at runtime. By default, the object and its records are visible and editable only to a default duty role specified by the application. Grant additional access manually using the Oracle Fusion CRM Application Composer's security policy configuration pages. A security policy specifies which users are authorized to access an object's data, and what type of access they have. For example, does a user have view only access, or can the user create and update an object's record, as well? Define security policies for an object by authorizing the roles whose users can access that object's data. Or, define security policies for a role by specifying access levels across multiple custom objects.

Review these aspects of the custom object security process in the Application Composer before you begin to define your security policies:

Securing Objects

The object-centric Define Policies page displays a list of the enterprise-level duty roles which map to a CRM job role. Use this page to manage access to either a top-level or child custom object by specifying a security policy for one or more duty roles. When you do this, users with the corresponding roles can access the custom object and its data, depending on the security policies you define.

To access the object-centric Define Policies page:

  1. Select an application on the main Overview page.

  2. Select a custom object in the object tree.

  3. Select the Security node.

    Or, from the role-centric Define Policies page, select a custom object.

    This is a screenshot of the object-centric
Define Policies page, which displays a list of the enterprise-level
duty roles which map to a CRM job role.

From the object-centric Define Policies page, you can:

Securing Roles

The Role Security page displays a list of the enterprise-level duty roles, which map to a CRM job role. Select a role and click the Define Policies button to navigate to the role-centric Define Policies page, which displays a list of the custom objects for your CRM implementation. Use this page to manage access for users with the corresponding role by specifying a security policy for one or more top-level or child custom objects. When you do this, users with the corresponding role can access the custom objects and related data, depending on the security policies you define.

To access the role-centric Define Policies page:

  1. Select an application on the main Overview page.

  2. Select the Role Security node from the Common Setup pane.

    Or, select the Role Security hyperlink in the local area of the main Overview page.

    Or, from the object-centric Define Policies page, select a role.

    This is a screenshot of the Role Security
page displays a list of the enterprise-level duty roles, which map
to a CRM job role.

  3. Click the Define Policies button.

    This is a screenshot of the role-centric
Define Policies page, which displays a list of the custom objects
for your CRM implementation.

From the role-centric Define Policies page, you can:

Enabling Function Security and Data Security

A security policy specifies the type of access to an object and its records that users with the corresponding roles have. Access includes both function security as well as data security. Security settings are the same whether you are defining a security policy for an object or a role.

On the Define Policies page, the first four columns in the table manage function security, which applies to the object as a whole:

The next two columns in the table manage data security.

Tip

When clicking View All or Update All, the corresponding View and Update function security check boxes are automatically selected.

Wait for the page to refresh to confirm all your selections.

The last column contains the Grant Access check box. Selecting this check box controls the display of the Manage Permission button on the object's summary table at runtime. At runtime, users with the corresponding role (or an administrative role) can select an object record and click that button to specify the level of access another user should have to the selected record.

Note

To let users view or update records at runtime, you must enable both function security as well as data security for an object. To let users create records, you only have to enable function security. To let users delete records, you must grant users instance-level delete privileges using the Grant Access check box and the runtime Manage Permission button.

CRM Application Composer and the Oracle Authorization Policy Manager (APM)

Across Oracle Fusion applications, Oracle Authorization Policy Manager (APM) manages the security policies that control access based on roles. However, you define the security policies for custom objects in the Application Composer's object-centric and role-centric Define Policies pages. This is outside APM.

Since you define the security policies outside APM, you cannot later modify the security policies within APM. Instead, modify all security policies for custom objects using only the Application Composer.

Default Security Settings

By default, top-level custom objects are visible and editable only to users with a default duty role specified by a CRM application. You must manually grant additional access to other duty roles, if desired. For example, if you create a custom object in Oracle Fusion Sales, then only users with the default duty role specified by Sales are automatically granted access to that object. This lets you first access an object and its pages for testing, before you officially grant access to your customizations to users in a production environment.

This table lists the default duty roles that are provided by CRM applications:


Application

Default Duty Role

Oracle Fusion Customer Center

Sales Administrator Duty

Marketing Operations Manager Duty

Oracle Fusion Marketing

Marketing Operations Manager Duty

Oracle Fusion Sales

Sales Administrator Duty

Child objects do not inherit security settings from parent objects. Rather, if you create a custom child object, then a default set of duty roles are granted access to the child object. In other words, a child object is visible and editable only to users with these default duty roles, as follows:


Application

Child Objects of This Parent Object

Access Granted to These Duty Roles

Oracle Fusion Customer Center

Sales Account Profile

Sales Administrator Duty

Marketing Operations Manager Duty

Oracle Fusion Marketing

Sales Lead

Marketing Operations Manager Duty

Sales Administrator Duty

Channel Operations Manager Duty

Oracle Fusion Marketing

Marketing Campaign

Marketing Response

Marketing List

Marketing Treatment

Marketing Event Activity

Marketing Advertising Activity

Marketing Operations Manager Duty

Oracle Fusion Marketing

Marketing Budget

Marketing Claim

Marketing Budget Entry

Marketing Budget Fund Request

Marketing Operations Manager Duty

Channel Operations Manager Duty

Oracle Fusion Sales

Opportunity

Sales Competitor

Sales Administrator Duty

Oracle Fusion Sales

Partner

Channel Operations Manager Duty

Oracle Fusion Common CRM

Trading Community Org Contact

Trading Community Resource Profile

Trading Community Organization Profile

Trading Community Address

Customer Data Steward Duty

Groovy Scripting: Explained

Groovy is a standard, dynamic scripting language for the Java platform for which the Oracle Fusion CRM Application Composer provides deep support. This topic provides an overview of Groovy scripting, which you can use throughout the Application Composer to enhance your application customizations.

Before you begin to add Groovy scripts to your application customizations, read this topic, which includes:

Refer to the related topic, Groovy Scripting: Examples, to view examples of each type of Groovy script that you can write.

For more information, see the Developer's Guide to Scripting in Oracle Fusion CRM Application Composer on My Oracle Support at https://support.oracle.com. The developer's guide includes:

Terminology Explained

Throughout the document the term script is used to describe one or more lines of Groovy code that the Oracle ADF framework executes at runtime. Often a very-short script is all that is required.

For example, to validate that a CommissionPercentage field's value does not exceed 40%, you might use a one-line script like:

return CommissionPercentage < 0.40

 

In fact, this one-liner can be conveniently shortened by dropping the return keyword since the return keyword is always implied on the last line of a script:

CommissionPercentage < 0.40

 

For slightly more complicated logic, your script might require some conditional handling. For example, suppose the maximum commission percentage is 40% if the salesperson's job grade is less than or equal to 3, but 60% if the job grade is higher. Your script would grow a little to look like this:

if (JobGrade <= 3) {
  return CommissionPercentage < 0.40
}
else {
  return CommissionPercentage < 0.60
}

 

Scripts that you'll write for other purposes like complex validation rules or reusable functions may span multiple pages, depending on your needs.

When a context requiring a Groovy script will typically use a short (often, one-line) script, we emphasize that fact by calling it an expression, however technically the terms script and expression are interchangeable. Anywhere you can provide a one-line expression is also a valid context for providing a multi-line script if the need arises. Whether you provide a short expression or a multi-line script, the syntax and features at your disposal are the same. You need only pay attention that your code returns a value of the appropriate type for the context in which you use it. Each section below highlights the expected return type for the script in question.

Where You will Use Groovy in Your Application

There are a number of different contexts where you will use Groovy scripts as you customize existing objects or create new custom ones.

You will write shorter scripts to provide an expression to:

You will generally write somewhat longer scripts to define:

If you anticipate calling the same code from multiple different contexts, any of your scripts can call the reusable code you write in either global functions or object functions. As their name implies, global functions can be called from scripts in any object or from other global functions. Object functions can be called by any scripts in the same object, or even triggered by a button in the user interface.

For a concrete example of each of these usages, refer to the related topic, Groovy Scripting: Examples.

Groovy Scripting: Examples

Groovy is a standard, dynamic scripting language for the Java platform for which the Oracle Fusion CRM Application Composer provides deep support. You can use Groovy throughout the Application Composer to enhance your application customizations. This topic provides simple examples of using Groovy in all of the different supported contexts in your application.

Providing an Expression to Calculate a Custom Formula Field's Value

When you need a calculated field or a transient value-holder field with an optional initial, calculated value, use a formula field.

1. For read-only calculated fields:

A formula field defaults to being a read-only, calculated value. It displays the value resulting from the runtime evaluation of the calculation expression you supply. By using the Depends On multi-select list in the field create or edit page, you can configure the names of fields on which your expression depends. By doing this, its calculated value will update dynamically when any of those Depends On fields' value changes. The expected return type of the formula field's expression must be compatible with the formula field type you specified (Number, Date, or Text).

For example, consider a custom TroubleTicket object. If you add a formula field named DaysOpen, you can provide its calculated value with the expression:

(today() - CreationDate) as Integer /* truncate to whole number of days */

 

2. For transient value holder fields with optional calculated initial value:

If you want to allow the end user to override the calculated value, then mark your formula to be updateable. An updateable formula field is a "transient value holder" whose expression provides the value of the field until the user overrides it. If the user overrides the value, the object remembers this user-entered value for the duration of the current transaction so that your validation rules and triggers can reference it. If you have configured one or more Depends On fields for your updateable formula field, then note that the value of the formula will revert back to the calculated value should any of the dependent fields' value change. If you want a transient field whose initial value is null until the user fills it in, simply provide no formula expression for your updateable formula field to achieve this.

Providing an Expression to Calculate a Custom Field's Default Value

When a new row is created for an object, the value of a custom field defaults to null unless you configure a default value for it. You can supply a literal default value of appropriate type or supply an expression to calculate the default value for new rows. The default value expression is evaluated at the time the new row is created. The expected return type of your field's default value expression must be compatible with the field's type (Number, Date, Text, and so on).

For example, consider a custom CallbackDate field in a TroubleTicket object. If you want the callback back for a new trouble ticket to default to 3 days after it was created, then you can provide a default expression of:

CreationDate + 3

 

Providing an Expression to Make a Custom Field Conditionally Updateable

1. To provide an expression to make a custom field conditionally updateable:

A custom field can be updateable or read-only. By default, any non-formula field is updateable. Alternatively, you can configure a conditionally updateable expression. If you do this, it is evaluated each time a page displaying the field is rendered or refreshed. The expected return type the expression is boolean. If you define one for a field, you must also configure the Depends On list to indicate the names of any fields on which your conditionally updateable expression depends. By doing this, your conditionally updateable field will interactively enable or disable as appropriate when the user changes the values of fields on which the conditionally updateable expression depends.

For example, consider a custom TroubleTicket object with Status and Justification fields. Assume you want to prevent a user from editing the justification of a closed trouble ticket. To achieve this, configure the conditionally updateable expression for the Justification field as follows:

Status_c != 'Closed'

 

After configuring this expression, you must then indicate that the Justification field depends on the Status field as described in "Understanding When to Configure Field Dependencies", in the Developer's Guide to Scripting in Oracle Fusion CRM Application Composer on My Oracle Support at https://support.oracle.com. This ensures that if a trouble ticket is closed during the current transaction, or if a closed trouble ticket is reopened, that the Justification field becomes enable or disabled as appropriate.

Tip

A field configured with a conditionally updateable expression only enforces the conditional updateability through the Web user interface. See "Enforcing Conditional Updateability of Custom Fields for Web Service Access" in the Developer's Guide to Scripting in Oracle Fusion CRM Application Composer, for more information on how to ensure it gets enforced for Web service access as well.

2. To provide an expression to make a custom field conditionally required:

A custom field can be optional or required. By default it is optional. Alternatively, you can configure a conditionally required expression. If you do this, it is evaluated each time a page displaying the field is rendered or refreshed, as well as when the object is validated. The expected return type of the expression boolean. If you define one for a field, you must also configure the Depends On list to indicate the names of any fields on which your conditionally required expression depends. By doing this, your conditionally required field will interactively show or hide the visual indicator of the field's being required as appropriate when the user changes the values of fields on which the conditionally required expression depends.

For example, consider a custom TroubleTicket object with Priority and Justification fields. Assume that priority is an integer from 1 to 5 with priority 1 being the most critical kind of problem to resolve. To enforce that a justification is required for trouble tickets whose priority is 1 or 2, configure the conditionally required expression for the Justification field as follows:

Priority_c <= 2

 

After configuring this expression, you must then indicate that the Justification field depends on the Priority field as described in "Understanding When to Configure Field Dependencies", in the Developer's Guide to Scripting in Oracle Fusion CRM Application Composer. This ensures that if a trouble ticket is created with priority 2, or an existing trouble ticket is updated to increase the priority from 3 to 2, that the Justification field becomes mandatory.

Defining a Field-Level Validation Rule

1. To define a field-level validation rule:

A field-level validation rule is a constraint you can define on any standard or custom field. It is evaluated whenever the corresponding field's value is set. When the rule executes, the field's value has not been assigned yet and your rule acts as a gatekeeper to its successful assignment. The expression (or longer script) you write must return a boolean value that indicates whether the value is valid. If the rule returns true, then the field assignment will succeed so long as all other field-level rules on the same field also return true. If the rule returns false, then this prevents the field assignment from occurring, the invalid field is visually highlighted in the UI, and the configured error message is displayed to the end user. Since the assignment fails in this situation, the field retains its current value (possibly null, if the value was null before), however the UI component in the Web page allows the user to see and correct their invalid entry to try again. Your script can use the newValue keyword to reference the new value that will be assigned if validation passes. To reference the existing field value, use the oldValue keyword. A field-level rule is appropriate when the rule to enforce only depends on the new value being set. You can use the Keywords tab of the Expression Palette to insert the newValue and oldValue keywords.

For example, consider a custom TroubleTicket object with a Priority field. To validate that the number entered is between 1 and 5, your field-level validation rule would look like this:


Field-Level Validation Rule Component

Value

Field Name

Priority

Rule Name

Validate_Priority_Range

Rule Body

newValue == null || (1..5).contains(newValue as Integer)

 

Error Message

The priority must be in the range from 1 to 5.

Tip

If a validation rule for field A depends on the values of one or more other fields (e.g. Y and Z), then create an object-level rule and programmatically signal which field or fields should be highlighted as invalid to the user, as explained in "Setting Invalid Fields for the UI in an Object-Level Validation Rule" in the Developer's Guide to Scripting in Oracle Fusion CRM Application Composer.

2. To define an object-level validation rule:

An object-level validation rule is a constraint you can define on any standard or custom object. It is evaluated whenever the framework attempts to validate the object. This can occur upon submitting changes in a web form, when navigating from one row to another, as well as when changes to an object are saved. Use object-level rules to enforce conditions that depend on two or more fields in the object. This ensures that regardless of the order in which the user assigns the values, the rule will be consistently enforced. The expression (or longer script) you write must return a boolean value that indicates whether the object is valid. If the rule returns true, then the object validation will succeed so long as all other object-level rules on the same object return true. If the rule returns false, then this prevents the object from being saved, and the configured error message is displayed to the end user.

For example, consider a TroubleTicket object with Priority and AssignedTo fields, where the latter is a dynamic choice list field referencing Contact objects whose Type field is a Staff Member. To validate that a trouble ticket of priority 1 or 2 cannot be saved without being assigned to a staff member, your object-level rule would look like this:


Object-Level Validation Rule Component

Value

Rule Name

Validate_High_Priority_Ticket_Has_Owner

Rule Body

 // Rule depends on two fields, so must be written as object-level rule
if (Priority_c <= 2 && AssignedTo_Id_c == null) {
  // Signal to highlight the AssignedTo field on the UI as being in error
  adf.error.addAttribute('AssignedTo_c')
  return false;
}
return true; 

 

Error Message

A trouble ticket of priority 1 or 2 must have a staff member assigned to it.

Defining Utility Code in a Global Function

Global functions are useful for code that multiple objects want to share. To call a global function, preface the function name with the adf.util. prefix. When defining a function, you specify a return value and can optionally specify one or more typed parameters that the caller will be required to pass in when invoked. The most common types for function return values and parameters are the following:

In addition, a function can define a void return type which indicates that it returns no value.

Note

.A global function has no current object context. To write global functions that work on a particular object, refer to "Passing the Current Object to a Global Function," in the Developer's Guide to Scripting in Oracle Fusion CRM Application Composer.

For example, the following two global functions define standard helper routines to log the start of a block of Groovy script and to log a diagnostic message. Examples in the Developer's Guide to Scripting in Oracle Fusion CRM Application Composer make use of them.

This table describes how to set up a global function to log the start of a block of Groovy script.


Global Function Component

Value

Function Name

logStart

Return Type

void

Parameters

  • Name: scriptName

  • Type: String

Function Definition

// Log the name of the script
println("[In: ${scriptName}]") 

 

This table describes how to set up a global function to log a diagnostic message.


Global Function Component

Value

Function Name

log

Return Type

void

Parameters

  • Name: message

  • Type: String

Function Definition

// Log the message, could add other info
println(message)

 

Defining Reusable Behavior with an Object Function

Object functions are useful for code that encapsulates business logic specific to a given object. You can call object functions by name from any other script code related to the same object. In addition, you can invoke them using a button or link in the user interface. The supported return types and optional parameter types are the same as for global functions (described above).

For example, you might define the following updateOpenTroubleTicketCount() object function on a Contact custom object. It begins by calling the logStart() global function above to log a diagnostic message in a standard format to signal the beginning of a block of custom Groovy script. It calls the newView() built-in function (described in "Accessing the View Object for Programmatic Access to Business Objects" in the Developer's Guide to Scripting in Oracle Fusion CRM Application Composer) to access the view object for programmatic access of trouble tickets, then calls another global function applyFilter() (described in "Simplifying Most Common View Criteria Creation with a Global Function" in the Developer's Guide to Scripting in Oracle Fusion CRM Application Composer) to apply a filter to find trouble tickets related to the current contact's id and having either Working or Waiting as their current status. Finally, it calls getEstimatedRowCount() to retrieve the count of trouble tickets that qualify for the filter criteria.

This table describes the updateOpenTroubleTicketCount() object function on a Contact custom object:


Object Function Component

Value

Function Name

updateOpenTroubleTicketCount

Return Type

void

Parameters

None

Function Definition

adf.util.logStart('updateOpenTroubleTicketCount')
// Access the view object for TroubleTicket programmatic access
def tickets = newView('TroubleTicket_c')
// Use a global function to apply a query filter to Trouble Ticket
// view object where Contact_Id = Id of current Contact and 
// Status is either 'Working' or 'Waiting'
adf.util.applyFilter(tickets,[Status_c:['Working','Waiting'],
                              Contact_Id__c:Id])
// Update OpenTroubleTickets field value
setAttribute('OpenTroubleTickets_c',tickets.getEstimatedRowCount())

 

Defining a Trigger to Complement Default Processing

Triggers are scripts that you can write to complement the default processing logic for a standard or custom object. The following triggers are available:

For example, consider a Contact object with a OpenTroubleTickets field that needs to be updated any time a trouble ticket is created or modified. You can create the following two triggers on the TroubleTicket object which both invoke the updateOpenTroubleTicketCount() object function described above.

This table describes how to set up a trigger on the TroubleTicket object.


Trigger Component

Value

Trigger Object

TroubleTicket

Trigger

After Insert In Database

Trigger Name

After_Insert_Set_Open_Trouble_Tickets

Trigger Definition

adf.util.logStart('After_Insert_Set_Open_Trouble_Tickets')
// Get the related contact for this trouble ticket
def relatedContact = Contact_Obj_c
// Update its OpenTroubleTickets field value
relatedContact?.updateOpenTroubleTicketCount()

 

This table describes how to set up a second trigger on the TroubleTicket object.


Trigger Component

Value

Trigger Object

TroubleTicket

Trigger

After Update In Database

Trigger Name

After_Update_Set_Open_Trouble_Tickets

Trigger Definition

// Get the related contact for this trouble ticket
def relatedContact = Contact_Obj_c
// Update its OpenTroubleTickets field value
relatedContact?.updateOpenTroubleTicketCount()

 

Supported Classes and Methods for Use in Groovy Scripts: Explained

Groovy is a standard, dynamic scripting language for the Java platform for which the Oracle Fusion CRM Application Composer provides deep support. This topic covers the supported classes and methods for use in Groovy scripts.

Classes and Methods

When writing Groovy scripts, you may only use the classes and methods that are documented in the table below. Using any other class or method may work initially, but will throw a runtime exception when you migrate your code to later versions. Therefore, we strongly suggest that you ensure the Groovy code you write adheres to the classes and methods shown here. For each class, in addition to the method names listed in the table, the following method names are also allowed:

In contrast, the following methods are never allowed on any object:


Class Name

Allowed Methods

Package

ADFContext

getLocale()

getSecurityContext()

getUserRoles()

isUserInRole()

oracle.adf.share

Array

Any constructor

Any method

java.sql

Array

getArray()

getElemType()

getList()

oracle.jbo.domain

ArrayList

Any constructor

Any method

java.util

Arrays

Any constructor

Any method

java.util

AttributeDef

getAttributeKind()

getIndex()

getJavaType()

getName()

getPrecision()

getProperty()

getScale()

getUIHelper()

getUpdateableFlag()

isMandatory()

isQueriable()

oracle.jbo

AttributeHints

getControlType()

getDisplayHeight()

getDisplayHint()

getDisplayWidth()

getFormat()

getFormattedAttribute()

getFormatter()

getFormatterClassName()

getHint()

getLocaleName()

parseFormattedAttribute()

oracle.jbo

AttributeList

getAttribute()

getAttributeIndexOf()

getAttributeNames()

setAttribute()

oracle.jbo

BaseLobDomain

closeCharacterStream()

closeInputStream()

closeOutputStream()

getInputStream()

getLength()

getOutputStream()

getcharacterStream()

oracle.jbo.domain

BigDecimal

Any constructor

Any method

java.math

BigInteger

Any constructor

Any method

java.math

BitSet

Any constructor

Any method

java.util

Blob

Any constructor

Any method

java.sql

BlobDomain

Any constructor

getBinaryOutputStream()

getBinaryStream()

getBufferSize()

oracle.jbo.domain

Boolean

Any constructor

Any method

java.lang

Byte

Any constructor

Any method

java.lang

Calendar

Any constructor

Any method

java.util

Char

Any constructor

bigDecimalValue()

bigIntegerValue()

booleanValue()

doubleValue()

floatValue()

getValue()

intValue()

longValue()

oracle.jbo.domain

Clob

Any constructor

Any method

java.sql

ClobDomain

Any constructor

toCharArray()

oracle.jbo.domain

Collection

Any constructor

Any method

java.util

Comparator

Any constructor

Any method

java.util

Currency

Any constructor

Any method

java.util

DBSequence

Any constructor

getValue()

oracle.jbo.domain

Date

Any constructor

Any method

java.util

Date

Any constructor

Any method

java.sql

Date

Any constructor

compareTo()

dateValue()

getValue()

stringValue()

timeValue()

timestampValue()

oracle.jbo.domain

Dictionary

Any constructor

Any method

java.util

Double

Any constructor

Any method

java.lang

Enum

Any constructor

Any method

java.lang

EnumMap

Any constructor

Any method

java.util

EnumSet

Any constructor

Any method

java.util

Enumeration

Any constructor

Any method

java.util

EventListener

Any constructor

Any method

java.util

EventListenerProxy

Any constructor

Any method

java.util

EventObject

Any constructor

Any method

java.util

Exception

Any constructor

Any method

java.lang

ExprValueErrorHandler

addAttribute()

clearAttributes()

raise()

raiseLater()

warn()

oracle.jbo

Float

Any constructor

Any method

java.lang

Formattable

Any constructor

Any method

java.util

FormattableFlags

Any constructor

Any method

java.util

Formatter

Any constructor

Any method

java.util

GregorianCalendar

Any constructor

Any method

java.util

HashMap

Any constructor

Any method

java.util

HashSet

Any constructor

Any method

java.util

Hashtable

Any constructor

Any method

java.util

IdentityHashMap

Any constructor

Any method

java.util

Integer

Any constructor

Any method

java.lang

Iterator

Any constructor

Any method

java.util

JboException

getDetails()

getErrorCode()

getErrorParameters()

getLocalizedMessage()

getMessage()

getProductCode()

getProperty()

oracle.jbo

JboWarning

Any constructor

getDetails()

getErrorCode()

getErrorParameters()

getLocalizedMessage()

getMessage()

getProductCode()

getProperty()

oracle.jbo

Key

toStringFormat()

oracle.jbo

LinkedHashMap

Any constructor

Any method

java.util

LinkedHashSet

Any constructor

Any method

java.util

LinkedList

Any constructor

Any method

java.util

List

Any constructor

Any method

java.util

ListIterator

Any constructor

Any method

java.util

ListResourceBundle

Any constructor

Any method

java.util

Locale

Any constructor

Any method

java.util

Long

Any constructor

Any method

java.lang

Map

Any constructor

Any method

java.util

Math

Any constructor

Any method

java.lang

MathContext

Any constructor

Any method

java.math

NClob

Any constructor

Any method

java.sql

NameValuePairs

Any constructor

getAttribute()

getAttributeIndexOf()

getAttributeNames()

setAttribute()

oracle.jbo

NativeTypeDomainInterface

getNativeObject()

oracle.jbo.domain

Number

Any constructor

bigDecimalValue()

bigIntegerValue()

booleanValue()

byteValue()

doubleValue()

floatValue()

getValue()

intValue()

longValue()

shortValue()

oracle.jbo.domain

Observable

Any constructor

Any method

java.util

Observer

Any constructor

Any method

java.util

PriorityQueue

Any constructor

Any method

java.util

Properties

Any constructor

Any method

java.util

PropertyPermission

Any constructor

Any method

java.util

PropertyResourceBundle

Any constructor

Any method

java.util

Queue

Any constructor

Any method

java.util

Random

Any constructor

Any method

java.util

RandomAccess

Any constructor

Any method

java.util

Ref

Any constructor

Any method

java.sql

ResourceBundle

Any constructor

Any method

java.util

Row

getAttribute()

getAttributeHints()

getKey()

getLookupDescription()

getOriginalAttribute()

getOriginalAttributeValue()

isAttributeChanged()

isAttributeUpdateable()

remove()

revertRow()

revertRowAndContainees()

setAttribute()

validate()

oracle.jbo

RowId

Any constructor

Any method

java.sql

RowIterator

createAndInitRow()

createRow()

findByKey()

findRowsMatchingCriteria()

first()

getAllRowsInRange()

getCurrentRow()

insertRow()

last()

next()

previous()

reset()

oracle.jbo

RowSet

createAndInitRow()

createRow()

executeQuery()

findByKey()

findRowsMatchingCriteria()

first()

getAllRowsInRange()

getCurrentRow()

insertRow()

last()

next()

previous()

reset()

oracle.jbo

Scanner

Any constructor

Any method

java.util

SecurityContext

getUserName()

getUserProfile()

oracle.adf.share.security

Session

getLocale()

getLocaleContext()

getUserData()

oracle.jbo

Set

Any constructor

Any method

java.util

Short

Any constructor

Any method

java.lang

Short

Any constructor

Any method

java.lang

SimpleTimeZone

Any constructor

Any method

java.util

SortedMap

Any constructor

Any method

java.util

SortedSet

Any constructor

Any method

java.util

Stack

Any constructor

Any method

java.util

StackTraceElement

Any constructor

Any method

java.lang

StrictMath

Any constructor

Any method

java.lang

String

Any constructor

Any method

java.lang

StringBuffer

Any constructor

Any method

java.lang

StringBuilder

Any constructor

Any method

java.lang

StringTokenizer

Any constructor

Any method

java.util

Struct

Any constructor

Any method

java.sql

Struct

getAttribute()

setAttribute()

oracle.jbo.domain

StructureDef

findAttributeDef()

getAttributeIndexOf()

oracle.jbo

Time

Any constructor

Any method

java.sql

TimeZone

Any constructor

Any method

java.util

Timer

Any constructor

Any method

java.util

TimerTask

Any constructor

Any method

java.util

Timestamp

Any constructor

Any method

java.sql

Timestamp

Any constructor

compareTo()

dateValue()

getValue()

stringValue()

timeValue()

timestampValue()

oracle.jbo.domain

TreeMap

Any constructor

Any method

java.util

TreeSet

Any constructor

Any method

java.util

UUID

Any constructor

Any method

java.util

UserProfile

getBusinessCity()

getBusinessCountry()

getBusinessEmail()

getBusinessFax()

getBusinessMobile()

getBusinessPOBox()

getBusinessPager()

getBusinessPhone()

getBusinessPostalAddr()

getBusinessPostalCode()

getBusinessState()

getBusinessStreet()

getDateofBirth()

getDateofHire()

getDefaultGroup()

getDepartment()

getDepartmentNumber()

getDescription()

getDisplayName()

getEmployeeNumber()

getEmployeeType()

getFirstName()

getGUID()

getGivenName()

getHomeAddress()

getHomePhone()

getInitials()

getJpegPhoto()

getLastName()

getMaidenName()

getManager()

getMiddleName()

getName()

getNameSuffix()

getOrganization()

getOrganizationalUnit()

getPreferredLanguage()

getPrinciple()

getProperties()

getProperty()

getTimeZone()

getTitle()

getUIAccessMode()

getUniqueName()

getUserID()

getUserName()

getWirelessAccountNumber()

oracle.adf.share.security.identitymanagment

ValidationException

getDetails()

getErrorCode()

getErrorParameters()

getLocalizedMessage()

getMessage()

getProductCode()

getProperty()

oracle.jbo

Vector

Any constructor

Any method

java.util

ViewCriteria

createAndInitRow()

createRow()

createViewCriteriaRow()

findByKey()

findRowsMatchingCriteria()

first()

getAllRowsInRange()

getCurrentRow()

insertRow()

last()

next()

previous()

reset()

oracle.jbo

ViewCriteriaItem

getValue()

makeCompound()

setOperator()

setUpperColumns()

setValue()

oracle.jbo

ViewCriteriaItemCompound

ensureItem()

getValue()

makeCompound()

setOperator()

setUpperColumns()

setValue()

oracle.jbo

ViewCriteriaRow

ensureCriteriaItem()

getConjunction()

isUpperColumns()

setConjunction()

setUpperColumns()

oracle.jbo

ViewObject

appendViewCriteria()

createAndInitRow()

createRow()

createViewCriteria()

executeQuery()

findByKey()

findRowsMatchingCriteria()

first()

getAllRowsInRange()

getCurrentRow()

getMaxFetchSize()

insertRow()

last()

next()

previous()

reset()

setMaxFetchSize()

oracle.jbo

WeakHashMap

Any constructor

Any method

java.util

Importing and Exporting Custom Objects: Explained

To support the importing and exporting of the custom objects that you created with the Oracle Fusion CRM Application Composer, you must first generate the object artifacts required for both file-based import and bulk export.

Oracle Fusion Import and Export Processes

In Oracle Fusion, two processes exist to enable the importing and exporting of object data: file-based import and bulk export.

File-based import supports the import of data from an external text or xml file to interface tables and then from interface tables to target application tables.

Note

File-based import bypasses any Groovy validation and trigger logic on an object.

Bulk export lets you extract large volumes of data from CRM objects, both as extracts of a full set of records for an object as well as incremental extracts. The system creates comma or tab-delimited files with the extracted data, which are available to users as attachments to the batch records that have been executed.

Enabling Import and Export for Custom Objects

The object model extensions that you make using the Application Composer do not create the artifacts required by these import and export processes. For example, file-based import leverages Oracle Data Integrator (ODI).

Accordingly, after completing your object model extensions, generate the required artifacts to register your extensions and make them available for importing and exporting.

Note

The creation of import and export artifacts occurs only in the Oracle Metadata Services (MDS) mainline, and is not supported within the MDS sandbox.

To enable the import and export of custom object data:

  1. Select an application on the main Overview page.

  2. Select the Import and Export link in the Common Setup pane, or in the local area of the main Overview page.

  3. On the Import and Export page, click the Generate button.

After you enable your object model extensions for importing and exporting, you can then schedule your file-based import and bulk export processes using the following tasks, available by selecting Setup and Maintenance from the Tools menu and searching on the task name.

Important

Refer to Oracle Fusion CRM product-specific documentation for additional details on how Oracle Fusion CRM products enable the import and export of custom object data (custom fields) for standard objects.

FAQs for Extending Oracle Fusion CRM Applications

What's the difference between fixed choice lists and dynamic choice lists?

A fixed choice list and a dynamic choice list are similar in that the ultimate goal of both types of choice lists is to generate a field with a list of values at runtime. However, the list of values for a fixed choice list is derived from an FND lookup type.

The list of values for a dynamic choice list is derived from an existing object's actual data.

What's the difference between Oracle Composer and Oracle Fusion CRM Application Composer?

Oracle Composer lets you make user interface changes at runtime across all Oracle Fusion applications. In Oracle Fusion CRM transactional pages (non-dashboards), you can use Oracle Composer to expand or collapse regions, set which columns are visible in tables and how they are ordered, and create and edit saved searches. In Oracle Fusion CRM dashboards, you can make additional customizations, such as hiding, showing, or moving regions, and adding new content from the Resource Catalog.

The Oracle Fusion CRM Application Composer also lets you make user interface changes at runtime. However, the types of user interface changes that you can make using the Application Composer are quite different. Specifically, your primary focus when using the Application Composer is to make actual object model changes. For example, you can create a new business object and related fields, and then create new application pages where that object and its fields are exposed to users. The ability to make these types of object model extensions is available only in Oracle Fusion CRM applications. Also, using the Application Composer, you cannot access the Resource Catalog to add new content to a page.

This table describes some of the primary differences between Oracle Composer and the Application Composer:


Customization Task

Available in Oracle Composer?

Available in Oracle Fusion CRM Application Composer?

Make object model extensions and expose your customizations by creating or modifying work area pages

No

Yes

Reorder subtabs

No

Yes

Customize dashboard pages

Yes

No

Add content from the Resource Catalog

Yes

No

Select the MDS layer where you want to author customizations, such as at the site layer or job role layer

Yes

No, customizations are applied only at the site layer

View results of customizations immediately

Yes, in the Oracle Composer design interface

Yes, in the CRM application that you are customizing