Unified entity view across distributed systems

The system addresses the challenges of data consolidation, provenance, and integration in traditional CRM systems by using a Consumer Resolution Engine and a point-and-click interface to convert and unify customer data, enhancing data integrity and compliance.

JP7670427B2Active Publication Date: 2025-04-30SALESFORCE INC
View PDF 4 Cites 0 Cited by

Patent Information

Application Number
JP2024061214
Authority / Receiving Office
JP · JP
Patent Type
Patents
Current Assignee / Owner
Priority Date
2019-01-31
Filing Date
2024-04-05
Publication Date
2025-04-30
Estimated Expiration
2039-09-24

Smart Images

  • Figure 0007670427000001
    Figure 0007670427000001
  • Figure 0007670427000002
    Figure 0007670427000002
  • Figure 0007670427000003
    Figure 0007670427000003
Patent Text Reader

Abstract

To provide methods, systems and computer program products for a customer relationship management (CRM) system.SOLUTION: Embodiments presented herein provide: exchange of data between disparate, distributed systems; subscription to and / or publication of a customer data change event; creation of master records for consumers using static and streaming sources; and data provenance, auditing capabilities and queries across multiple tenants and third party systems. Embodiments provide a single view of a customer in a distributed system environment.SELECTED DRAWING: Figure 1A
Need to check novelty before this filing date? Find Prior Art

Description

[Background technology]

[0001] Companies have access to more data than ever before about the consumers of their products and services. The purpose of a CRM system is to efficiently manage this data and make it easily accessible and shareable across all service levels in the supply chain. However, traditional databases or CRM systems cannot consolidate customer data from different isolated sources and create a master record about the consumer. Traditional systems also have difficulty determining where to get data from in a multi-tenant system to run queries and read or write data. Another problem with traditional systems is data provenance, i.e., determining one or more sources of data in a record. Furthermore, traditional systems have struggled to provide an audit log for data. Data provenance and audit logs are essential to comply with privacy laws. Traditional systems also face the problem of consolidating data from different time scales, accessing data from different sources, comparing data, and reconciling it. Summary of the Invention

[0002] Typical commerce / marketing systems require administrators to write code to transform high volume, low quality consumer data into low volume, high quality data. This process can be time consuming, expensive, and error prone. When a customer leaves an item in an online checkout cart, i.e., abandons the cart, administrators must write specific code to parse large amounts of data to track such events and generate follow-up emails to the consumer. Furthermore, since data comes from different sources with their own application programming interfaces (APIs), administrators would traditionally have to learn each system's API and program queries to interface with the different systems to retrieve data. The embodiments presented herein, among others, provide solutions to at least these problems. [Brief description of the drawings]

[0003] The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate the present embodiments and, together with the following description, further serve to explain the principles of the present embodiments and to enable one skilled in the art to make and use the embodiments.

[0004] [Figure 1A] FIG. 1 illustrates an exemplary operating environment according to one embodiment of the present disclosure. [Figure 1B] FIG. 1 illustrates an exemplary operating environment according to one embodiment of the present disclosure.

[0005] [Diagram 2] FIG. 1 illustrates an integrated enterprise commerce architecture according to one embodiment of the present disclosure.

[0006] [Diagram 3] FIG. 2 illustrates a consumer resolution engine (CRE) according to one embodiment of the present disclosure.

[0007] [Figure 4] FIG. 1 illustrates an example computer system that can be used to implement various embodiments presented herein.

[0008] [Diagram 5] FIG. 2 illustrates an exemplary user interface according to one embodiment of the present disclosure. [Figure 6] FIG. 2 illustrates an exemplary user interface according to one embodiment of the present disclosure.

[0009] [Figure 7] FIG. 2 illustrates an exemplary user interface according to one embodiment of the present disclosure.

[0010] Features and advantages of the present embodiments will become more apparent from the detailed description set forth below when considered in conjunction with the drawings, in which like reference numbers identify corresponding elements throughout. In the drawings, like reference numbers generally indicate identical, functionally similar, and / or structurally similar elements. The drawing in which an element first appears is indicated by the leftmost digit(s) of the corresponding reference number. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0011] Example Operating Environment 1A illustrates a block diagram of an environment 110 in which an on-demand database service may be used. The environment 110 may include a customer system 112, a network 114, a system 116, a processor system 117, an application platform 118, a network interface 120, a tenant data storage 122, a system data storage 124, a program code 126, and a process space 128. In other embodiments, the environment 110 may not have all of the listed components and / or may have other components instead of or in addition to the components listed above. In this disclosure, a consumer may be referred to synonymously as a customer or a patron.

[0012] Environment 110 is the environment in which the on-demand database service resides. Customer system 112 may be any machine or system used by a customer to access the database customer system. For example, any of customer systems 112 may be a handheld computing device, a mobile phone, a laptop computer, a workstation, and / or a network of computing devices. As illustrated in FIG. 1A (and in more detail in FIG. 1B), customer system 112 may interact with the on-demand database service, which is system 116, via network 114.

[0013] An on-demand database service, such as system 116, is a database system made available to external customers. The external customer does not necessarily have to be involved in building and / or maintaining the database system, but instead, the database system may be available for use when the external customer needs the database system (e.g., upon customer request). Some on-demand database services may store information from one or more tenants stored in tables of a common database image to form a multi-tenant database system (MTS). Thus, "on-demand database service 116" and "system 116" are used interchangeably herein. A database image may include one or more database objects. A relational database management system (RDMS) or equivalent may perform the storage and retrieval of information in the database objects. An application platform 118 may be a framework that enables applications of system 116 to run on hardware and / or software, such as an operating system. In one embodiment, on-demand database service 116 may include an application platform 118. The application platform 118 can enable the creation, management, and execution of one or more applications developed by a provider of on-demand database services, a customer accessing the on-demand database services via customer system 112, or a third-party application developer accessing the on-demand database services via customer system 112.

[0014] Users of the customer systems 112 may have different capacities, and the capacity of a particular customer system 112 may be determined entirely by the permissions (permission level) for the current user. For example, when a salesperson is using a particular customer system 112 to interact with the system 116, that customer system 112 has the capacity assigned to that salesperson. However, while an administrator is using that customer system 112 to interact with the system 116, that customer system 112 has the capacity assigned to that administrator. In a system with a hierarchical role model, a user at one permission level may have access to applications, data, and database information accessible by a user at a lower permission level, but not to certain applications, database information, and data accessible by a user at a higher permission level. Thus, different users have different capacities for accessing and modifying application and database information depending on the user's security or permission level.

[0015] Network 114 is any network or combination of networks of devices that communicate with one another. For example, network 114 may be any one or any combination of a LAN (local area network), a WAN (wide area network), a telephone network, a wireless network, a point-to-point network, a star network, a token ring network, a hub network, or other suitable configurations. Because the most common type of computer network in use today is a TCP / IP (Transfer Control Protocol and Internet Protocol) network, such as the global internetwork of networks often referred to as the "Internet" with a capital "I," this network will be used in many of the examples herein. However, it should be understood that while TCP / IP is a frequently implemented protocol, the networks that one or more implementations may use are not so limited.

[0016] The customer system 112 may communicate with the system 116 using TCP / IP, and at higher network levels, other common Internet protocols such as HTTP, FTP, AFS, WAP, etc. may be used. In examples where HTTP is used, the customer system 112 may include an HTTP client, commonly referred to as a "browser," for sending and receiving HTTP messages to and from an HTTP server at the system 116. Such an HTTP server may be implemented as the only network interface between the system 116 and the network 114, although other techniques may be used as well or instead. In some implementations, the interface between the system 116 and the network 114 includes a load sharing function, such as a round-robin HTTP request distributor, that balances the load across the multiple servers to distribute incoming HTTP requests evenly. Each of the multiple servers, as well as at least the users accessing that server, has access to the data of the MTS, although other alternative configurations may be used instead.

[0017] In one embodiment, the system 116 illustrated in FIG. 1A implements a web-based customer relationship management (CRM) system. For example, in one embodiment, the system 116 includes an application server configured to provide related data, code, forms, web pages, and other information to and from the customer system 112, store and retrieve data, objects, and web page content related database systems, as well as implement and run a CRM software application. In a multi-tenant system, data for multiple tenants may be stored within the same physical database object, but tenant data is typically arranged such that one tenant's data is kept logically separate from other tenants' data, such that one tenant does not have access to another tenant's data unless such data is explicitly shared. In certain embodiments, the system 116 implements applications other than or in addition to a CRM application. For example, the system 116 can provide tenant access to a multi-host (standard and custom) application, including a CRM application. Customer (or third-party developer) applications, which may or may not include CRM, are supported by the application platform 118. The application platform 118 manages the creation of applications, the storage of the applications in one or more database objects, and the execution of the applications in virtual machines within the process space of the system 116 .

[0018] One arrangement of elements of system 116 is illustrated in Figure 1B. The arrangement includes network interface 120, application platform 118, tenant data storage 122 for tenant data 123, system data storage 124 for system data 125 accessible to system 116 and potentially multiple tenants, program code 126 for implementing various functions of system 116, and process space 128 for running MTS system processes and tenant-specific processes, such as running applications as part of an application hosting service. Additional processes that may run on system 116 include a database indexing process.

[0019] Some elements of the system illustrated in FIG. 1A include conventional well-known elements that are only briefly described here. For example, each of the customer systems 112 can include a desktop personal computer, a workstation, a laptop, a PDA, a cellular phone, or any wireless access protocol (WAP)-enabled device, or any other computing device capable of directly or indirectly interfacing with the Internet or other network connections. Each of the customer systems 112 typically runs a browsing program such as an HTTP client, for example, Microsoft® Internet Explorer browser, Netscape® Navigator browser, Opera browser, or a WAP-enabled browser in the case of a cellular phone, PDA, or other wireless device, enabling a customer of the customer system 112 (e.g., a subscriber of a multi-tenant database system) to access, process, and display information, pages, and applications available to it from system 116 via network 114. Also, each of the customer systems 112 typically includes one or more user interface devices such as a keyboard, mouse, trackball, touchpad, touch screen, pen, etc. to interact with the graphical user interface (GUI) provided by the browser on a display (e.g., a monitor screen, LCD display, etc.) in conjunction with pages, forms, applications, and other information provided by system 116 and other systems or servers. For example, the user interface device may be used to access data and applications hosted by system 116 and perform searches on the stored data, or otherwise enable the user to interact with the various GUI pages that may be presented to the user. As described above, the embodiments are suitable for use on the Internet, which refers to a particular global Internetwork of networks.However, it should be understood that other networks, such as an intranet, an extranet, a virtual private network (VPN), a non-TCP / IP based network, any LAN or WAN, may be used in place of the Internet.

[0020] According to one embodiment, each of customer systems 112 and all of their components are operator configurable using an application, such as a browser, that includes computer code executed using a central processing unit, such as an Intel Pentium processor. Similarly, system 116 (and additional instances of MTS, if multiple are present) and all of their components may be operator configurable using an application, such as a browser, that includes computer code to execute using a central processing unit and / or multiple processor units, such as processor system 117, which may include an Intel Pentium processor or the like. An embodiment of a computer program product includes a machine-readable storage medium(s) having instructions stored thereon that can be used to program a computer to perform any of the processes of the embodiments described herein. The computer code for operating and configuring the system 116 to interact with and process the contents of web pages, applications, and other data and media as described herein may be, for example, downloaded and stored on a hard disk, although the entire program code or a portion thereof may be stored on any other known volatile or non-volatile memory medium or device, such as ROM or RAM, or provided on any medium capable of storing program code, such as floppy disks, optical disks, digital versatile disks (DVDs), compact disks (CDs), microdrives, magnetic or optical cards, any type of rotating medium including nanosystems (including molecular memory ICs), or any type of medium or device suitable for storing instructions and / or data. Additionally, the entire program code or a portion thereof may be transmitted and downloaded from a software source or from another server known via a transmission medium, such as the Internet, or transmitted via any other known conventional network connection (e.g., extranet, VPN, LAN, etc.) using any known communication medium and protocol (e.g., TCP / IP, HTTP, HTTPS, Ethernet, etc.).It will also be appreciated that computer code for carrying out the embodiments may be implemented in any programming language that may be executed on the client systems and / or servers or server systems, such as C, C++, HTML, other markup languages, Java (registered trademark), JavaScript (registered trademark), ActiveX, any other scripting language such as VBScript, and many other programming languages ​​known in the art (Java is a registered trademark of Sun Microsystems, Inc.).

[0021] According to one embodiment, the system 116 is configured to provide web pages, forms, applications, data, and media content to the customer (client) systems 112 to support access by the customer systems 112 as tenants of the system 116. Thus, the system 116 provides security mechanisms to keep each tenant's data separate unless the data is shared. When more than one MTS is used, they may be located in close proximity to each other (e.g., in a server farm located in a single building or campus) or distributed at locations far from each other (e.g., one or more servers located in city A and one or more servers located in city B). As used herein, each MTS may include one or more logically and / or physically connected servers that are locally located in or distributed across one or more geographic locations. Furthermore, the term "server" is intended to include a computer system including processing hardware and processing space, as well as associated storage systems and database applications (e.g., OODBMS or RDBMS) as are known in the art. It should also be understood that "server system" and "server" are often used interchangeably herein. Similarly, the database objects described herein may be implemented as a single database, a distributed database, a collection of distributed databases, databases with redundant online or offline backups or other redundancies, etc., and may include a distributed database or storage network and associated processing intelligence.

[0022] FIG. 1B also illustrates environment 110. However, FIG. 1B further illustrates elements of system 116 and various interconnections in one embodiment. FIG. 1B illustrates that each of customer systems 112 may include processor system 112A, memory system 112B, input system 112C, and output system 112D. FIG. 1B illustrates network 114 and system 116. FIG. 1B also illustrates that system 116 may include tenant data storage 122, tenant data 123, system data storage 124, system data 125, user interface 144 (UI), application program interface (API) 146, PL / SOQL 148, save routines 150, application setup mechanism 152, application server 130, system process space 132, tenant process space 134, tenant management process space 136, tenant storage area 138, customer storage 140, and application metadata 142. In other embodiments, environment 110 may not have the same elements as those listed above and / or may have other elements instead of or in addition to those listed above.

[0023] The customer system 112, the network 114, the system 116, the tenant data storage 122, and the system data storage 124 have been described above in FIG. 1A. With respect to the customer system 112, the processor system 112A may be any combination of one or more processors. The memory system 112B may be any combination of one or more memory devices, short-term and / or long-term memories. The input system 112C may be any combination of input devices such as one or more keyboards, mice, trackballs, scanners, cameras, and / or interfaces to a network. The output system 112D may be any combination of output devices such as one or more monitors, printers, and / or interfaces to a network. As illustrated in FIG. 1B, the system 116 may include a network interface 120 (of FIG. 1A) implemented as a set of an HTTP application server 130, an application platform 118 (of FIG. 1A), a tenant data storage 122, and a system data storage 124. Also shown is a system process space 132 including individual tenant process spaces 134 and a tenant management process space 136. Each application server 130 may be configured to access tenant data storage 122 and tenant data 123 therein, and system data storage 124 and system data 125 therein, to service the needs of customer systems 112. Tenant data 123 may be partitioned into individual tenant storage areas 138, which may be either a physical and / or logical arrangement of data. Within each tenant storage area 138, customer storage 140 and application metadata 142 may be similarly allocated for each customer. For example, a copy of a customer's most recently used (MRU) items may be stored in customer storage 140. Similarly, a copy of the MRU items for the entire tenant organization may be stored in tenant storage area 138.The UI 144 provides a user interface and the API 146 provides an application program interface to the system 116 resident processes for customers and / or developers of the customer system 112. Tenant data and system data may be stored in various databases, such as one or more databases.

[0024] The application platform 118 includes an application setup mechanism 152 that supports the creation and management of applications by application developers, which may be saved as metadata by save routines 150 in tenant data storage 122 for execution by subscribers, for example as one or more tenant process spaces 134 managed by tenant management process 136. Invocations to such applications may be coded using PL / SOQL 148, which provides a programming language style interface extension to API 146. A detailed description of several PL / SOQL language embodiments is provided in commonly owned U.S. Patent No. 7,730,478, filed September 21, 2007, entitled "Method and system for allowing access to developed applications via a multi-tenant on-demand database service," which is incorporated herein in its entirety for all purposes. Invocations to applications may be detected by one or more system processes that retrieve application metadata 142 for subscribers to perform invocations and manage the execution of the metadata as applications within virtual machines.

[0025] Each application server 130 may be communicatively coupled to a database system, e.g., with access to system data 125 and tenant data 123, via a different network connection. For example, one application server 130-1 may be coupled via a network 114 (e.g., the Internet), another application server 130-N may be coupled via a direct network link, and another application server 130-N may be coupled by yet another network connection. Transmission Control Protocol and Internet Protocol (TCP / IP) is a typical protocol for communicating between the application servers 130 and the database system. However, it will be apparent to one skilled in the art that other transport protocols may be used to optimize the system depending on the network interconnect used.

[0026] In certain embodiments, each application server 130 is configured to process requests for any user associated with any organization that is a tenant. There is no server affinity for a customer and / or organization to a particular application server 130, since it is desirable to be able to add and remove application servers from the server pool at any time for any reason. Thus, in one embodiment, an interface system implementing load balancing functionality (e.g., an F5 Big-IP load balancer) is communicatively coupled between the application servers 130 and the customer systems 112 to distribute requests to the application servers 130. In one embodiment, the load balancer uses a least connections algorithm to route customer requests to the application servers 130. Other examples of load balancing algorithms such as round robin and observed response time may be used. For example, in certain embodiments, three consecutive requests from the same customer may hit three different application servers 130, and three requests from different customers may hit the same application server 130. Thus, the system 116 is multi-tenant, where the system 116 handles storage of and access to different objects, data, and applications across heterogeneous customers and organizations.

[0027] As a storage example, a tenant may be a company that employs a sales force where each salesperson uses the system 116 to manage the sales process. Thus, a customer may maintain contact data, lead data, consumer follow-up data, performance data, goal and progress data, etc., all applicable to that customer's personal selling process (e.g., in the tenant data storage 122). In an example MTS configuration, a customer may manage their sales effort and cycle from any of many different customer systems, since all of the data and applications to be accessed, displayed, modified, reported, transmitted, calculated, etc., may be maintained and accessed by the customer system that has nothing more than network access. For example, if a salesperson is visiting a customer and the customer provides internet access in its lobby, the salesperson can get important updates about the customer while waiting for the customer to arrive in the lobby.

[0028] Each user's data may be separate from other users' data, regardless of each user's employer, but some data may be organization-wide data that can be shared or accessed by multiple users or all users for a given organization that is a tenant. Thus, there may be some data structures that are assigned at the tenant level and managed by the system 116, while other data structures may be managed at the user level. Because the MTS may support multiple tenants, including potential competitors, the MTS should have security protocols that keep data, applications, and application usage separate. Also, because many tenants may choose to access the MTS rather than maintain their own systems, redundancy, uptime, and backups are additional features that may be implemented in the MTS. In addition to user-specific and tenant-specific data, the system 116 may also maintain system-level data that can be used by multiple tenants or other data. Such system-level data includes industry reports, news, posts, etc. that can be shared between tenants.

[0029] In particular embodiments, customer system 112 (which may be a client system) communicates with application server 130 to request and update system-level and tenant-level data from system 116. This may require sending one or more queries to tenant data storage 122 and / or system data storage 124. System 116 (e.g., application server 130 in system 116) automatically generates one or more SQL statements (e.g., one or more SQL queries) designed to access the desired information. System data storage 124 can generate a query plan to access the requested data from a database.

[0030] Each database can generally be viewed as a collection of objects, such as a set of logical tables, that contain data that fits into predefined categories. A "table" is one representation of a data object, and tables may be used herein to simplify the conceptual description of objects and custom objects. It should be understood that "table" and "object" may be used interchangeably herein. Each table generally contains one or more data categories that are logically arranged as columns or fields in a viewable schema. Each row or record of a table contains an instance of data of each category defined by a field. For example, a CRM database may include a table that describes customers, with fields for basic contact information such as name, address, phone number, fax number, etc. Another table may describe a purchase order, with fields for information such as customer, product, sale price, date, etc. In some multi-tenant database systems, standard entity tables may be provided for use by all tenants. In a CRM database application, such standard entities may include tables of account, contact, lead, and opportunity data, each of which includes predefined fields. It should be understood that the term "entity" is sometimes used interchangeably with "object" and "table" herein.

[0031] In some multi-tenant database systems, tenants may be allowed to create and store custom objects or customize standard entities or objects by creating custom fields for standard objects, including, for example, custom index fields. U.S. Patent No. 7,779,039, filed April 2, 2004, entitled "Custom Entities and Fields in a Multi-Tenant Database System," is incorporated herein by reference. In certain embodiments, for example, all custom entity data rows are stored in a single multi-tenant physical table that may contain multiple logical tables for each organization. Customers are unaware that multiple "tables" are actually stored in one large table, or that their data may be stored in the same table as other customers' data.

[0032] "Customer," "company," or "client," as referred to interchangeably herein, refers to a company that subscribes to the CRM service. For example, a business such as Crocs® may subscribe to the CRM service and is referred to herein as a customer. As referred to herein, a consumer refers to an individual who purchases a product or service from a customer, for example, from a customer's website, a customer's store, or a face-to-face sale by a customer.

[0033] Integrated Enterprise Commerce Architecture 2 illustrates an integrated enterprise commerce architecture 201 according to one embodiment of the present disclosure. Architecture 201 is part of system 116 and environment 110 in FIGS. 1A-1B.

[0034] 2, raw event bus 200 receives raw events 202-1 through 202-7 from multiple sources. For example, raw event bus 200 receives data from, but is not limited to, customer web page 204 (e.g., a consumer clicks on web page 204), computing device 206 (e.g., a consumer's laptop or desktop), mobile device 208 (e.g., a consumer's smartphone and tablet), mobile device 210 with Internet of Things (IoT) 224 capabilities, core database 214, marketing cloud ("MC") 216, and commerce cloud ("CC") 218. As an example, when a customer clicks to view an item on customer website 204, the customer adds the item to an online cart, or when the customer removes an item from an online cart, a raw event of the activity is generated and associated with a control tag. Control tags 220-1 through 220-3, server events 222-1 through 222-3, and IOT 224 are used to determine which events are sent to raw event bus 200. Customers and client devices can publish raw events to raw event bus 200 by sending the raw events to a specific Internet Protocol (IP) address, such as rawevents.salesforce.com.

[0035] Low events are typically high volume, low quality data. The embodiments presented herein convert the high volume, low quality data into low volume, high quality data. Traditionally, administrators had to write code to convert the high volume, low quality data into low volume, high quality data. The embodiments presented herein provide point-and-click software to perform this function, thereby significantly reducing the time and cost required for such conversion.

[0036] The raw event calculator 226 includes multiple modules such as Marketing Cloud Predictive Intelligence (MC PI) 228, Commerce Cloud Predictive Intelligence (CC PI) 230, and Krux 232 for sorting raw events received via the raw event bus 200 to convert high volume, low quality data into low volume, high quality data. For example, the MC PI 228 analyzes events from the raw event bus 200 to determine what is being added to or removed from an online checkout cart by a consumer. The events may include a cart identification (ID) to identify the cart. If there is an abandoned cart event, i.e., an event where a consumer has added an item to a cart but has not checked out and completed the transaction, the MC PI 228 publishes the abandoned cart event to the Enterprise Messaging Platform (EMP) bus 234. Similarly, if a cart has not seen an event, such as an add or remove, for a certain programmable period of time, MC PI 228 puts the event out on EMP bus 234. Raw event bus 200 and EMP bus 234 can be one big bus. However, raw event bus 200 handles raw events, which may be high in data volume and may not go directly to a customer or application, while EMP bus 234 handles business events, which may have more details of a transaction. Furthermore, raw event bus 200 can only define who has access to it or not, whereas EMP bus 234 has a security model that can define "who is allowed to get what events and when". EMP bus 234 can provide a common abstraction layer for disparate customers and a common shared bus for events across different systems. Events going to EMP bus 234 can go to any system surrounding the platform.However, different customers and different systems cannot communicate directly with each other over EMP bus 234. Events on EMP bus 234 are securely isolated from each other.

[0037] The EMP Bus 234 allows for event publish / event subscribe rules. Event publish / event subscribe rules provide the events that can be published to the EMP Bus 234 by customers, the events that can be subscribed to by customers to the EMP Bus 234, and what happens when a customer subscribes to a particular event on the EMP Bus 234. When publishing rules are set up, filter criteria can be applied to a given event to restrict how it is shared, for example, to only publish PersonAccounts with a RecordType of "EMEA". Then, for a given event, the payload can be enriched with additional information before publishing to the EMP Bus 234. For example, RecordType information can be added to a given customer data change (CDC) event, so that subscribers can apply filters. Similarly, when subscription rules are set up, filter criteria can be applied when retrieving events from the shared EMP 234. For example, filter criteria can be set up to process only Personal Accounts with a RecordType of "NorthAmerica". The EMP bus 234 can provide customer trigger events that can be used to generate actions. Take an abandoned cart for example. After the abandoned cart event is published on the EMP bus 234, it can be subscribed to and retrieved from the EMP bus 234. The abandoned cart event can be a trigger event and can generate an email action to remind the consumer that they abandoned the cart.

[0038] The event router / buffer 236 provides support for event publish / event subscribe rules. Events published on the EMP bus 234 are in chronological order, and events over a certain period, such as 72 hours, can be dropped off. Thus, newly published events can push previously published events down, e.g., to the left as shown in FIG. 2. Different customers can subscribe to events on the EMP bus 234 independently of each other at different points in time. For example, as shown in FIG. 2, the Core 214 can subscribe to newly published events on the EMP bus 234. The EComm 254 can be brought down for 24 hours for a system upgrade. After the EComm 254 is brought up, it can subscribe to events published 24 hours ago.

[0039] Event publish / subscribe rules can define the schema, version and security of events. When different customers publish / subscribe to the EMP bus, it can improve the efficiency of the development lifecycle by separating separate tasks for different customers. There is an update to Core 214, such as publishing a new version of an event. Traditionally, EComm 254, OMS 256, MC 216 and third party system 258 have one-to-one connections to communicate with each other, but they need to be upgraded at the same time and brought up all at once to avoid system failure and to handle the new version of the event published by Core 214. With EMP bus 234, EComm 254, OMS 256, MC 216 and third party system 258 systems can be upgraded at different times after the upgrade of Core 214 and can then subscribe to the new version of the event from EMP 234 at different times. The embodiments presented herein provide an easy to use point-and-click user interface (UI) for event publishing / event subscribing rules that allows a customer administrator to select the data that should be published to the EMP bus 234 and the data that should be subscribed to from the EMP bus 234.

[0040] The CC PI 230 provides product recommendations based on the consumer's browsing history, for example, based on the items the consumer clicks on at the customer website 204 and adds or removes from the online cart, the CC PI 230 can generate product recommendations based on third party and internal data sources. The product recommendations are placed on the EMP bus 234.

[0041] Krux 232 segments user traffic. Krux 232 has a UI that allows tracking user clicks and segmenting traffic into different buckets. For example, Krux 232 can segment data based on Krux-related control tags. For example, control tags can include data such as the general location where the traffic originated, such as California, whether the consumer clicked on male or female items, etc. Using data from control tags 220, Krux can segment data by location, gender, age, etc. Thus, low event calculator 226 converts high volume, low quality data into low volume, high quality data and places the filtered data on EMP bus 234.

[0042] The cross-cloud application component 238 highlights the value of an integrated system by providing seamless experiences and access to data between systems. The cross-cloud application component 238 includes commerce journeys event handlers 240, journey builder 242, runtime components 244, virtual entities 246, and setup UI 248. The commerce journeys event handlers 240 take action on events filtered by the raw event calculator 226 and received over the EMP bus 234. For example, the commerce journeys event handlers 240 monitor the EMP bus 234 for abandoned cart events and generate data for an email reminding the consumer about items left in the cart that the consumer may want to purchase. The journey builder 242 builds and sends the email based on the data generated by the commerce journeys event handlers 240.

[0043] For example, when a consumer adds an item to a shopping cart, an "add to cart" event is generated on the raw event bus 200. The MC PI 228 starts or resumes an abandoned cart counter operation associated with the consumer's shopping cart. After a period of time, for example, two days, the MC PI 228 issues an "abandoned cart" event to the EMP 234. The commerce journey event handler 240 listens for the "abandoned cart" event. Upon accepting the event, the commerce journey event handler 240 requests, via the query handler 264, additional information associated with the abandoned cart, such as the consumer's identity and email address. Using this information, the journey builder 242 generates and sends a communication to the consumer. For example, the journey builder 242 can generate an email to remind the consumer of their interest in a product or to offer a discount. The attributes of each journey can be user-defined using point-and-click tools. In this regard, additional prediction logic may also be configured to determine journey attributes. A calculator such as the CC PI 230 can also provide information to the commerce journey event handler 240 via the EMP 234, such as the amount of a discount based on the consumer's commercial value to the tenant. While traditional methods require a customer administrator to parse through raw data, determine abandoned cart events, and write code to generate emails, the embodiments presented herein transparently provide point-and-click tools that allow such emails to be generated seamlessly and transparently. Additional commerce journey events handled by the cross-cloud application component 238 may include additional commerce events, such as cart removal or addition. Other events may include consumer-related change events, consent events such as unsubscribing from a mailing list, order events (e.g., generating an email regarding the status of an order), and other marketing events.

[0044] The runtime components 244 (also referred to as “retail runtime UI widgets”) are a set of customized UI tools. For example, the runtime components 244 include an image frame (IFrame) UI tool (not shown) that allows for the integrated display and placement of product images, for example, in marketing emails or emails that remind consumers of abandoned carts. Traditionally, such extraction of product images requires extensive coding, but the IFrame tool allows for point-and-click extraction of such images. The runtime components 244 also include a list view tool (not shown) that provides customized views of data from other systems, such as the commerce cloud 218 and the marketing cloud 216. The virtual entities 246 provide a common query layer for integration with third-party systems. The virtual entities 246 delegate to a data federation service to provide a consistent interface for querying data across various systems. This allows data to be queried from multiple systems, reducing complexity for users attempting to access such systems.

[0045] The Setup UI 248 (also referred to herein as the "Cross-Cloud Setup UI") provides a unified UI experience that allows users to configure connectivity between different applications provided by the system. It also allows users to map schemas and configure the Consumer Resolution Engine (CRE) 250. The Setup UI 248 allows business users to configure different applications without requiring advanced technical capabilities on the part of the user. Changes made using the Setup UI 248 are saved in the Metadata Service 252, which is further described below. In one embodiment, the Setup UI 248 allows program developers to create their own UIs, thereby providing a UI framework to customers as microservices.

[0046] Core 214 is a database of core products and services. Core 214 includes sales cloud, service cloud, community services, industry services, and platform services. Although marketing cloud 216 and commerce cloud 218 are shown as separate clouds, in one example, marketing cloud 216 and commerce cloud 218 may be part of Core 214.

[0047] An E-commerce database 254 stores information used to run the storefront web interface. An Order Management System (OMS) 256 is a database that stores consumer order data and handles post-order logistics (e.g., shipping, returns, etc.).

[0048] Third party systems 258 are databases and systems belonging to a third party, such as an Enterprise Resource Planning (ERP) system. For example, a customer, such as Adidas®, would have data that would be used by embodiments herein to provide services such as event data analysis or to generate marketing emails for consumers.

[0049] Event handlers 260-1 through 260-5 are code associated with the Core, MC, OMS, E-commerce and third party systems and used to read data from or place data on the EMP bus 234.

[0050] The Data Federation Service (DFS) 262 provides a set of connectors that plug into components of the system to perform queries and read, write, or delete data from records. The DFS 262 provides a common query interface so that customers can retrieve data from multiple systems. For example, a customer can perform queries and retrieve data on an online cart from the Commerce Cloud 218. Traditionally, customers would have to use a system-specific Application Programming Interface (API) for the Commerce Cloud 218 to program queries and retrieve data. The embodiments presented herein allow customers to forego the use of separate APIs and provide a single unified API for queries across multiple disparate, isolated systems such as the Core 214, the E-Commerce Database 254, the OMS 256, the MC 216, the third party systems 258, the CRE 250, etc. In the DFS, the upsert / delete handler 268 allows reads and writes back from the different systems. The DFS cache 270 stores a local copy of the data for improved performance. A query executor 266 manages queries by directing queries to multiple systems for parallel execution. A query handler 264 handles error scenarios arising from queries.

[0051] By providing a common query interface, DFS 262 can receive queries from virtual entities 246 against virtual schemas, i.e., target shapes that do not exist on disk. DFS 262 can then parse queries to be executed against concrete logical schemas. DFS 262 executes queries on the logical schemas and provides results returned through the target shapes. In addition, DFS 262 can execute queries that rely on metadata models and transformation information stored in metadata services 252. This allows DFS 262 to use transformation information to rewrite queries into the ad-hoc language of downstream systems. For example, queries that include joins or fields can be generated. Without knowing whether downstream systems support joins, DFS 262 can execute queries by relying on metadata models. For example, a query can look for information associated with separate domains (e.g., order domain and product domain). A query can look for orders, order line items, and product information associated with each order. DFS 262 is enabled by metadata service 252 to obtain this information in a single query call when a traditional query could obtain such information via separate calls to downstream systems.

[0052] Traditional systems have difficulty in determining where to get data from to perform queries and read or write data in a multi-tenant system. Figures 5 and 6 show an example of a multi-tenant UI. The UI in Figure 5 shows four clouds: Commerce Cloud, Service Cloud, Sales Cloud, and Marketing Cloud. Each instance of a cloud is called a "tenant." For example, Crocs® has purchased one Commerce Cloud contract ("Crocs US"). The Crocs US Commerce Cloud is an example of a tenant. Crocs has purchased three Service Cloud contracts (Crocs North America, Crocs Canada, and Crocs Latin America). The three Service Cloud contracts are comprised of three different tenants. Similarly, Crocs has purchased a Sales Cloud contract and a Marketing Cloud contract, which are comprised of two different tenants. The global directory of tenants 272 provides a source for managing customer tenants and authentication configurations for connecting to the tenants. For example, Crocs may have Service Cloud tenants for North America, Canada, and Latin America. In one embodiment, the global directory of tenants 272 also manages trust relationships. For example, the global directory of tenants 272 can provide rules that allow trust between Crocs service clouds for North America and Canada, but not Latin America. Managing trust relationships also allows for compliance with privacy laws such as the General Data Protection Regulation (GDPR). For example, a European cloud purchased by a customer may not have a trust relationship with clouds in other regions in order to comply with European privacy laws. Figures 5 and 6 show alternative list views of tenants. For example, the UI in Figure 5 shows that there are three service cloud tenants, one each for a marketing cloud, a sales cloud, and a commerce cloud.The "Other Data" and "Salesforce data" buttons allow customers to add other data sources from systems other than Salesforce, such as their own data in an ERP system, along with their Salesforce CRM data.

[0053] Metadata services 252 provide metadata and schemas for creating, editing, and storing the configuration of the system. Master record canonical models 282 provide a common exchange schema that harmonizes schemas between different systems. For example, some records call the last name field "family name" instead of "last name". Master record canonical models 282 provide a common schema for records, such as where family name resolves to "last name". Field mapping registry 276 connects the different schemas. Entity schema registry 274 provides access to each tenant's specific schema. EMP message schema 280 provides an event registry that defines attributes for which types of events can and cannot go on EMP bus 234. CRE service metadata 284 determines how CRE 250 should operate, for example, how CRE 250 should match and normalize records. CRE 250 is described in more detail below. DFS metadata 278 provides the types of data that can be accessed from DFS 262 using queries. In one embodiment, metadata service 252 also provides support for versioning of schema metadata. For example, a user can create and save multiple different metadata profiles.

[0054] In one embodiment, the query handler 264 may receive a request to execute a query across multiple data sources. For example, the query handler may receive a query request for consumer data. In response, the query handler 264 determines a first data source and a second data source that are relevant to the query. The first data source and the second data source may be from different systems. The query handler 264 executes the requested query by retrieving data stored in the first data source, the second data source, and a common exchange schema, such as the master record canonical model 282, and reconciles the schemas between the different first and second data sources.

[0055] Consumer Resolution Engine (CRE) Traditional databases or customer relationship management systems do not allow for the consolidation of customer data from different disparate sources to create a master record for a customer without copying the data into a specific system. Another problem with traditional systems is determining the provenance of the data, i.e., the source or sources of the data in a record. Additionally, traditional systems have struggled to provide an audit log for the data. Data provenance and audit logs are essential to comply with privacy laws. For example, if a customer wants to edit or delete a record, the customer can do so. The CRE 250 described herein enables multi-tenancy, security, and regulatory compliance. Embodiments build a holistic view of the consumer that includes not only the data, but also the context surrounding the data. Sources of data include all touchpoints that a consumer may have with a business, including both currently known and future touchpoints. Touchpoints referred to herein include, for example, point-of-sale, customer service, marketing, etc. Embodiments maintain traceability of data provenance through the system to enable searchable profiles. The CRE 250 can also maintain an audit log of all inputs, operations, and accesses of data elements. CRE250 also allows administrators or "data stewards" full control over the behavior of the system, monitor data quality, and correct the data if necessary.

[0056] Conventional systems also face the problem of integrating data from different time scales, accessing data from different sources, comparing data, and reconciling it. The embodiments presented herein solve these problems. The CRE250 can integrate with social media applications to provide visibility into consumer activity, thereby providing different consumer touch points. The system provides a fully integrated view of all incoming events to determine whether an event was generated by a previous consumer or a new consumer. The integrated view of the consumer allows for a complete analysis of the consumer, since the data about the consumer has been harmonized. In contrast, conventional systems can only handle fragments of consumer data. For example, as shown in FIG. 7, consumer Samantha Smith can purchase products through the Commerce Cloud, request services on purchased products through the Service Cloud, perform self-service through the Community Cloud, and sell further products through the Marketing Cloud. In addition, Samantha Smith can send Twitter messages to the company's Twitter account and can also use other third-party applications related to the company. Each of these touchpoints has data about Samantha Smith, but that data is scattered and isolated in separate systems. Additionally, Samantha Smith may use different names, such as Sam Smith, and different email addresses for different touchpoints. As illustrated in Figure 7, "Customer 360 via CRE" provides a unified view of the consumer Samantha Smith by harmonizing the data from all touchpoints and creating a master record for Samantha Smith. Additionally, the CRE provides data provenance by keeping records of where the data came from, such as tenant record linkage, digital identity linkage, and third-party identity linkage.Further details and examples of customer record reconciliation can be found in U.S. patent application Ser. No. 15 / 940,419, filed March 29, 2018, and U.S. patent application Ser. No. 15 / 940,448, filed March 29, 2018, both of which are incorporated by reference in their entirety herein.

[0057] A unified view of a consumer's harmonized data can analyze consumer behavior for future services and marketing. For example, a customer may tweet the company's Twitter®, create a Facebook® post related to the company, visit a website that features the company's advertisements, visit the company's store, or use an Internet of Things (IOT) device, such as a washer / dryer, that is linked to the company. Additionally, data provenance allows for a determination of whether consumer data, such as emails, can be used for marketing or other purposes without raising privacy issues.

[0058] CRE Architecture 3, data sources 300 represent data acquisition. Data sources 300 can include any data source, such as the commerce cloud 218, the marketing cloud 216, or a third party system 258. Data from data sources 300 can flow in real time from all of the data sources to the CRE 250 via an event bus.

[0059] The Stream Processor 302 processes the incoming and outgoing streaming data streams. All streaming data is processed by the internal Stream Processor 302. The Stream Processor 302 includes an Audit Handler 304 that provides data provenance and auditing capabilities. A Metrics Handler 306 provides operational metrics, such as how many new customers, how many renewals, etc. An Event Handler 308 monitors the incoming streaming data and converts the data into a canonical format. In other words, the Event Handler 308 converts the data structures of the input and output data so that it can be processed in the correct context format. Examples of data mapping and conversion can be found in U.S. Patent Application Serial No. 16 / 037,435, filed July 17, 2018, which is incorporated by reference in its entirety.

[0060] The audit handler 304 can perform operations to determine whether to act on the update. For example, when a new event is triggered, the audit handler 304 can identify and record the specific change that occurred and determine whether to forward the update to a later stage for processing. This allows the audit handler 304 to determine whether the streaming data requires additional processing based on contextual information associated with the streaming data. In one embodiment, the audit handler 304 can send information associated with this decision or contextual information downstream.

[0061] The transformation rules may be defined by canonical information about the events ingested by the stream processor. When an event arrives at the stream processor 302 from the EMP 234, contextual information such as the tenant or other metadata about the event allows the audit handler 304 to make logical decisions. Such decisions may predict information about how the data will arrive, even before the event is ingested. Such logical information may determine the transformation rules applied by the stream processor 302.

[0062] In certain embodiments, data ingested by the audit handler 304 may have different shapes or contents as the data is ingested from a single or multiple data sources. For example, the stream processor 302 may ingest data having a country field, where the country field may have different data types or contents. The audit handler 304 may make logical decisions about the data based on metadata or other contextual information about the tenant. Transformation rules may be applied to the data. Thus, instead of relying on external customization customer development, metadata can be leveraged to apply appropriate transformation rules as the data is ingested and ultimately directed to the CRE engine 314.

[0063] The change publisher 310 publishes updates to a customer's master profile to the EMP bus 234. For example, if a link or email address is added to a profile, the update is sent to anyone subscribed to that customer on the EMP bus 234. The data buffer 312 buffers data between the stream processor 302 and the CRE engine 314.

[0064] The CRE engine 314 includes a data preparation module 316 where incoming data is normalized. For example, depending on the source of the data, an address or phone number may be in the wrong format or incomplete. The data preparation module 316 also supplements the data, for example by adding area or country codes that may be missing. For each record, the matching module 318 determines whether there is a connection to an existing master profile. For example, a person associated with a service record from a service cloud may be matched with a person associated with a guest checkout commerce record. Thus, the matching module 318 creates edges that connect separated records.

[0065] The CRE engine 314 can receive and associate different consumer data records from different data sources that are relevant to an individual consumer. The matching module 318 formats the consumer records received from the different data sources into a standard format and matches the consumer data with existing records based on at least one transformation rule. In addition, the CRE engine 314 can create a master record for the consumer in such a manner using the formatted data and the existing records associated with the individual consumer.

[0066] As described above with respect to FIG. 7, different records for Samantha Smith in different sources may be connected by a matching module. Matching rules are configured and optimized to create one record from multiple records. The matching module 318 uses a configurable set of criteria to determine matching records in the canonical data model. An embodiment of the UI allows an administrator to set up and configure matching rules. Matching rules consist of a combination of criteria and conditions that can be used for matching. Data mapping can allow an administrator to write code to resolve discrepancies in field types between customer data and the canonical format.

[0067] The resolution module 320 analyzes the connections between records to determine which records should be clustered. The reconciliation module 322 creates a master record using clusters of different records. It also allows configuration of certain values ​​in the master profile, e.g., desired email address for a person. For example, the “Customer 360 via CRE” record in FIG. 7 is created by the reconciliation module 322 using other records, e.g., from commerce cloud, sales cloud, third party sources, etc. In case of multiple matches, different rules for data reconciliation can be entered along with primary and secondary tiebreaker rules.

[0068] The CRE control plane 324 manages the orchestration of data flows between parts of the CRE system and error handling when a problem occurs in a particular part of the system. The batch orchestration module 326 oversees batch processing by ensuring that all files are in the correct location and processing resources are available, and provides notifications when processing is performed. The streaming orchestration module 328 ensures that the CRE 250 is listening to and publishing to the correct Enterprise Messaging Platform channels. The failure recovery module 330 manages failures in the system and can allocate resources in another data center in the event of a failure. The system wide ops module 332 starts and stops software components of the system. In one example, the CRE control plane 324 can also provision hardware capacity in an elastic infrastructure.

[0069] The customer hub 334 is where all the master profiles are stored, including audit data, metrics data, and record linkages. The customer hub 334 also stores elements of data that may be used for the profile, such as linkages or customer contact data coming in from the commerce cloud or service cloud.

[0070] The CRE data 336 includes a CRE API 338. The CRE API 338 includes a data stewardship module 340. The data stewardship module 340 allows a customer or administrator to edit or delete master records. If a consumer wants to delete their information, for example to comply with privacy laws such as GDPR, the data stewardship module can be used to delete the consumer's record in the customer hub 334. The data stewardship module 340 also gives the user visibility into audit and metrics data. The UI for data stewardship can provide information such as whether records are still flowing in, how fast they are flowing in, how many records are generating errors, what methodology (e.g., fuzzy matching or exact matching) is being used to match records, etc. The data stewardship module 340 also allows customers to run queries against profiles and determine the source of the data in the profile. For example, the data stewardship module 340 allows users to manage data via a user interface based on the priority level of the incoming request, the type of request, and the requester, among other fields. The user interface can display the request type, such as "privacy delete," along with any notes from the requester. Additionally, the data stewardship module 340 allows users to merge flagged records into a single profile record. The data stewardship module 340 allows users to perform searches of records based on the data contained therein.

[0071] The CRE export module 342 is used to move large data sets from the customer hub 334 for data analysis and external use. The CRE search module 344 provides synchronous access to the customer hub 334. For example, the CRE search module 344 allows customers to search a candidate list of master profiles. It also allows real-time queries and lookups. If an administrator wants to put data from the customer hub 334 on a web page, the CRE search module is used to run the query to render the web page. The CRE data 336 also provides search results for queries coming from the DFS 262 via the DFS CRE connector 346. As mentioned above, the DFS 262 queries across tenants and across CRM systems.

[0072] In addition to including customer hub 334, HBase 348 includes configuration data 350, metrics data 352, and audit data 354. HBase can be a NoSQL technology used as a storage layer for the customer hub. Configuration data 350 stores rules for data preparation, matching, resolution, and reconciliation as used by CRE engine 314. Metrics data 352 stores data received from metrics handler 306. Audit data 354 stores audit data.

[0073] The setup module 356 is a UI application for cloud related services. The reporting module 358 provides the operational status of the system to help the customer make decisions. The reporting module 358 allows the customer to determine that a master consumer profile is built the way the customer wants. The reporting module 358 also provides feedback on how the system is performing. The external loading analytics visualization module 360 ​​allows the customer to export and visualize the data in their preferred format, for example as a graph or chart.

[0074] FileForce® 362 stores files for batch output 364 and batch input 366. Batch input 366 contains all previously stored data about a customer that can be merged with streaming data from stream processor 302 by CRE engine 314. Batch output 364 is refined customer data received from CRE engine 314. The data in batch input 366 and batch output 364 may be stored in “csv” format.

[0075] It will be appreciated that one or more of the software modules disclosed herein may utilize containerized software. Containerized software modules allow software from multiple developers to run on the same machine. It will be appreciated that certain elements having the same identification numbers are shown in different locations in the figures for ease of illustration. However, they are the same elements.

[0076] Computer System Implementation Various embodiments may be implemented using one or more well-known computer systems, such as computer system 400 illustrated in Figure 4. One or more computer systems 400 may be used to implement, for example, any of the embodiments described herein, as well as combinations and subcombinations thereof.

[0077] Computer system 400 may include one or more processors (also referred to as central processing units or CPUs), such as processor 404. Processor 404 may be connected to a communications infrastructure or bus 406.

[0078] The computer system 400 may also include user input / output devices 403, such as a monitor, keyboard, pointing device, etc. The user input / output devices 403 may communicate with a communications infrastructure 406 via a user input / output interface 402.

[0079] One or more of the processors 404 may be a graphics processing unit (GPU). In one embodiment, a GPU may be a processor that is a dedicated electronic circuit designed to process mathematically intensive applications. A GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as the mathematically intensive data common in computer graphics applications, images, video, etc.

[0080] Computer system 400 may also include a main (or primary) memory 408, such as a random access memory (RAM). Main memory 408 may include one or more levels of cache. Main memory 408 may store control logic (i.e., computer software) and / or data therein.

[0081] Computer system 400 may also include one or more secondary storage devices or memories 410. The secondary memory 410 may include, for example, a hard disk drive 412 or a removable storage device or drive 414. The removable storage drive 414 may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, a tape backup device, or any other storage device / drive.

[0082] The removable storage drive 414 can interact with a removable storage unit 418. The removable storage unit 418 may include a computer usable or readable storage device having computer software (control logic) or data stored thereon. The removable storage unit 418 may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, or any other computer data storage device. The removable storage drive 414 can read from or write to the removable storage unit 418.

[0083] Secondary memory 410 may also include other means, devices, components, appliances, or other approaches that allow computer programs or other instructions or data to be accessed by computer system 400. Such means, devices, components, appliances, or other approaches may include, for example, removable storage unit 422 and interface 420. Examples of removable storage unit 422 and interface 420 may include a program cartridge and cartridge interface (such as those found in video game devices), a removable memory chip (such as an EPROM or PROM) and associated socket, a memory stick and USB port, a memory card and associated memory card slot, or other removable storage unit and associated interface.

[0084] Computer system 400 may further include a communication or network interface 424. Communication interface 424 may enable computer system 400 to communicate and interact with any combination of external devices, external networks, external entities, etc. (individually and collectively referred to by reference number 428). For example, communication interface 424 may enable computer system 400 to communicate with external or remote devices 428 via communication path 426. Communication path 426 may be wired or wireless (or a combination thereof) and may include any combination of a LAN, a WAN, the Internet, etc. Control logic or data may be transmitted to or from computer system 400 via communication path 426.

[0085] Computer system 400 may be a personal digital assistant (PDA), a desktop workstation, a laptop or notebook computer, a netbook, a tablet, a smartphone, a smart watch or other wearable, an appliance, a part of the Internet-of-Things or an embedded system, or any combination thereof, to name a few non-limiting examples.

[0086] Computer system 400 may be a client or a server that accesses or hosts any application or data through any delivery paradigm, including, but not limited to: remote or distributed cloud computing solutions; local or on-premises software ("on-premises" cloud-based solutions); "as a service" models (e.g., Content as a Service (CaaS), Digital Content as a Service (DCaaS), Software as a Service (SaaS), Managed Software as a Service (MSaaS), Platform as a Service (PaaS), Desktop as a Service (DaaS), Framework (FaaS), Backend as a Service (BaaS), Mobile Backend as a Service (MBaaS), Infrastructure as a Service (IaaS); or hybrid models including any combination of the above examples or other service or delivery paradigms.

[0087] Any applicable data structures, file formats, and schemas in computer system 400 may be derived from standards, including but not limited to JavaScript Object Notification (JSON), Extensible Markup Language (XML), Yet Another Markup Language (YAML), Extensible Hypertext Markup Language (XHTML), Wireless Markup Language (WML), MessagePack, XML User Interface Language (XUL), or any other functionally similar representations, either alone or in combination, or proprietary data structures, formats, or schemas may be used exclusively or in combination with known or open standards.

[0088] In some embodiments, a tangible, non-transitory apparatus or article of manufacture including a tangible, non-transitory computer usable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device, including, but not limited to, computer system 400, main memory 408, secondary memory 410, and removable storage units 418 and 422, as well as tangible articles of manufacture embodying any combination of the above. Such control logic, when executed by one or more data processing devices (such as computer system 400), can cause such data processing devices to operate as described herein.

[0089] Based on the teachings contained herein, it will be apparent to one of ordinary skill in the art how to make and use embodiments of the present disclosure with data processing devices, computer systems, or computer architectures other than those shown in Figure 4. In particular, embodiments may operate with software, hardware, and / or operating system implementations other than those described herein.

[0090] conclusion It will be understood that the Detailed Description section is intended to be used to interpret the claims, and not the other sections, which may describe one or more example embodiments, but not all, contemplated by the inventor, and thus are not intended to limit the scope of the disclosure or the appended claims in any way.

[0091] Although the present disclosure describes exemplary embodiments for exemplary fields and applications, it should be understood that the present disclosure is not limited thereto. Other embodiments and modifications thereto are possible and are within the scope and spirit of the present disclosure. For example, without limiting the generality of this paragraph, the embodiments are not limited to the software, hardware, firmware, or entities illustrated in the drawings or described herein. Moreover, the embodiments (whether or not explicitly described herein) have significant utility for fields and applications beyond the examples described herein.

[0092] The embodiments are described herein using functional building blocks illustrating the implementation of certain functions and their relationships. The boundaries of these functional components have been arbitrarily defined herein for convenience of description. Alternate boundaries may be defined so long as the specified functions and relationships (or their equivalents) are appropriately performed. Alternative embodiments may also execute functional blocks, steps, operations, methods, etc. using an order different from that described herein.

[0093] In this specification, reference to "one embodiment," "an embodiment," "an example embodiment," or similar phrases indicates that the described embodiment may include a particular feature, structure, or characteristic, but not all embodiments may necessarily include the particular feature, structure, or characteristic. Such phrases do not necessarily refer to the same embodiment. Furthermore, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of one of ordinary skill in the art to incorporate such feature, structure, or characteristic in other embodiments, whether or not explicitly described or illustrated herein. Furthermore, some embodiments may be described using the terms "coupled" and "connected," along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments may be described using the terms "connected" or "coupled" to indicate that two or more elements are in direct physical or electrical contact with each other. However, the term "coupled" may also mean that two or more elements are not in direct contact with each other, but still cooperate or interact with each other.

[0094] The breadth and scope of the present disclosure should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.

Claims

1. receiving, by a computing device via a messaging platform, first consumer data from a first data source having a first schema and second consumer data from a second data source having a second schema, the first consumer data and the second consumer data having a common consumer, the second schema for the common consumer being different from the first schema for the common consumer; reconciling, by the computing device, the first and second schema for the common consumer with a common exchange schema of a master record canonical model, wherein a field mapping registry connects the first and second schema to the common exchange schema of the master record canonical model; determining, by the computing device, a first transformation rule based on the contextual information of the first consumer data and the common consumer canonical information in the master record canonical model, and a second transformation rule based on the contextual information of the second consumer data and the common consumer canonical information in the master record canonical model; converting, by the computing device, the first consumer data based on the first conversion rule and the second consumer data based on the second conversion rule into a canonical format of the master record canonical model, wherein common fields of the converted first and second consumer data for the common consumer include different data; reconciling, by the computing device, the disparate data within the common field into a unified view of the transformed first and second consumer data; creating, by the computing device, a single master record for the common consumer in the master record canonical model based on the reconciled data of the common fields; publishing, by the computing device, in response to updating the single master record of the common consumer, the updated single master record to a messaging platform bus for transmission to one or more subscribers of the single master record; A method comprising:

2. normalizing, by the computing device, the first consumer data; The method of claim 1 further comprising:

3. The step of reconciling the different data comprises: reconciling, by the computing device, the differing data within the common field of the first consumer data and the second consumer data using a tiebreaker rule; The method of claim 1 further comprising:

4. processing, by the computing device, streaming data using the first transformation rule or the second transformation rule; wherein one of the first consumer data and the second consumer data comprises the streaming data. The method of claim 1.

5. transmitting, by the computing device, the contextual information of the first and second consumer data to identify the first and second transformation rules; The method of claim 4 further comprising:

6. determining, by the computing device, the first data source of the transformed first consumer data and the second data source of the transformed second consumer data based on the context information; The method of claim 5 further comprising:

7. transmitting, by the computing device, the updated single master record for the common consumer to one or more data sources subscribed to the single master record; The method of claim 1 further comprising:

8. Memory; coupled to the memory, and based on instructions stored in the memory, receiving first consumer data from a first data source having a first schema and second consumer data from a second data source having a second schema, the first consumer data and the second consumer data having a common consumer, the second schema for the common consumer being different from the first schema for the common consumer; reconciling the first and second schemas for the common consumer with a common exchange schema of a master record canonical model, and a field mapping registry connects the first and second schemas to the common exchange schema of the master record canonical model; determining a first conversion rule based on the context information of the first consumer data and the canonical information of the common consumer in the master record canonical model, and a second conversion rule based on the context information of the second consumer data and the canonical information of the common consumer in the master record canonical model; converting the first consumer data based on the first conversion rule and the second consumer data based on the second conversion rule into a canonical format of the master record canonical model, wherein a common field of the converted first and second consumer data for the common consumer includes different data; reconciling the disparate data within the common field into a unified view of the transformed first and second consumer data; creating a single master record for the common consumer in the master record canonical model based on the reconciled data in the common fields; in response to an update of the single master record of the common consumer, publishing the updated single master record to a messaging platform bus for transmission to one or more subscribers of the single master record. a processor configured to: A system comprising:

9. The processor, further configured to normalize the first consumer data. The system of claim 8.

10. The processor, and further configured to reconcile the differing data within the common field of the first consumer data and the second consumer data using a tiebreaker rule. The system of claim 8.

11. The processor, further configured to process streaming data using the first conversion rule or the second conversion rule; one of the first consumer data and the second consumer data includes the streaming data; The system of claim 8.

12. The processor, and further configured to transmit the context information of the first and second consumer data to identify the first and second transformation rules. The system of claim 11.

13. The processor, and determining, based on the context information, the first data source of the transformed first consumer data and the second data source of the transformed second consumer data. The system of claim 12.

14. The processor, transmitting the updated single master record of the common consumer to one or more data sources that subscribe to the single master record; The system of claim 8 further configured to:

15. When executed by a computing device, the computing device receiving first consumer data from a first data source having a first schema and second consumer data from a second data source having a second schema, the first consumer data and the second consumer data having a common consumer, the second schema for the common consumer being different from the first schema for the common consumer; reconciling the first and second schema for the common consumer with a common exchange schema of a master record canonical model, wherein a field mapping registry connects the first and second schema to the common exchange schema of the master record canonical model; determining a first transformation rule based on context information of the first consumer data and canonical information in the master record canonical model, and a second transformation rule based on context information of the second consumer data and canonical information in the master record canonical model; converting the first consumer data based on the first conversion rule and the second consumer data based on the second conversion rule into a canonical format of the master record canonical model, wherein common fields of the converted first and second consumer data of the common consumer include different data; reconciling the disparate data within the common field into a unified view of the transformed first and second consumer data; creating a single master record for the common consumer in the master record canonical model based on the reconciled data of the common fields; responsive to updating the single master record of the common consumer, publishing the updated single master record to a messaging platform bus for transmission to one or more subscribers of the single master record; A non-transitory computer readable device having instructions to perform operations including:

16. The operations include transmitting the updated single master record for the common consumer to one or more data sources that subscribe to the single master record; 20. The non-transitory computer readable device of claim 15, further comprising:

17. the operation includes reconciling the differing data within the common field of the first consumer data and the second consumer data using a tiebreaker rule; 20. The non-transitory computer readable device of claim 15, further comprising:

18. the operation includes processing streaming data using the first conversion rule or the second conversion rule; wherein one of the first consumer data and the second consumer data comprises the streaming data.

16. The non-transitory computer readable device of claim 15.

19. The operations include transmitting the context information of the first and second consumer data to identify the first and second transformation rules; 20. The non-transitory computer readable device of claim 18, further comprising:

20. The operations include determining, based on the context information, the first data source of the transformed first consumer data and the second data source of the transformed second consumer data; 20. The non-transitory computer readable device of claim 19, further comprising:

Citation Information

Patent Citations

  • Customer database and delivery channel connection system

    JP2002041781A

  • Architecture for Enterprise Data Integration Systems

    JP2008511934A

  • Data tabulation processing method and system

    JP2010122880A

  • Cloud Based Master Data Management System and Method Therefor

    US20130290244A1