Professional Documents
Culture Documents
SEPTEMBER 2007
SCRIBE SOFTWARE CORPORATION THREE BEDFORD FARMS DRIVEBEDFORD, NH 03110 USAT 1.603.622.5109F 1.603.622.3862
Scribe ERP Integration for Salesforce
TECHNICAL BRIEF
Over the past 10 years and across thousands of customers in the volume CRM market, Scribe
has developed an approach to integration that solves the seemingly unsolvable dilemma posed
by front to back office integration; how to deliver a highly functional, real-time integration
solution that can be quickly customized to meet the needs of each and every customer. This
paper will discuss the challenges posed by alternative integration approaches and present the
Scribe template model, and its inherent advantages, in detail.
Traditional Alternatives
In the past, customers and partners have been forced to compromise with two inadequate
approaches to their front office to back office integration needs:
Packaged, point solutions – This is where either the application vendor or a niche
software developer creates an integration solution between one front office product and
one back office product. On the surface, these solutions appear to be a good option
since they have compelling functionality “out of the box.” The challenges typically arise
at implementation when the customer requires customizations to the integration
solution to meet their unique business requirements. “Out of the box” with these
solutions typically means “black box.” To open up that “black box” requires extensive
and expensive consulting services that typically can only be provided by a small, finite
group of individuals. The customer along with their implementation partner is not only
locked in up front, but is locked in to high costs down the road when they change their
processes or upgrade their systems.
This is where Scribe Insight platform and the Scribe ERP integration templates provide an
advantage. Scribe’s unique template model provides “out of the box” functionality, built over
its industry leading integration platform that can be quickly implemented within a customer’s
specific ERP environment. The templates can be quickly extended and customized utilizing the
GUI-based mapping and development environment to deliver a solution that meets the unique
needs of each and every customer, within days, regardless of their back office system.
With Scribe’s component architecture, when a new version of Salesforce is released, your
existing integration continues to function with no disruption. If new field mappings or business
rules need to be applied to take advantage of new capabilities, you can quickly make them in
In addition, since the Scribe Insight product represents the general integration platform for
hundreds of top ERP and Salesforce implementation partners, there is no shortage of resources
to help customers customize the Solution for their business. Scribe’s on-line training curriculum
and Web Community containing documented best practices resources, enable customers and
partners to take full control of their implementations, now and in the future.
Templates
Developer/Designer Administrator
` `
Salesforce Adapter
AppExchange
Entry –
ERP Application
Customizations
to Salesforce
Salesforce
The Scribe technology platform is represented by the blue text in the diagram. This includes the
Scribe Insight product with its two graphical components, the Workbench and the Console
along with the specific application Adapters.
Scribe Adapters – These components enable the Scribe Insight product to easily read data
from and write data to a particular business application. Adapters give each application a
consistent look within the Scribe Workbench, shielding the user from having to deal with
the particular processing rules of the application. For example, a Scribe Adapter would
typically take care of things like primary key generation and standard default values that will
not change from implementation to implementation. The specific data mappings and
processing rules of the integration that may change are part of the template.
Scribe Workbench - The Workbench is the design environment where all the business rules
and data mappings are established, at both the object and field level. These mappings and
business rules are then saved as metadata in a portable template file that drives the
integration process at run time.
ERP Integration to Salesforce Template - The elements created and set up by the
Workbench and Console represent the ERP Integration to Salesforce Template. Scribe
provides the Template as a highly functional “starting point” that then can be extended and
customized via the Workbench and Console to meet each customer’s needs. Scribe
regularly updates its Templates and posts them to its Web community for download, at no
additional cost, for its customers and partners.
Salesforce Sales Order Module - AppExchange Entry – This item represents the
customizations made to Salesforce to support the information and process requirements of
an integrated back office system. These customizations include the creation of custom
objects, custom tabs, S-Controls to support Salesforce-bound processes, and a dashboard.
To support their integration needs, a customer purchases the Scribe Solution, they receive the
Scribe Insight product (that includes the Connectivity Adapter required to support their ERP
application) along with the Adapter for Salesforce. They also purchase first year maintenance
and support for the aforementioned platform products. In addition, they receive full access at
no charge to the Scribe Web Community where they can download the latest Scribe templates
that they need. Online training, delivered via the Web Community is also available for purchase.
The customer or partner simply imports the AppExchange customizations, installs the Scribe
Insight product and required adapters, and installs the appropriate Scribe template(s). They can
immediately begin configuring the Template to meet their particular needs.
Customers receive another significant benefit from this approach. Since Scribe templates are
built on the full Scribe Insight migration and integration platform, customers can use the
product to integrate Salesforce or their ERP application with other in-house systems, import
leads from their Web site in real-time, load marketing lists, and migrate data from previous
customer systems. Scribe provides many templates for download on the Web Community at no
additional charge including ACT!, Goldmine, and Quickbooks Migrations, automatic update
from the donotcall.gov Web service, the Web Leads to Salesforce template, the eCommerce to
ERP template, and more. With Scribe, one investment supports all of your CRM and ERP data
integration needs.
The Scribe Salesforce Integration for ERP is comprised of Scribe Insight, the Scribe Adapter for
Salesforce, and the Scribe ERP Integration Template for Salesforce (herinafter referred to as the
“Template,” which is available for download on the Scribe Web Community. The following
diagram depicts the functionality of the Template at a high-level:
Customer, Address
New/Update (ERP primary to SF New/Update
billing only)
The processes depicted as dashed lines are not available in the current version of the
Template and are planned in a future update. Customers wishing to support a two-way
integration with their ERP application can add that functionality using the Scribe Insight
configurable integration platform. Typically each of these processes will add 1 to 3 days of
effort to the project. For a rich and highly functional example of these processes, customers can
reference the Scribe Integration Template for Great Plains that is available via the Scribe Web
Community at no charge.
Customer and Address– This data can be created or modified in ERP and the additions or
changes are synchronized with the other application. Scribe’s match component provides
fuzzy account matching to avoid the creation of duplicate accounts and to facilitate an initial
synchronization of existing ERP and Salesforce environments.
Master Product Schedule and Price List – This data is mastered in ERP and replicated to
Salesforce to support the order process needs in Salesforce.
Orders – New orders are integrated in real-time into the appropriate account record within
Salesforce and set as read only. As changes occur to the order records in ERP, they are
updated in real-time in Salesforce.
Invoices – Invoices that are created in ERP are integrated in real-time into the appropriate
account record in Salesforce and set as read only. The order record that relates to the
invoice is also updated to reflect the relationship. As changes occur in the invoice records in
ERP, they are updated in real-time in Salesforce.
For more detailed information regarding the integration, please see the detailed object and
process mappings outlined in Appendix A.
Primary Objectives
The primary objectives of the Template are to:
• Deliver efficiency for the sales and accounting teams by minimizing redundant data entry
and processes.
• Provide the Salesforce user with a complete order and invoice history for each customer
including product line item details.
• Provide for the creation of reports that key off of the relationship between products
ordered and/or invoiced and customers. Customers can then report on product
purchase trends for all customers or groups of customers, such as region/territory and
rep.
• Provide business activity monitors that notify key business users of events related to their
customers purchase of the company’s products (i.e. order over certain $, order shipping
late, etc.)
The following flow chart illustrates the process that the Scribe Template will use to replicate data
from the back office system into Salesforce. The scope of this process flow has been minimized
to only include those elements necessary to achieve the primary objectives for the Template. At
its core, the key functionality is the population of invoices and orders by customer in Salesforce,
including the line item detail that supports product-based reporting in Salesforce.
Start
Does Order or
Does Product Does Account
Invoice exist in
exist in CRM? exist in CRM?
Yes CRM?
No Yes
No
No
Update Account
Insert Order/ Delete all detail
Yes Insert Product and (BO owned fields Insert Account w/
Invoice Header items for Order/
Price Book Entry only) primary address
record Invoice
Insert Order/
Invoice detail
items
Stop
Connectivity Adapters are included in the core Insight Platform. They are designed to provide
a wide variety of integration options to support connectivity to a varied number of ERP
applications. These Connectivity Adapters enable Scribe Insight to communicate with other ERP
applications in the following ways:
¾ Direct communication with database tables, views, and stored procedures through
ODBC 3.0 or higher and natively to SQL Server. Scribe leverages all of the filtering and
querying capability of these databases when employing this approach.
¾ The exchange of flat files or XML documents via a directory or FTP/HTTP location.
¾ The asynchronous exchange of XML messages via an industry standard message queue,
email, or integration broker.
The Template utilizes the XML/Messaging interface approach to publish changes out of the
Scribe Sample ERP application. Samples and examples for the other approaches are available for
review on the Scribe Web Community.
Account
All active customers in the ERP system are replicated to Salesforce. If a match is found in
Salesforce, a cross reference is established between the ERP and Salesforce primary keys, and
some of the Salesforce fields are updated. Otherwise, a new account is added to Salesforce and
the cross reference is created. Note that if a match is found, only the fields “owned” by ERP are
updated within Salesforce. This is due to the nature of one-way integrations. If all fields updates
were included, then changes made by a user in the Salesforce application would be overwritten
the next time that record is updated from ERP. Since the integration is one-way, the changes
never make it down to ERP to get preserved. The customer can determine which fields should
be “owned” by ERP, but likely candidates are Account Number (from ERP), Credit Hold, Credit
Limit, Payment Terms and default Price List.
Customization option: The Template can be modified to reject the record if the account is not
found in Salesforce. The assumption in this case is that all customers should already be in
Salesforce and the integration should not add a duplicate.
The primary address from ERP is replicated to Salesforce when the integration adds a new
account in Salesforce. Contact and alternate address records are not replicated. The bill to/ship
to contact names and addresses are included in the order and invoice data that is replicated.
Product
Products and product prices are replicated to Salesforce from the ERP system. Both new
products added and changes to the existing product catalog are replicated. Price book
categories are manually maintained between the two systems. One of the implementation steps
is to manually add price book names in Salesforce. The Template requires that price books
match exactly between ERP and Salesforce. If they do not, a cross reference will need to be
created and the integration will need to be modified to translate the values.
SalesOrder
Order header and detail for all active accounts are replicated to Salesforce from the ERP system.
Both new orders added and changes to existing orders are replicated. The seek step on the
order header object in Salesforce is executed based on the entries in the order cross reference
table. If the order exists, the order header will be updated, all existing order detail items related
The initial migration of order history can be filtered by date as needed. Orders created by the
integration are not linked to existing opportunities.
Invoice
New posted invoices (header and detail) for all active accounts are replicated to Salesforce.
Invoices do not typically change in ERP after they are posted, but changes regarding returned
items will cause updates to invoices in Salesforce. A foreign key relationship between the
invoice header and the account, as determined by a lookup in the key cross reference table for
accounts will be established. If the account can not be found in Salesforce, the transaction will
error and entries into exception tables for the invoice header and detail items will be added.
Invoices are read only in Salesforce. The initial migration of invoice history can be filtered by
date as needed.
The following list of out-of-the-box monitors and views are included with the Template. All
monitors and views that are keyed off product line item detail will be based on Invoices versus
Orders, since Invoices should represent a more complete and accurate measure of products
purchased for each customer. Additional monitors and views can be created by the partner at
implementation time based on customer requirements.
General
• Scribe Adapter for Salesforce is used to connect to Salesforce for data replication and
monitors and views
• KeyCrossReference table in the Scribe Internal database is used to maintain the links
between the BO and Salesforce
• Company matching on StripCompany Suffix (account name) and first 3 digits of postal
code
• The template will default the object owner to the user login utilized by the Scribe
process. User mapping will be left to implementation.
This section lists the field mappings from Scribe ERP to Salesforce organized by the Salesforce
target object.
Account Object
Product2 Object
PriceBookEntry Object
SCRB_SalesOrderLineItem_c Object
This section details the Salesforce Sales Order Module designed to support the integration
requirements with ERP systems. The Sales Order Module represents a set of Salesforce
customizations, S-Controls, and a Dashboard that are easily installed via the AppExchange.
The remainder of this section describes the customizations made to Salesforce in further detail.
Two custom objects have been added to Salesforce (SalesOrder & SalesOrderLineItem). These
objects are used to contain/present the order & invoice history from the ERP system. See
Appendix C for a detailed field list.
One set of header/detail objects can have a type field to indicate: order, invoice
or quote (quote integration is not included in the default template). The ability to relate entries
within the same order header object is included. For example, invoices can be related to the
corresponding order for easy reference. The use of one object simplifies the deployment and
customization of the integration since changes to the behavior of objects only need to be made
once.
The standard Opportunity and OpportunityLineItem objects are leveraged to provide most of the
“order entry” user interface and special business logic. This enables the solution to take
advantage of the price book within Salesforce, which is only available to the
OpportunityLineItem object within Salesforce. The majority of the data required to create an
order is initially entered as an Opportunity with associated Products (line items). Standard
Opportunity behavior provides an approximate price (without taxes, freight, etc.) using the
appropriate/selected pricebook.
Once the user is ready to convert an opportunity to an order, they can click the Create and
Submit Order link contained in the Opportunity screen.
Regardless of how the SalesOrder header and SalesOrderLineItem records are accessed, the data
in these objects will always be a read-only view of the data “mastered” in the ERP system.
Orders created from an Opportunity round trip to ERP, get re-priced with taxes, shipping, etc.,
and then show as read-only orders from these tabs. There is one exception to the read-only rule
for orders. A custom link is shown on the SalesOrder page to enable a user to cancel an order.
This link displays an s-control page with a confirmation button. This order cancellation is picked
up and applied to the ERP system via an integration process.
SCRB_SalesOrder
s Id char(18) Y
o AccountId char(18) - lookup Y
o OpportunityId char(18) - lookup N
o OwnerId char(18) - lookup N
d Type char(10) - picklist Y Order Order, Invoice, Quote
u DocumentNumber char(15) - externalid N ABC123 not req'd, can be assigned by GP
d DocumentDate date N today( ) 1/1/2006
e OriginatingDocument char(15) N ABC456
o/u Name char(80) Y New monitors the "record name" field
u Description long varchar(32000) N
o Pricebook char(40) N Retail
u PaymentTerms char(12) - picklist N Net 30, Net 60 show picklist, match to GP
u ShippingMethod char(12) - picklist N UPS, FedEx, etc. show picklist, match to GP
u RequestedShipmentOn date N null 1/5/2006 calendar pop-up
e Amount decimal - currency N 1,500.00
e LineItemAmount decimal - currency N 1,450.00
u DiscountAmount decimal - currency N 10.00 discount for header
e TotalDiscountAmount decimal - currency N 30.00 total of lines + header discounts
u FreightAmount decimal - currency N 50.00
e Tax decimal - currency N 10.00
e TrackingNumber char(30) N 34A34BD3322
e StatusCode char(12) - picklist N null New, Submitted, Billed business status, null in mid transaction
Canceled, Invoiced, Paid (header, lines, update header with "New")
e Failed boolean N null 1 if failing adding to ERP, 0 if submitted/shared
e SubmitMessage char(255) N Error creating in ERP
a BillingStreet char(255) N
a BillingCity char(40) N
a BillingState char(20) N
a BillingPostalCode char(20) N
a BillingCountry char(40) N
a BillingPhone char(40) - phone N
a BillingFax char(40) - phone N
u ShippingLocation char(15) N warehouse
u ShippingContact char(40) N Bill Jones
a/u ShippingStreet char(255) N
a/u ShippingCity char(40) N
a/u ShippingState char(20) N
a/u ShippingPostalCode char(20) N
a/u ShippingCountry char(40) N
a/u ShippingPhone char(40) - phone N
a/u ShippingFax char(40) - phone N
s CreatedDate datetime Y
s CreatedById char(18) Y
s LastModifiedDate datetime Y
s LastModifiedById char(18) Y
s SystemModstamp datetime Y
SCRB_SalesOrderLineItem
s Id char(18) Y
o SalesOrderId char(18) - master Y
o SortOrder integer - number Y 1, 2, 3
o ProductId char(18) - lookup Y
o Description char(255) N the "record name" field
o Quantity float - number N 5.00
e QuantityShipped float - number N 3.00
e QuantityCancelled float - number N 2.00
o ListPrice decimal - currency N list price for this pricebook
o SalesPrice decimal - currency N unit price on this order (list - unit = item discount)
e Tax decimal - currency N
e TotalPrice decimal - currency N unit * qty + tax
u RequestedShipmentOn date N
u ShippingMethod char(12) - picklist N UPS, FedEx, etc. show picklist, match to GP
s CreatedDate datetime Y
s CreatedById char(18) Y
s LastModifiedDate datetime Y
s LastModifiedById char(18) Y
s SystemModstamp datetime Y
The Record Name appears in page layouts, key lists, related lists, lookups, and search results.
For example, the Record Name for Account is "Account Name" and for Case it is "Case Number".
Note that the Record Name field is always called "Name" when referenced via the API.
The Record Name field can be of type Text or Auto-Number (like an order #, case #, etc.).
It is always char(80) and is not updatable if it is an auto-number.
It must be included and come first on the related list view.
Source Key
s = standard/generated field
o = copied from Opportunity
u = entered by user
a = copied from Account
e = only from ERP system
d = default/constant
Tel: 1.603.622.5109
Fax: 1.603.622.3862
Email: info@scribesoftware.com
www.scribesoftware.com