2Overview of Web Services On Demand

About Web Services

The term Web services describes a standardized way of integrating Web-based applications over the Web. Web services allow businesses to communicate with each other and with other clients, without intimate knowledge of each other's IT systems. Web services share business logic, data, and processes through a Web services application programming interface (API). Application developers can then add the Web services to a software application (such as a Web page or executable program) to offer specific functionality to users.

Web Services Core Technologies

The Web services core technologies are a set of standards-based technologies that include:

  • Extensible Markup Language (XML). The standard markup language that allows the definition of message structures and facilitates the passing of data between software applications.

  • Web Services Description Language (WSDL). The XML-formatted language that is used to describe a Web service. A WSDL file defines the available methods, message structures, and network addresses required for using a specific Web service.

  • Simple Object Access Protocol (SOAP). The XML-based protocol that is used to send Web services request and response messages. Web services messages are sent between the customer implementation of Web services and the SOAP handler on the Oracle Web Server.

For more information on Web services technologies, see:http://www.w3.org/2002/ws

Oracle CRM On Demand Web Services Toolkit

The Web Services Toolkit provides access to an application programming interface (API) that companies can use to build programs to integrate with Oracle CRM On Demand. The Toolkit includes a set of WSDL files that describes the interface to the Oracle CRM On Demand objects. This provides a programmatic interface for accessing your company's Oracle CRM On Demand information. A customer application can use the WSDL files through standard Web services development tools, such as those provided by the Oracle SOA Suite.The API for this release of Oracle CRM On Demand is backward-compatible with previous releases.

The following figure shows how the Web Services Toolkit interacts with the Oracle CRM On Demand database. The customer uses the Web Services Toolkit (WSDL files) to define the objects and methods that are contained in the Oracle CRM On Demand Hosted Service. The customer application communicates with Oracle CRM On Demand over the Internet using the secure HTTPS protocol. It invokes the Web services implementation contained in the Oracle CRM On Demand Hosted Service.

How Web Services Communicate with Oracle CRM On Demand

Oracle CRM On Demand is designed to be backward-compatible with previous releases. WSDL files from previous releases will continue to work with newer releases of Oracle CRM On Demand, and there is no need for customers to modify their code when upgrading to a new release of Oracle CRM On Demand.

Oracle CRM On Demand Web Services and Integration with Oracle CRM On Demand

The Web Services On Demand API allows companies to build programs to integrate with Oracle CRM On Demand. Some common examples of client integrations include the following:

  • Integrations of CRM and back-office applications. You can retrieve real-time sales, marketing, and service information from Oracle CRM On Demand and use it in financial and other back-office applications. For example, you can retrieve information about recently closed opportunities through the Web services interface and insert this information into an order entry system that has a Web services user interface. In addition, you can store information from back-office applications in Oracle CRM On Demand for instant access by users, visible in custom fields on any Oracle CRM On Demand page.

  • Web-based portal applications. You can create customized Web-based applications using Active Server Pages (ASPs), Java Server Pages (JSPs), or similar Web technology that accesses Oracle CRM On Demand through the Web services interface. For example, an Oracle CRM On Demand customer can deploy a customized Web form on its corporate Web site, allowing visitors to enter requests for more information. The application creates new lead records in Oracle CRM On Demand for these requests through the Web services interface. Another Web page can allow visitors to browse through solutions to common problems stored in Oracle CRM On Demand and retrieved in real time through the Web services interface.

  • Custom add-on modules. Customers can also extend Oracle CRM On Demand functionality. For example, a company can create a custom add-on module to streamline its unique quote creation process, or a company can create additional utilities to perform mass data cleanup operations. These modules access data in Oracle CRM On Demand directly through the Web services interface. Oracle CRM On Demand administrators and users can run these modules while concurrently accessing the Oracle CRM On Demand user interface.

Web Services Security

The Oracle CRM On Demand Web Services Integration framework includes the following security features:

  • The mustUnderstand attribute of Simple Object Access Protocol (SOAP) 1.1 is supported. This allows a client to specify that the target server must be capable of processing all parameters in the SOAP request header, otherwise the requests must be rejected.

  • SOAP message validation is performed, for example, to check for badly formed SOAP requests or for SOAP header elements that are not namespace-qualified.

  • Support is provided for the WS-I Basic Security Profile Version 1.0. For more information, see the following section.

  • All communications are encrypted with Secure Sockets Layer (SSL) for security (minimum 128-bit).

  • Access is session-based, requiring authorization with a valid Oracle CRM On Demand user name and password.

  • Inactive sessions are reused or closed automatically after a period of inactivity.

  • The same data visibility and access capabilities that apply to users in the Oracle CRM On Demand hosted service are applied to users connected through the Web services interface. Data visibility and access are restricted by the role that your company assigns. Permissions are checked for every data access.

  • A full audit trail of Web services activity is available through Oracle CRM On Demand's Administration pages. These pages display both current and historical usage statistics.

  • A number of other proprietary solutions protect Oracle CRM On Demand against malicious use of the Web services interface. These solutions are constantly reviewed and improved as new technologies and techniques become available.

A session with a standard HTTPS request is created to establish a connection with Oracle CRM On Demand through the Web services interface. A client can create a new session with the login operation and close it with the logoff operation. When a session is created, an encrypted session identifier is provided to the client, which for stateful Web services requests, must be included in all subsequent requests during that session. For more information, see About Establishing and Managing the Web Services Session.

Support for the WS-I Basic Security Profile Version 1.0

Support is provided for the WS-I Basic Security Profile Version 1.0, which describes the set of parameters used to authenticate a Web services transaction.

Oracle CRM On Demand has implemented support for the Username and PasswordType parameters, which are part of the UserNameToken standards. This allows a username and password to be passed with a SOAP request, which removes the necessity for a separate login operation. For more information, see Using Stateless Web Service Requests.

Passwords can be specified as type PasswordText only, which mean that the password is in clear text format.

WSSE Namespace Support

The SOAP header of messages received by Oracle CRM On Demand are validated to ensure they are namespace-qualified. Oracle CRM On Demand supports the following namespace values when specifying the WSSE namespace in a SOAP request:

  • Draft Namespaces:

    • wsse="http://schemas.xmlsoap.org/ws/2002/04/secext"

    • wsse="http://schemas.xmlsoap.org/ws/2002/07/secext"

  • Version 1.0 Namespace: wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"

The WSSE Version 1.0 namespace must be specified to perform a stateless transaction. (In addition, the Web Services R16 Compatibility Mode check box must be cleared in the Company Profile page and the Username and PasswordText tokens must be provided in the request.)

For more information about stateless transactions and the use of the WSSE namespace, see Establishing and Managing the Web Services Session

Web Services Reliability

All server components of Oracle CRM On Demand, including those responsible for the Web services interface, incorporate load balancing and other high-availability mechanisms. These mechanisms prevent the service from being interrupted by server or network infrastructure failure.

Web Services and the Oracle CRM On Demand Objects

Oracle CRM On Demand Web services allow applications to integrate with Oracle CRM On Demand. They provide the ability to find and invoke the core Oracle On Demand Web Services across the Web from any client application language. This ability makes the process of using Oracle CRM On Demand Web Services easy for those who want to use them.

The Oracle CRM On Demand services provide a basis for customers to perform integration with Oracle CRM On Demand based on SOAP technology.

All major Oracle CRM On Demand business objects are accessible in the Web services, with the names of the Web services matching the default names of the business objects. Oracle CRM On Demand Objects Accessible Through Web Services details the Oracle CRM On Demand parent and child objects that are accessible through Oracle CRM On Demand Web Services.

Web Service APIs

Starting with Web Services On Demand Version 4.0 (CRM On Demand Release 16), objects are accessible through two APIs:

  • Web Services v1.0. Used to interact with Custom Objects 01-03, as well as preconfigured objects.

  • Web Services v2.0. Used to interact with all Oracle CRM On Demand Custom Objects, as well as preconfigured objects. Also used to access custom Web applets.

Before Web Services On Demand Version 4.0, only the Web Services v1.0 was available. In addition, the following APIs are provided:

  • Service APIs. Used to perform management tasks and retrieve integration events through Web services.

  • Administrative Services APIs. Used to access company metadata through Web services.

For the Web Services v1.0 API, operations work on the parent objects and all child components are synchronized with the parent. The Web Services v2.0 API, however, works on a node basis, where parent and child components are treated as separate nodes.

The Web Services v2.0 API provides an Execute method for performing multiple operations on separate nodes, and the Web Services v2.0 QueryPage method offers additional options (through the searchspec, namedsearchspec, sortorder, and sortsequence arguments) for issuing queries compared to the Web Services v1.0 QueryPage method.

The following table shows the methods available through the Web Services v1.0 and Web Services v2.0 APIs for access to objects.

Table Web Services v1.0 and Web Services v2.0 Methods

Web Services v1.0 Web Services v2.0 Comments

Delete

Delete

Finds records in the Oracle CRM On Demand database that match specified field values, and then deletes them. Deleted records are visible in the Deleted Items area of the Oracle CRM On Demand UI and can be queried using the DeletedItemQueryPage method.

DeleteChild

Not applicable

Deletes child records from the Oracle CRM On Demand database, or removes the association between the child and the parent object.

Not applicable

Execute

Executes multiple update, insert, and delete operations on separate records in the Oracle CRM On Demand database within the same Web services request.

Insert

Insert

Inserts new records into the Oracle CRM On Demand database.

InsertChild

Not applicable

Inserts new child records into the Oracle CRM On Demand database.

InsertOrUpdate

Not applicable

Updates existing records or inserts a new record if one did not exist.

QueryPage

QueryPage

Executes a query against a specified list of records, and returns a subset of the records that match the search criteria set by the method arguments.

Update

Update

Updates records with a new value.

UpdateChild

Not applicable

Updates child records with a new value.

The following table shows differences between Web Services v1.0 and Web Services v2.0.

Table Web Services v1.0 and Web Services v2.0 Differences

Web Services v1.0 Web Services v2.0

Supports an upsert operation through InsertOrUpdate call

Does not support an upsert operation

Pagination parameters are supported only at the parent level

Pagination parameters are supported at both the parent and child level

Returns all child records even if the condition is true for one child.

For example, the QueryPage call returns all partner children from an account even if the condition is true for only one partner child

Outputs only the specific child whose condition was met.

For example, QueryPage returns only the specific partner child from the account for which the condition was true.

UseChildAnd argument of QueryPage call is available for using OR/AND logic between parent and child

The UseChildAnd argument is not available.

Instead, by default, all parent records matching the parent criteria and only children matching the child criteria are returned.

Operators cannot be used to construct complex queries across multiple fields

The SearchSpec argument of QueryPage can be used to construct complex queries across multiple fields in a request. For example, the OR operator can be used to find all records that match the specified condition for [Field A] OR the specified condition for [Field B].

Sort order is not customizable

Sortorder and sortsequence arguments are available to customize the sorting order of the records

Update call removes child objects not specified in the request

An Execute call with "operation=update" at the parent level removes the unspecified children in the request

InsertChild call is used to insert the children for existing parent objects

For Web Services v2.0:

  • Insert call can be used to insert both parent records and child records.

  • If a child node is specified in the request, the Insert call inserts the child and associates it with the existing parent record.

  • If a child node is missing, the Insert call inserts only the new parent record.

UpdateChild call is used to update child records

For Web Services v2.0:

  • Update call can be used to update parent records and child records

  • If a child node is specified in the request, the Update call updates the child in the existing parent record

  • If the child node is missing, the Insert call updates only the existing parent record

DeleteChild call is used to delete the child records

For Web Services v2.0:

  • Delete call can be used to delete both parent records and child records

  • If the child node specified in the request is available, the Delete call deletes the child in the existing parent record, and leaves the parent record undeleted.

  • If the child node is missing, the Delete call deletes the existing parent record.

InsertChild, UpdateChild, and DeleteChild methods are used to perform operations on child records

In an Execute request, a specific node within the request can be skipped using the "operation=skipnode" attribute.

This can be used to simulate InsertChild, UpdateChild or DeleteChild by skipping the parent node and only performing the specified actions on the child records.

LOVLanguageMode argument is not available

The LOVLanguageMode argument is an input argument for all of the Web Services v2.0 calls. It determines whether the processing for picklist fields occurs using language independent codes (LIC) or language dependent codes (LDC).

ViewMode argument is not available

The ViewMode argument, which specifies the level of access to records specified in the method call, is available for all of the Web Services v2.0 calls.

Does not support access to custom Web applets.

Supports access to custom Web applets as read-only child objects of a parent object.

There are some differences between the format of the WSDL files for Web Services v1.0 and Web Services v2.0:

  • In the Web Services v2.0 API, strong data typing is supported. Therefore, in the Web Services v2.0 WSDL files, fields are represented by a range of xsd: data types, while in Web Services v1.0 WSDL files, all fields have the xsd:string data type. For more information, see Field Types Supported by Oracle CRM On Demand.

  • In Web Services v2.0, messages do not include the business service name, and have the format:

    [Objectname][Method]_[Input/Output]

    For example:

    AccountInsert_Input, ContactQueryPage_Output 
    

    as opposed to the following for Web Services v1.0:

    AccountWS_AccountInsert_Input, ContactWS_ContactQueryPage_Output
    
  • The target namespace of the WSDL for Web Services v2.0 is:

    urn:crmondemand/ws/ecbs/objectname/
    

    compared to the following for Web Services v1.0:

    urn:crmondemand/ws/objectname/
    

About Parent-Child Relationships

Many of the Oracle CRM On Demand objects interact with each other through parent-child relationships. A parent object refers to the main or base object of interest and the child object refers to objects that are related to the parent in some way-for example, if the child is contained in the parent, or if the child has records that refer to the parent.

These parent-child relationships can be one-to-many or many-to-many. For example, a lead can be associated with a particular account, but an account can have many leads associated with it. In this case, you can think of the relationship between the account and its leads as a one-to-many parent-child relationship.

Other relationships can be many-to-many, meaning that many children are associated with many parents. For example, a contact can be associated with several opportunities, or an opportunity can have several contacts associated with it. In this case, you can think of the relationship between contacts and their opportunities as a many-to-many parent-child relationship. The parent-child relationship between contacts and opportunities can be treated with either the opportunity as the parent with contacts as children, or with the contact as the parent and the opportunities as children.

Web Services On Demand and Custom Fields

Oracle CRM On Demand allows company administrators to create custom fields that capture information specific to the company’s needs. Web Services On Demand allows customers to interact with the data stored in these custom fields. Each custom field has an associated integration tag that is used by Web services and Web links to reference data in custom fields. This feature allows administrators to change the display name of a field without making modifications to the existing Web services integration.

Custom Fields can be referenced using two different integration tags:

  1. The Custom WSDL file uses the format:

    fieldtypeDisplay_Name
    

    For example, a custom Boolean field with the display name Account Selected would have the default custom integration tag bAccount_Selected.

  2. The Generic WSDL file uses the format:

    fieldtype##
    

    For example, a custom Boolean field would have the generic integration tag CustomBoolean0.

The following procedure describes how to view or modify the integration tag information:

To view or modify integration tag information for a record type

  1. Navigate to the Field Setup Administration page for the required record type.

    For example: Admin, Application Customization, Account, Account Field Setup, Rename Fields.

  2. Click Advanced.

    The integration tag information is displayed for you to view or modify.

You can download custom WSDL files in which the XML tags for the custom fields are based on the integration tags using the following procedure:

To download a WSDL file that is specific to your company’s customization

  1. Navigate to the Web Services Administration page.

  2. From the Select Service drop-down list, select Web Services v1.0, or Web Services v2.0 as required.

  3. From the Document list, select WSDL.

  4. From the Type list, select Custom.

  5. From the WSDL Object list, select the required record type.

  6. From the Select Related Information list, select the child record types that you wish to include in the WSDL.

  7. Click Download.

  8. Save the WSDL file to your computer.

For more information about downloading WSDL files, see Downloading WSDL Files.

Field Types Supported by Oracle CRM On Demand

The field types supported depend on whether the Web Services v1.0 or Web Services v2.0 API is used, as described in the following topics.

Web Services v1.0

For the Web Services v1.0 API, all fields in Web services On Demand are transmitted and received as strings. It is the client’s responsibility to cast these to and from the required data type in any application. The proper type can usually be determined from the name, purpose, or application of the field. There is no dynamic method for determining field types. You can derive clues about a field’s type from its name as follows:

  • A name ending in the suffix Id is usually a key field, such as a primary key, foreign key, or user key Id. It can usually be treated as a unique text string.

  • Fields with names containing Date or Time, such as LastUpdated, DueDate, StartTime, or EndTime might be date fields.

  • Telephone number fields can be treated as numeric phone numbers or as plain text. When performing queries on phone number type fields the following formats must be used in Query operations:

    • U.S. Format: +1 872 5550199

    • France: +33 01 40359564

    • Japan: +81 3 54579623

  • Other numeric fields, such as currency, size, revenue, or probability can be treated as integer, floating point, or text fields depending on the client application.

  • Boolean fields have the value Y for true or N for false.

  • Most other fields can be treated as ordinary text.

Note: If you attempt to query a field of type Date with syntax like <CloseDate>&gt;'01/01/2004 00:00:00'</CloseDate> you get an error, because the time parameter 00:00:00 is only valid for fields of type Date/Time and not for fields of type Date.

Web Services v2.0

The Web Services v2.0 API supports strong data types for fields, so fields are represented by appropriate XSD data types. The following table shows the list of supported XSD data types.

Table Data Type Mapping in the Web Services v2.0 API

Data Type Mapped XSD Data Type

BOOL

xsd:boolean

CURRENCY

xsd:decimal

NUMBER

xsd:decimal

DATE

xsd:date

DATETIME

xsd:dateTime

UTCDATETIME

xsd:dateTime

ID

xsd:string

NOTE

xsd:string

PHONE

xsd:string

TEXT

xsd:string

INTEGER

xsd:int

TIME

xsd:time

Others

xsd:string

If an incorrect data type is provided in a Web services request, the field is updated to NULL or a default value for that specific data type, as shown in the following table.

Table Updating of Fields When Incorrect Data Types are Provided in the Web Services v2.0 API

XSD Data Type Default Value or Null

xsd:boolean

N

xsd:decimal

NULL

xsd:date

NULL

xsd:dateTime

NULL

xsd:string

NULL

xsd:int

0

xsd:time

NULL

For example, Activity has a field named Cost, which takes integer values. If you provide a text value for the field in an update request, the previous value is replaced with a 0.

You can find further details about the definition of XSD data types here:

http://www.w3.org/TR/xmlschema-2/#built-in-datatypes

Special Search Fields

Some field names are prefixed with CI_ to denote that they are special fields that provide better search functionality. These fields do not exist for all objects but are easily identified in the WSDL files as shown in the following excerpt from the Account WSDL file:

<xsd:element name="CI_AccountName" maxOccurs="1" minOccurs="0" type="xsd:string"></xsd:element>
<xsd:element name="CI_Location" maxOccurs="1" minOccurs="0" type="xsd:string"></xsd:element>

Support for Multi-Select Picklists

A multi-select picklist is a picklist from which the user can select multiple values. In Web Services On Demand, multi-select picklists are only accessible for the following record types:

  • Account

  • Activity

  • Contact

  • Custom Object 01

  • Custom Object 02

  • Custom Object 03

  • Lead

  • Opportunity

  • Service Request

For these record types, all standard and custom multi-select picklist fields are accessible. You can add, remove, replace or query selections in parent-level multi-select picklist fields, however child-level multi-select picklist fields are not supported.

Input and output values are language-independent code (LIC) delimited, but the multi-select picklist delimiter is always a semicolon regardless of locale for input and output: <LIC1>;<LIC2>.

Locale-Dependent Access to Oracle CRM On Demand

Oracle CRM On Demand Web Services does not provide any specialized localization interfaces. Oracle CRM On Demand supports full localization, so that the data created through Web services is localized for users. The localized fields in the Web services interfaces follow the formats outlined in the following topics.

Date and Time Fields

Date and time fields for Web services v1.0 are in the following format:

MM/DD/YYYY hh:mm:ss

For Web services v1.0, the time zone is assumed to be the logged in user’s time zone, which is determined from the user’s locale.

For Web services v2.0, the data in SOAP requests conforms to XSD data formats.

The XSD dateTime datatype has the format:

yyyy '-' mm '-' dd 'T' hh ':' mm ':' ss ('.' s+)? (zzzzzz)?

An example of a date and time in this format is:

2002-10-10T12:00:00-05:00 

This example represents noon on 10th October 2002, Central Daylight Savings Time, which is equivalent to Eastern Standard Time in the US.

The same date and time for UCT, which is equivalent to the GMT time zone is as follows:

2002-10-10T17:00:00Z

For the QueryPage method of Web Services v2.0, either the XSD formats (recommended) or the locale-specific formats can be used.

Number and Currency Fields

Number and currency fields in Oracle CRM On Demand are in raw number format. In other words, number and currency fields hold only digits with no currency symbols, decimal separators, or other numeric separators.

Note: The "decimal point" might be represented by a different symbol depending on the user's locale.

When the company profile setting: Prevent Web Service Updates of Inactive Currencies is selected, currency field values cannot be updated to an inactive currency.

Validation of Email Fields

When Oracle CRM On Demand validates fields containing email addresses, it identifies the following as invalid:

  • Empty string

  • String too long

  • No characters before the at sign (@) character, for example: @riqhtequip.com

  • No at sign (@) character, for example:isampleriqhtequip.com

  • No period (.) character, for example: isample@riqhtequipcom

  • No domain, for example: isample@

  • No domain suffix such as com, for example: isample@riqhtequip

  • Multiple at signs (@), for example: isample@@riqhtequip.com

  • Consecutive period (.) characters, for example: isample@riqhtequip..com

  • Spaces in the string, for example: isa mple@riqhtequip

  • Characters other than the following in the local part of an email address:

    • Uppercase and lowercase letters (case insensitive)

    • The digits 0 through 9

    • The characters:

      • Exclamation point (!)

      • Hash symbol (#)

      • Dollar sign ($)

      • Percent (%)

      • Ampersand (&)

      • Single quotation sign (')

      • Asterisk (*)

      • Plus sign (+)

      • Minus sign (-)

      • Slash (/)

      • Equal sign (=)

      • Question mark (?)

      • Caret (^)

      • Underscore (_)

      • Back single quotation mark (`)

      • Left curly brace ({)

      • Vertical bar (|)

      • Right curly brace (})

      • Tilde (~)

  • Any special characters in the domain name of an email address. These special characters are the same as those allowed in the local part of the email address, and also the left and right parentheses ().

Unicode Characters in Email Addresses

For some fields in Oracle CRM On Demand, email addresses can include most Unicode (UTF-8) characters, if the Allow Unicode Characters in Email Fields company profile setting is selected. This allows, for example, email addresses to contain accented characters.

Oracle servers do not support Unicode characters in email addresses, therefore such addresses are not allowed in User email fields. However, Oracle Eloqua Marketing Cloud Service does support Unicode characters, therefore you can save email addresses containing Unicode characters in Contact and Lead email fields and use the Send Email via Engage button on Contact Detail, Contact List, Lead Detail, or Lead List pages to send the emails. For more information about the use of Unicode characters in email addresses, see Oracle CRM On Demand Online Help.

Mapping Primary Address Fields Using Web Services

In Web services requests, a PrimaryAddressLine1 field is used to dynamically map the primary address field from an external application to the primary address field in Oracle CRM On Demand. The primary address field in Oracle CRM On Demand can vary depending on the Country value for each address; thus the PrimaryAddressLine1 field will map to a different field in the address object based on the Country value. The following tables show the mapping for the PrimaryAddressLine1 field depending on the selected Country value.

Note: The actual name of the PrimaryAddressLine1 fields varies with the record type as shown in the following table.

Table Primary Address Line1 To Address Field Mapping by Country

Address Lead Account (Billing Address) Account (Shipping Address) Contact (Account Address) Contact (Contact Address) Country

Street Address

Street Address

Bill To Street Address

Ship To Street Address

Personal Street Address

Primary Street Address

Group A

See the following table

Street Address 3

Street Address 3

Bill To Street Address 3

Ship To Street Address 3

Personal Street Address 3

Primary Street Address 3

Nauru

Postal Code

Postal Code

Bill To Postal Code

Ship To Postal Code

Personal Postal Code

Primary Postal Code

Group B

See the following table

County

County

Bill To County

Ship To County

Personal County

Primary County

Group C

See the following table

Province

Province

Bill To Province

Ship To Province

Personal Province

Primary Province

Qatar

City

City

Bill To City

Ship To City

Personal City

Primary City

Papua New Guinea

Table Groups of Countries with Different Address Field Mappings

Group Countries

A

United States and all other countries apart from those in groups B and C, and those mentioned in the previous table.

B

Hungary, Belarus, Burkina Faso, Congo, Kazakhstan, Kyrgyzstan, Russian Federation, Congo Sudan, Turkmenistan, Ukraine

C

Antigua and Barbuda, Benin, Burundi, Botswana, Cameroon, Central African Republic, Chad, Comoros, Djibouti, Equatorial Guinea, Eswatini, Ethiopia, Gabon, Ghana, Guinea, Ivory Coast, Kenya, Lesotho, Malawi, Mauritania, Namibia, Niger, Niue, Oman, Puerto Rico, Rwanda, Seychelles, Solomon Islands, Tanzania, Togo, Tonga, Tuvalu, Uganda, United Arab Emirates, Vanuatu

Querying for an Address Record using PrimaryAddressLine1

When using the PrimaryAddressLine1 field to query for an address record, the value returned is the value contained in the mapped field for the specified country. For example, when querying for an address with <Country>Canada</Country>, the PrimaryAddressLine1 field is mapped to the Address field:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/
2001/XMLSchema">
  <SOAP-ENV:Body><ns:AccountQueryPage_Output xmlns:ns="urn:crmondemand/ws/ecbs/account/">
    <ListOfAccount xmlns="urn:/crmondemand/xml/Account/Data" lastpage="true">
      <Account>
        <Location>Toronto</Location>
        <AccountName>ACCOUNTTEST1</AccountName>
        <ListOfAddress lastpage="true">
          <Address>
            <Id>1QA2-R7C3O</Id>
            <StreetAddress3></StreetAddress3>
            <Country>Canada</Country>
            <County></County>
            <Description></Description>
            <Province>ON</Province>
            <ZipCode>M2H 3G5</ZipCode>
            <City>Toronto</City>
            <IntegrationId>1QA2-R7C3O</IntegrationId>
            <Address>100 Main Street</Address>
            <StreetAddress2></StreetAddress2>
            <PrimaryAddressLine1>100 Main Street</PrimaryAddressLine1>
          </Address>
	...
        </ListOfAddress>
      </Account>
    </ListOfAccount>
  </ns:AccountQueryPage_Output>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

whereas, when the <Country> value is Togo, the PrimaryAddressLine1 field maps to the County field:

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/
2001/XMLSchema">
  <SOAP-ENV:Body><ns:AccountQueryPage_Output xmlns:ns="urn:crmondemand/ws/ecbs/account/">
    <ListOfAccount xmlns="urn:/crmondemand/xml/Account/Data" lastpage="true">
      <Account>
        <Location>Togo</Location>
        <AccountName>ACCOUNTTEST2</AccountName>
        <ListOfAddress lastpage="true">
          <Address>
            <Id>1QA2-R7IMS</Id>
            <StreetAddress3></StreetAddress3>
            <Country>Togo</Country>
            <County>10222</County>
            <Description></Description>
            <Province></Province>
            <ZipCode></ZipCode>
            <City>Lomé</City>
            <IntegrationId>1QA2-R7IMS</IntegrationId>
            <Address></Address>
            <StreetAddress2></StreetAddress2>
            <PrimaryAddressLine1>10222</PrimaryAddressLine1>
          </Address>
	...
        </ListOfAddress>
      </Account>
    </ListOfAccount>
  </ns:AccountQueryPage_Output>
  </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Inserting or Updating an Address Record using PrimaryAddressLine1

When inserting or updating an address record using the PrimaryAddressLine1 field, the value provided in the PrimaryAddressLine1 field is written to the primary address field based on the Country value provided in the request. If a value is provided for both the PrimaryAddressLine1 field and the primary address field (for example, County) for the specified country, the value in the PrimaryAddressLine1 field is respected and the value in the primary address field is ignored. This is shown in the following table.

Table Value specified for PrimaryAddressLine1 and Primary Address Field

Field Name SOAP Request Value Written to DB

Country

Togo

Togo

County

BP 128

1 Main Street

Street Address 1

Not applicable

None

PrimaryStreetAddress1

1 Main Street

None

In the case where only a PrimaryAddressLine1 value is submitted, this value is written to the mapped field in the DB as shown in the following table.

Table Value specified for PrimaryAddressLine1 only

Field Name SOAP Request Value Written to DB

Country

Togo

Togo

County

Not applicable

1 Main Street

Street Address 1

Not applicable

None

PrimaryStreetAddress1

1 Main Street

None

Objects Supporting the PrimaryAddressLine1 Field

The PrimaryAddressLine1 field is available on a number of objects accessible through the Web Services v2.0 interface as shown in the following tables.

Table Parent Objects on Which the PrimaryAddressLine1 field is available

Object Name Fields

Account

BillingPrimaryAddressLine1, ShippingPrimaryAddressLine1

Contact

PrimaryAddressLine1, AlternateAddressLine1

Lead

BillingPrimaryAddressLine1

Table Child Objects on Which the PrimaryAddressLine1 field is available

Parent Object Name Child Object Name Fields

Account

Address

Not applicable

Account

Contact

Not applicable

Contact

Address

PrimaryAddressLine1

Contact

Lead

BillingPrimaryAddressLine1

Support for Concatenated Fields

A concatenated field is a field that can display the values from multiple fields and can also display additional text.

You cannot use Web services calls to update or query values within a concatenated field directly. To update or query the values of a concatenated field through Web service calls, you must update or query each of the individual fields separately. When you perform a QueryPage call on a concatenated field, the display text for the concatenated field is returned in the response.

For more information about concatenated fields, see Oracle CRM On Demand Online Help.

The Concatenated Field Administrative Service allows you to query, insert, and update concatenated field configuration data. For more information, see ConcatenatedFieldRead, ConcatenatedFieldReadAll, and ConcatenatedFieldUpsert.

Support for Maskable Fields

A maskable field is a field in which some of the data can be hidden from view from some users. The administrator can set up some custom fields as maskable fields for certain record types.

Users whose role includes the View Masked Data privilege, can view all of the data in a maskable field. However, users whose role does not include the View Masked Data privilege can see only the last four characters of the value in maskable fields. All of the other characters in the field are represented by the characters XXXX.

For example, if a maskable field contains the value 102030456789, then you see the following:

XXXX6789

If your user role includes the View Masked Data privilege, then the following applies to Web services requests:

  • You can insert data into maskable fields and update maskable fields.

  • The full (unmasked) field value is returned in query results.

If your user role does not include the View Masked Data privilege, then the following applies to Web services requests:

  • You can insert data into maskable fields and update maskable fields.

  • The masked field value is returned in query results.

  • You cannot use maskable fields in the search specification or sort specification in queries. Such queries return an error message.

Note: If a maskable field is set up as read-only for the record type, or for the page layout that is assigned to a user's role for the record type, then you cannot update the field.

For more information about maskable fields, see Oracle CRM On Demand Online Help.

Web Services Utilization

In the Oracle CRM On Demand application, the Web Services Utilization page provides detailed information on your company's Web services usage, both current and historical.

For each Web services request, Oracle CRM On Demand logs the following information:

  • Session Id. An identifier representing the session used to process a Web services request.

  • Web Service Name. The name of the Web service that was executed.

  • Operation. The operation that was performed.

  • Start Time. The date and time the request began processing.

  • End Time. The date and time the request completed processing.

  • Web Service Space. The namespace for the request that was executed.

  • User Alias. The alias of the user whose credentials were used to authenticate with.

  • Output Message Size (Bytes). The size of the response message in bytes.

  • Entry Type. Either Login, Logout, or Dispatch.

  • Input Message Size (Bytes). The size of the input message in bytes.

  • Web Service Client Name. The value provided in the <ClientName> parameter in the SOAP request. For more information about the Web Service Client Name parameter, see Web Service Client Name Identification.

  • # of Operations. The number of operations performed by Oracle CRM On Demand for the request.

  • Error Message. If the request resulted in an error, it is displayed, otherwise this field remains empty.

  • Type.. The user agent value for the request. For client integrations other than Oracle client integrations, this value defaults to Web Services. For Web services requests, language-independent codes are used instead of the display values used in the Oracle CRM On Demand UI, as shown in the following table:

Display Value for Type Language-independent Code

Interactive

UI

Unknown

UNK

Web Services

WS

The Web Services Utilization page supports Oracle CRM On Demand list management capabilities, allowing administrators to filter the list of entries and to export the data for further analysis in other applications.

You can also use the UserUsageQueryPage method to retrieve information about Web services utilization. For more information about this method, see UserUsageQueryPage.

See Oracle CRM On Demand Online Help for more information on using the Web Services Utilization page.

Web Service Client Name Identification

To allow accurate tracking of requests in the Web Services Utilization page, client applications require a mechanism to identify themselves in each Web service request that is sent to Oracle CRM On Demand. The SOAP header parameter, <ClientName> provides such a mechanism.

The <ClientName> parameter is optional, and is supported for both stateful and stateless web services operations.

Supported Client Name Characters and Usage

The <ClientName> value passed in the SOAP header is validated by Oracle CRM On Demand. The following characters are supported in the <ClientName> value:

  • UnicodeLetterOrDigit characters, that is, the set of Unicode characters identified as either a letter or a digit

  • Spaces

  • Commas

Any value passed in through the <ClientName> parameter that contains characters other than those specified above is not accepted by Oracle CRM On Demand. The request is still processed however, and the value Invalid Client Name is displayed in the Web Services Utilization page. The <ClientName> value is restricted to 100 characters; for any value longer than 100 characters, Invalid Client Name is displayed in the Web Services Utilization page.

It is also recommended that the following convention be used when specifying the <ClientName> value:

[Developer], [Client Name]

For example, an application developed by XYZ Consulting called Account Synchronization Utility can use the following:

XYZ Consulting, Account Synchronization Utility

This allows the customer to track not only which application has sent a request but also who to contact if an issue is discovered.

Sending the Client Name in Stateless Web Services Requests

Every stateless Web service request that requires tracking of the client name must include the <ClientName> element in the SOAP header, with the namespace "urn:crmondemand/ws" (or the namespace might be defined at the root level). This is shown in the following example:

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsse="http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsd="http://
www.w3.org/2001/XMLSchema">

<soap:Header>
	<wsse:Security>
		<wsse:UsernameToken>
				<wsse:Username>USERNAME</wsse:Username>
				<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
				wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
		</wsse:UsernameToken>
	</wsse:Security>
	<ClientName xmlns="urn:crmondemand/ws">Oracle Corporation, Web Services On Demand Guide</ClientName>
</soap:Header>
<soap:Body>
	<AccountQueryPage_Input xmlns="urn:crmondemand/ws/ecbs/account/10/2004">
		<ListOfAccount xmlns="urn:/crmondemand/xml/account/">
				<Account>
   					<AccountName>LIKE 'a1'</AccountName>
   					<Location/>
				</Account>
		</ListOfAccount>
	</AccountQueryPage_Input>
</soap:Body>
</soap:Envelope> 

A stateless request execution might or might not result in an explicit login operation in Oracle CRM On Demand, as follows:

  • If a stateless request execution results in explicit login, then two entries are created in the Web Services Utilization page. Both the entries for this request, that is, the login and operation execution, show the client name specified in the SOAP request.

  • If a stateless request execution does not result in explicit login, then a single entry is created in the Web Services Utilization page, and it has the client name specified in the SOAP request.

Sending the Client Name in Stateful Web Services

A stateful Web service request execution involves:

  1. Stateful login. A one time operation, which covers both login with username and password as well as SSO login.

  2. Stateful request execution. Multiple request operations using the session ID returned by the login operation.

For a stateful request, the following considerations apply:

  • If the stateful request requires tracking of the client name, then it must be specified in the stateful login operation.

  • If a client name is specified in a stateful request execution, then it is ignored.

  • All the stateful requests executed with the session ID returned by the stateful login request are displayed in the Web Services Utilization page with the client name specified in the login operation.

Stateful Login

The login operation can be a HTTP request or a SOAP over HTTP request (R16 compatibility mode).

When the stateful login is a HTTP request, the client name is sent as the HTTP header parameter X-ClientName.

For a login with username and password:

GET http://<servername>:<portno>/Services/Integration?command=login
Http Header:

username: <username>

password: <password>
X-ClientName: Oracle Corporation, Web Services On Demand Guide

For an SSO login:

GET http://<servername>:<portno>/Services/

Integration?command=ssologin&odSsoToken=[Token Value]

X-ClientName: Oracle Corporation, Web Services On Demand Guide

Web Services R16 Compatibility Mode

If Web Services R16 Compatibility Mode is enabled, a stateless request is treated as stateful and returns a session ID. For SOAP requests when R16 Compatibility Mode is enabled:

  • The client name specified in the SOAP Header is used for the login operation and stateful operation execution

  • With the returned session ID, for subsequent requests, if the client name is specified in the SOAP header, it is ignored.

  • As for stateful requests, the client name with which login occurs (that is, the first SOAP request in this case) is displayed in the Web Services Utilization page with all requests for the stateful cycle.

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:wsse="http://docs.oasis-
open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:xsd="http://
www.w3.org/2001/XMLSchema">

<soap:Header>
<wsse:Security>
  <wsse:UsernameToken>
    <wsse:Username>USERNAME</wsse:Username>
    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
  </wsse:UsernameToken>
</wsse:Security>
<ClientName xmlns="urn:crmondemand/ws">Oracle Corporation, Web Services On Demand Guide</ClientName>
</soap:Header>
<soap:Body>
  <AccountQueryPage_Input xmlns="urn:crmondemand/ws/ecbs/account/10/2004">
    <ListOfAccount xmlns="urn:/crmondemand/xml/account/">
      <Account>
        <AccountName>LIKE 'a1'</AccountName>
        <Location/>
      </Account>
    </ListOfAccount>
  </AccountQueryPage_Input>
</soap:Body>
</soap:Envelope> 

About Service Allotments

Service allotments provide insight to customers regarding their usage of Oracle CRM On Demand and also promote equitable use of resources among all customers. Customers who understand their usage of Oracle CRM On Demand can improve user adoption of the application and can also optimize their usage both in the UI and their integrations.

The service allotments for Web service usage include the following:

  • Web Services Operations Allotment. The number of distinct operations performed by a company over a 24 hour window.

  • Web Services Concurrent Request Allotment. The maximum number of stateful and stateless Web service requests that can be processed at any point in time.

For service allotments, usage from all Web service clients, including those developed by Oracle, as well as those developed by customers and third parties is measured.

In the Oracle CRM On Demand UI, company administrators can view service allotment usage through the links under the Admin, Company Administration, Service Allotment Administration section. By selecting the Service Allotment Administration link, administrators can view details of their allotments, and current and remaining usage. By selecting the Service Allotment Usage History link, administrators can view historical usage for all of their service allotments.

The Web Service Utilization page provides additional details regarding Web service usage. This page can be accessed either from the Admin homepage or the Company Administration page through a link under the Service Allotment Administration section. Administrators can use this page to see the operations used for each Web service request issued.

Note: See Oracle CRM On Demand Online Help for more information about service allotment administration.

Determining Current Usage

The Web Services Operations allotment is measured using a 24-hour rolling window. Current usage is displayed in the Oracle CRM On Demand UI or can be retrieved using the Service Allotment Web service (see Service Allotment). Current usage reflects the usage for the current hour plus the previous 23 hours.

For example, at 9:30 A.M., the current usage window extends from 10 A.M on the previous day, until the end of the current hour (10 A.M. today). All operations usage during this period is added together to calculate a company's current usage.

When the current hour elapses, the 24-hour window shifts, releasing any usage from the first hour of the previous window. For example, if a company has used 1000 operations in the current 24-hour window, 100 of which were used during the first hour, when the current hour elapses, the current usage is reduced to 900 operations.

Determining Historical Allotment Usage

Historical allotment usage is displayed in the Oracle CRM On Demand UI in a Related Information applet on the Service Allotment Detail page. You can retrieve this information for analysis or archiving using the following methods:

  • The Allotment Usage Web service (see Allotment Usage)

  • The Export Assistant

  • The List Management Export feature in the Service Allotment Usage History page under Company Administration.

For information about the Export Assistant and the List Management Export feature, see Oracle CRM On Demand Online Help.

When a Service Allotment Is Reached

If the current usage reaches the service allotment value for a company for the Web Services Operations allotment, further Web service requests are not processed until the 24-hour window shifts and capacity is released. To help avoid this situation, your administrator can configure email alerts to inform one or more users that your company is approaching the service allotment value.

See Oracle CRM On Demand Online Help for more information on configuring email alerts for service allotments.

Note: If your company requires additional capacity, contact your Oracle CRM On Demand sales representative for information.

For information about best practices, see Best Practices for Adhering to Web Service Allotments.

Calculation of Allotment Usage

The following topics describe how usage is calculated for each allotment.

Web Services Operations Allotment

The Web service operation count is incremented whenever a Web service request is received and executed. A single Web service SOAP request, when processed, might result in one or more Web service operations being executed. For example, The following table shows the number of operations resulting for different types of request.

Table Examples of Number of Operations for Different Web Services Requests

Type of Request Number of Operations

Nonquery operations

Account insert request containing a single Account record (with no child operations)

1

Contact update request containing 10 Contact records (with no child operations)

10

Account update request containing a single Account record with 3 Account Team records

4

Query operations

Simple query for a set of Accounts

1

Query for a set of Accounts and the associated Contacts for each Account

1 + n, where:

  • 1 operation to retrieve the set of n Accounts matching the specified filter criteria

  • n operations to retrieve the set of Contacts associated with each Account (1 operation for each Account)

Web Services Concurrent Request Allotment

The Web Services Concurrent Request allotment is a measure of the number of Web service requests (including both stateful and stateless requests) being processed by a company concurrently.