Synchronizing Customer Data, Part 1: Discovery

One of the most common requests we receive from our clients and partners is the need to synchronize customer information across the enterprise. Like any integration, the first step is planning.

We call this phase of the project, discovery, and it’s where we learn about the business drivers, systems, and desired workflow to keep everything all sync’d up.

Understanding Business Drivers

Every organization is different, especially when it comes to its customers. For this article we’re going to assume the business is focused on professional services and its customer journey is relatively a simple one.

We now can start to learn more about the customer, how they are created and why it’s important to have this information synchronized across multiple systems.

By conducting stakeholder interviews with key members of each group involved we can start to define our systems and inner department processes. The following are some key interview quotes from these stakeholders.

We enter all potential customers into the CRM based in SharePoint. During the sales process we create proposals, statements of work and other contracts, storing them in SharePoint Document Libraries. Once we close a sale, their status is updated from lead to active.

We often need to locate content related to a customer but often lose track of items that are buried in folders in our document libraries.

Mark Matkowski, VP of Sales

Here we have defined a system (SharePoint / intranet) and the process to which a customer is first entered into a data store. We can also note a pain point related to document findability. Sounds like we need some better information architecture in SharePoint to help define our content types and tag content accordingly.

My team lives and breathes our project management tool. It would be nice if once a new client is closed, they are all setup in that system.

We also store documents and other project material on the intranet so it would be great to have some level of automation there to set that environment up for us, that way we can hit the ground running with the project.

Brenda Bates, Director of Operations

Right out of the gate here with another couple systems defined and some ways we can help streamline their project onboarding process.

Once projects are completed and ready to invoice, my team and I are often contacting the sales or project management teams for information on the client. This slows us down quite a bit when our accounting system is quite capable and allows us to get invoices out the door quickly if we’re not spending all day tracking down biller information.

Carlos Caballero, Comptroller

Looks we have a new system to record as well as some pain points that we should be able to remedy.

With interviews knocked out, let’s move on to organizing the architecture.

Defining Information Architecture

During the interviews we identified several systems and some high-level use cases that will be used in this solution. Let’s identify each system then start to understand what each customer data model looks like. We will also learn some of the integration capabilities of each system’s API.

System and API Capabilities

CRM (SharePoint)

This is a custom system that consists of a set SharePoint lists. For this article we will be using the Customers list.

Since this is SharePoint, and it has a well-documented API, we know get can manipulate items in this list easily with a variety of workflow tools.

Customer List Schema
ID, integer (auto)
Title, single line of text
StreetAddress1, single line of text
StreetAddress2, single line of text
City, single line of text
State, choice
Zip, single line of text
EmailPrimary, single line of text
Created, datetime
CreatedBy, user
Modified, datetime
ModifiedBy, user
Phone, single line of text
CustomerStatus, choice

Project Management System (Teamwork)

For this article, we’re using Teamwork as the project management tool. We use it here at Workplace and absolutely love the user experience and collaboration it provides our team and clients.

API Endpoints
  • Get Company
  • Get Companies
  • Update Company
  • Create Company



Teamwork Company Model (some properties hidden)
{
  "company": {
    "addressOne": "string",
    "addressTwo": "string",
    "cid": "string",
    "city": "string",
    "companyNameUrl": "string",
    "countryCode": "string",
    "createdAt": "string",
    "emailOne": "string",
    "emailThree": "string",
    "emailTwo": "string",
    "id": 0,
    "isOwner": true,
    "logoUrl": "string",
    "name": "string",
    "phone": "string",
    "state": "string",
    "updatedAt": "string",
    "website": "string",
    "zip": "string"
  }
}

Accounting System (QuickBooks)

For the accounting system we’re going with a leader here as well, Quickbooks. It has an extensive API and relatively simple to integrate with a variety of systems.

API Endpoints

  • CustomerQuery
  • CustomerAdd
  • CustomerMod
QuickBooks Customer Model (some properties hidden)
{
  "Customer": {
    "PrimaryEmailAddr": {
      "Address": "Surf@Intuit.com"
    }, 
 
    "domain": "QBO", 
    "GivenName": "Bill", 
    "DisplayName": "Bill's Windsurf Shop", 
    "FullyQualifiedName": "Bill's Windsurf Shop", 
    "CompanyName": "Bill's Windsurf Shop", 
    "FamilyName": "Lucchini", 

    "PrimaryPhone": {
      "FreeFormNumber": "(415) 444-6538"
    }, 
    "Active": true, 
    "Job": false, 
    "BalanceWithJobs": 85.0, 
    "BillAddr": {
      "City": "Half Moon Bay", 
      "Line1": "12 Ocean Dr.", 
      "PostalCode": "94213", 
      "Lat": "37.4307072", 
      "Long": "-122.4295234", 
      "CountrySubDivisionCode": "CA", 
      "Id": "3"
    }, 
    "PreferredDeliveryMethod": "Print", 
    "Taxable": false, 
    "PrintOnCheckName": "Bill's Windsurf Shop", 
    "Balance": 85.0, 
    "Id": "2", 
    "MetaData": {
      "CreateTime": "2014-09-11T16:49:28-07:00", 
      "LastUpdatedTime": "2014-09-18T12:56:01-07:00"
    }
  }
}

Wrapping Up Discovery

Although not an exhaustive set of features we have enough for this example article. To reiterate, we have interviewed key stakeholders to understand their basic requirements and investigated the systems involved to document their data structures and integration capabilities.

In the next article “Synchronizing Customer Data, Part 2: Design” we will start to design the process to which we create and maintain Customer data across these various systems and users.

Matthew Koon

Matt drives solution architecture and sales at Workplace, making sure that our expertise matches the needs of our clients and that we continue to offer cutting edge solutions to everyday needs in the enterprise.

Published
Categorized as Technical

By Matthew Koon

Matt drives solution architecture and sales at Workplace, making sure that our expertise matches the needs of our clients and that we continue to offer cutting edge solutions to everyday needs in the enterprise.