The following is an overview of the Contondo CRM and Sales Enablement API. Additional design documents and programming examples available upon request.

1 List of Query Parameters and Constructs

Following is a description of the parameters and their source as required by the module.

1.1 Contondo Customer Identification (CustomerID)

The Contondo CustomerID identifies the customer to the Contondo Cloud Service and should be read from an XML named – Contondo_Fields.XML . This file is part of the installation, and is formatted as follows:

<?xml version="1.0" encoding="UTF-8"?>
 <Root>
 <CustomerID ID="qIdPxm68r8TBBza%2fjiUblw%3d%3d" />
 <MainEntity name="opportunity" ContondoID="1">
 <Fields>
 ...
 </Fields>
 ...
 </MainEntity>
 <MainEntity name="appointment" ContondoID="2">
 ...
 </MainEntity>
 </Root>

Construct: In the URL string, the Contondo Customer ID should be added as a query parameter

CID=CustomerID

1.2 Entity Parameters (EntParams)

Functionality: When an Entity page is loaded or when any field change event is detected (as described in the next section), the following Entity Descriptors should be gathered:

Parameter
Source
Optional
Description
Example
ContondoID
XML
Required
Defined in the file Contondo_Fields.XML  as a MainEntity and described in detail below
1
Logged in User Email Address
CRM
Required
The email address on the user logged in to the CRM and accessing the record
niv@contondo.com
Record GUID
CRM
Required
A CRM GUID uniquely associated with the entity (e.g. opportunity GUID)
{97054079-BCE8-E411-80E0-000D3A300443}|
Record Name
CRM
Required
Name of the record (e.g. Opportunity Name)
T-Com Berlin
Record Owner email
CRM
Optional
Email of the owner of the record
owner@contondo.com
Team members emails
CRM
Optional
Emails of other team members
Aviv@Contondo.com;

niv@virtual.com
Record status
CRM
Optional
Status of the record (if available)
Open
Record stage
CRM
Optional
Stage of the record (if available)
In Progress
Record budget
CRM
Optional
Pipeline budget figure (if available)
1200000
Record Currency
CRM
Optional
Currency of the budget number
USD???

Construct: The format of those parameters in the URL string shall be as follow:

EntParams=ContondoID|LoggedInUserEmailAddress|RecordID|RecordName|OwnerEmail|TeamMembersEmail|RecordStatus|RecordStage|RecordBudget|RecordCurrency

For the example above:

EntParams=1|niv@contondo.com|{97054079-BCE8-E411-80E0-000D3A300443}|MyOppName|owner@myCompany.com|seth@contondo.com;marsha@contondo.co.il|Open|In Progress|1200000|USD

Contondo Entity ID: defined in the Contondo_Fields.XML according to the name of the entity that is currently used. In the following example XML, the Contondo Entity ID for Opportunity entity is Contondo Entity ID = 1.

<?xml version="1.0" encoding="UTF-8"?>
 <Root>
 <CustomerID ID="qIdPxm68r8TBBza%2fjiUblw%3d%3d" />
 <MainEntity name="opportunity" ContondoID="1">
 <Fields>
 ...
 </Fields>
 ...
 </MainEntity>
 <MainEntity name="appointment" ContondoID="2">
 ...
 </MainEntity>
 </Root>

1.3 Entity Fields

The list of fields that should be analyzed for the tags (keywords) per each entity type is defined in the Contondo_Fields.XML file, with the following format:

<?xml version="1.0" encoding="UTF-8"?>
 <Root>
 <CustomerID ID="qIdPxm68r8TBBza%2fjiUblw%3d%3d" />
 <MainEntity name="opportunity" ContondoID="1">
     <Fields>
       <Field name="name" />
       <Field name="statuscode" />
       ...
     </Fields>
     <LinkedEntities>
       <entity name="annotation">
         <filter>
           <condition attribute="objectid" operator="eq" value="@1@" />
         </filter>
         <Fields>
           <attribute name="documentbody" />
           <attribute name="notetext" />
           ...
         </Fields>
       </entity>
       <entity name="competitor">
         ...
       </entity>
       ...
     </LinkedEntities>
   </MainEntity>
   <MainEntity name="appointment" ContondoID="2">
     <Fields>
       <Field name="requiredattendees" />
       <Field name="new_persona" />
       ...
     </Fields>
     <LinkedEntities />
   </MainEntity>
 </Root>

In the above example:

Entity
ContondoID
Fields
Linked Entities
Linked Entity Fields
opportunity
1
name

status Code
annotation

competitor
documentbody

notetext
appointment
2
requiredattendees

new_persona


Please note:

  1. Some of the fields in the XML file are in other entities (like Competitors)
  2. Some entities may have attachments that should be scanned as well (like PDF, Word documents etc.)

1.4 Retrieving the Updated Tag (Keyword) Lists

Functionality: On every load of each entity (or at least every start of session) the module should call the following web-service with the Contondo Customer ID as a parameter (CustomerID). Please note, that calling this web-service is a cross domain request, and so it must use a CORS syntax in order to satisfy the security requirements of current browsers.

http://ws.contondo.com/crm.asmx/GetTagManagerXML

This web-service will return an XML string containing a list of tags and their IDs (see description below). The format of the XML string is as follows:

<Root>
 <ServerUrl Value="https://pre.contondo.com/ExternalSrc.aspx" />
 <RefreshParameter Value="15000" />
 <parameters>
 <Contondo_TMs>
 <TM ID="1">KeyWord11</TM>
 <TM ID="2">KeyWord12</TM>
 ...
 </Contondo_TMs>
 <Contondo_MPs>
 <MP ID ="1">KeyWord21</MP>
 <MP ID ="2">KeyWord22</MP>
 ...
 </Contondo_MPs>
 <Contondo_CMs>
 <CM ID="1">KeyWord31</CM>
 <CM ID="2">KeyWord32</CM>
 ...
 </Contondo_CMs>
 <Contondo_CPs>
 <CP ID="1">KeyWord41</CP>
 ...
 </Contondo_CPs>
 <Contondo_TYs>
 <TY ID="1">KeyWord51</TY>
 ...
 </Contondo_TYs>
 <Contondo_FTs>
 <FT ID="1">KeyWord61</FT>
 ...
 </Contondo_FTs>
 </parameters>
 </Root>

There are 6 tag types (TM, MP, CM, CP, TY, and FT). For example, for tag type TM there are two keywords: KeyWord11 and KeyWord12.

<Contondo_TMs>
 <TM ID="1">KeyWord11</TM>
 <TM ID="2">KeyWord12</TM>
 </Contondo_TMs>

1.5 Detecting and Encoding the Data in the Entity Record

Functionality: Once the tags (keywords) are updated, the module should compare the content of the Entity Fields (see section ‎2.2.3) with the field and construct a match results list. The matches should ignore case (uppercase, lowercase, or title case).

Construct: For any tag (keyword) that is found (at least once), the ID of that tag (keyword) should be concatenated as the string

TagType1: ID1, ID2; TagType2: ID3, ID4

For example, in the following text string:

Sdfsdf dfsdf sdf KeyWord11 gdfgdfg KeyWord21 sdasdasda KeyWord22 asdasd

The result of the scan should be:

TM:1;MP:1,2

(since KeyWord1 has the Tag Type TM and Tag ID of 1, and KeyWord21 and KeyWord22 have the Tag Type MP  and Keyword IDs of 1 and 2)

1.6 URL String Construction and Refreshing of the iFrame

At this point in the flow we should have the following data available for the module:

Item
Description
Section
Contondo Customer ID
Identifier of the Contondo Customer
‎2.2.1
Entity Parameters
List of metadata for the record (e.g. opportunity descriptors)
‎2.2.2
Entity Fields
List of fields that should be analyzed for keyword matches against tags
‎2.2.3
Tags (Keywords)
List of keywords
‎2.2.1
Matches Encoded String
String which encapsulates all keywords found in the Entity Fields
‎2.3

Construct: The result URL should look like this:

http(s)://ServerURL/ExternalSrc.aspx?CID=CustomerID&EntParams=List of Entity Parameters&Params=List of Tags Found

Where:

  • ServerURL is the URL of the Contondo Cloud Service
  • Contondo Customer ID is the Contondo Customer ID as described in 2.2.1.
  • EntParams is the list of entity parameters as described in section ‎2.2.2.
  • List of Tags Found is the list of IDs that match the tags that were found as described in section 2.3.

2 List of Available Servers

URL
HTTP/HTTPS
Description
http://pre.contondo.com
HTTP
Test server (should be used for testing the module)
https://beta.contondo.com
HTTPS
Production server (should be used for final tests for TLS compatibility)

 

3 Working Example

For example, the constructed string below:

CID=qIdPxm68r8TBBza%2fjiUblw%3d%3d&EntParams=1|niv@virtual.com;|{97054079-BCE8-E411-80E0-000D3A300443}|T-Com Berlin|Aviv@Contondo.com|Aviv@Contondo.com;niv@virtual.com;|Open|In Progress|1200000&Params=;MP: 262;CM: 159;TY: 155;FT: 202

Should be concatenated to the ServerUrl parameters of the XML string, into one URL string (load this example URL into a browser to see what a typical response iFrame looks like):

https://beta.contondo.com/ExternalSrc.aspx?CID=qIdPxm68r8TBBza%2fjiUblw%3d%3d&EntParams=1|niv@virtual.com;|{97054079-BCE8-E411-80E0-000D3A300443}|T-Com Berlin|Aviv@Contondo.com|Aviv@Contondo.com;niv@virtual.com;|Open|In Progress|1200000&Params=;MP: 262;CM: 159;TY: 155;FT: 202

4 Error handling

On any error in the process, a query string named: ERR should be passed with the following parameters:

  • Contondo customer ID
  • Current User internal email
  • Opportunity ID
  • Error Description