US20200097468A1 - Integrated entity view across distributed systems - Google Patents
Integrated entity view across distributed systems Download PDFInfo
- Publication number
- US20200097468A1 US20200097468A1 US16/264,464 US201916264464A US2020097468A1 US 20200097468 A1 US20200097468 A1 US 20200097468A1 US 201916264464 A US201916264464 A US 201916264464A US 2020097468 A1 US2020097468 A1 US 2020097468A1
- Authority
- US
- United States
- Prior art keywords
- data
- customer
- patron
- systems
- consumer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 claims abstract description 38
- 238000012550 audit Methods 0.000 claims description 21
- 230000015654 memory Effects 0.000 claims description 19
- 238000013523 data management Methods 0.000 claims 12
- 230000008859 change Effects 0.000 abstract description 5
- 238000004590 computer program Methods 0.000 abstract description 4
- 230000003068 static effect Effects 0.000 abstract 1
- 238000003860 storage Methods 0.000 description 32
- 230000008569 process Effects 0.000 description 26
- 238000013500 data storage Methods 0.000 description 18
- 238000012545 processing Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 9
- 238000007726 management method Methods 0.000 description 9
- 230000009466 transformation Effects 0.000 description 8
- 230000006870 function Effects 0.000 description 6
- 230000008520 organization Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 230000026676 system process Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 239000000872 buffer Substances 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000002360 preparation method Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013459 approach Methods 0.000 description 2
- 230000006399 behavior Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013506 data mapping Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000000605 extraction Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 238000012384 transportation and delivery Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 208000022120 Jeavons syndrome Diseases 0.000 description 1
- 241000699670 Mus sp. Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 108010038083 amyloid fibril protein AS-SAM Proteins 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013501 data transformation Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000013439 planning Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000001105 regulatory effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2423—Interactive query statement specification based on a database schema
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q30/00—Commerce
- G06Q30/01—Customer relationship services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
- G06F16/212—Schema design and management with details for data modelling support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/215—Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24564—Applying rules; Deductive queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
- G06F16/288—Entity relationship models
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
Definitions
- CRM systems have access to more data about consumers of their products and services than ever before.
- An objective of a CRM system is to efficiently manage and be able to easily access and share this data at all levels of service within a supply chain.
- conventional database or CRM systems are not able to integrate customer data from disparate, disconnected sources and create a master record for a consumer.
- Conventional systems are also challenged with determining where to get data from for either executing queries, reading, or writing data in a multi-tenant system.
- Another issue with conventional systems is that of data provenance, i.e., determining one or more sources of data in a record.
- conventional systems have struggled with providing audit logs for data. Data provenance and audit logs are essential for complying with privacy laws.
- Conventional systems also face the issue of integrating data with different time scales, accessing data from different sources, comparing the data, and reconciling it.
- Typical commerce/marketing systems require administrators to produce code to convert high volume, low quality consumer data into lower volume, higher quality data. This process can be time consuming, expensive, and error prone.
- administrators When a customer leaves items in an online checkout cart, i.e., abandons the cart, administrators have to write specific code to parse through large amounts of data to track such events and generate follow-up emails to the consumer.
- API Application Programming Interface
- conventionally administrators would have to learn the API for each system to program a query to interface with different systems and retrieve the data.
- Embodiments presented herein provide solutions for at least these problems amongst others.
- FIGS. 1A and 1B illustrate an example operating environment according to an embodiment of the disclosure.
- FIG. 2 illustrates an integrated enterprise commerce architecture according to an embodiment of the disclosure.
- FIG. 3 illustrates a consumer resolution engine (CRE) according to an embodiment of the disclosure.
- FIG. 4 illustrates an example computer system which may be used for implementing various embodiments presented herein.
- FIGS. 5 to 7 illustrate example user interfaces according to an embodiment of the disclosure.
- FIG. 1A illustrates a block diagram of an environment 110 wherein an on-demand database service might be used.
- the environment 110 may include customer systems 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 , program code 126 , and a process space 128 .
- the environment 110 may not have all of the components listed and/or may have other elements instead of, or in addition to, those listed above.
- a consumer may be synonymously referred to as a customer or patron.
- the environment 110 is an environment in which an on-demand database service exists.
- a customer system 112 may be any machine or system that is used by a customer to access a database customer system.
- any of the customer systems 112 may be a handheld computing device, a mobile phone, a laptop computer, a work station, and/or a network of computing devices.
- the customer systems 112 might interact via the network 114 with an on-demand database service, which is the system 116 .
- An on-demand database service such as the system 116
- Some on-demand database services may store information from one or more tenants stored into tables of a common database image to form a multi-tenant database system (MTS).
- MTS multi-tenant database system
- the “on-demand database service 116 ” and the “system 116 ” will be used interchangeably herein.
- a database image may include one or more database objects.
- a relational database management system (RDMS) or the equivalent may execute storage and retrieval of information against the database object(s).
- RDMS relational database management system
- the application platform 118 may be a framework that allows the applications of the system 116 to run, such as the hardware and/or software, e.g., the operating system.
- the on-demand database service 116 may include the application platform 118 which enables creation, managing and executing one or more applications developed by the provider of the on-demand database service, customers accessing the on-demand database service via customer systems 112 , or third-party application developers accessing the on-demand database service via the customer systems 112 .
- the users of the customer systems 112 may differ in their respective capacities, and the capacity of a particular customer system 112 might be entirely determined by permissions (permission levels) for the current user. For example, where a salesperson is using a particular customer system 112 to interact with the system 116 , that customer system 112 has the capacities allotted 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 capacities allotted to that administrator. In systems with a hierarchical role model, users at one permission level may have access to applications, data, and database information accessible by a lower permission level user, but may not have access to certain applications, database information, and data accessible by a user at a higher permission level. Thus, different users will have different capabilities with regard to accessing and modifying application and database information, depending on a user's security or permission level.
- the network 114 is any network or combination of networks of devices that communicate with one another.
- the network 114 may be any one or any combination of a LAN (local area network), WAN (wide area network), telephone network, wireless network, point-to-point network, star network, token ring network, hub network, or other appropriate configuration.
- LAN local area network
- WAN wide area network
- telephone network wireless network
- point-to-point network star network
- token ring network token ring network
- hub network or other appropriate configuration.
- TCP/IP Transfer Control Protocol and Internet Protocol
- the customer systems 112 might communicate with the system 116 using TCP/IP and, at a higher network level, use other common Internet protocols to communicate, such as HTTP, FTP, AFS, WAP, etc.
- the customer systems 112 might 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 .
- HTTP server might be implemented as the sole network interface between the system 116 and the network 114 , but other techniques might be used as well or instead.
- the interface between the system 116 and the network 114 includes load sharing functionality, such as round-robin HTTP request distributors to balance loads and distribute incoming HTTP requests evenly over a plurality of servers. At least as for the users that are accessing that server, each of the plurality of servers has access to the MTS' data; however, other alternative configurations may be used instead.
- the system 116 implements a web-based customer relationship management (CRM) system.
- the system 116 includes application servers configured to implement and execute CRM software applications as well as provide related data, code, forms, webpages and other information to and from the customer systems 112 and to store to, and retrieve from, a database system related data, objects, and Webpage content.
- CRM customer relationship management
- data for multiple tenants may be stored in the same physical database object, however, tenant data typically is arranged so that data of one tenant is kept logically separate from that of other tenants so that one tenant does not have access to another tenant's data, unless such data is expressly shared.
- the system 116 implements applications other than, or in addition to, a CRM application.
- the system 116 may provide tenant access to multiple hosted (standard and custom) applications, including a CRM application.
- Customer (or third-party developer) applications which may or may not include CRM, may be supported by the application platform 118 , which manages creation, storage of the applications into one or more database objects, and executing of the applications in a virtual machine in the process space of the system 116 .
- FIG. 1B One arrangement for elements of the system 116 is shown in FIG. 1B , including the network interface 120 , the application platform 118 , the tenant data storage 122 for tenant data 123 , the system data storage 124 for system data 125 accessible to the system 116 and possibly multiple tenants, the program code 126 for implementing various functions of the system 116 , and the process space 128 for executing MTS system processes and tenant-specific processes, such as running applications as part of an application hosting service. Additional processes that may execute on the system 116 include database indexing processes.
- each of the customer systems 112 could include a desktop personal computer, workstation, laptop, PDA, cell phone, or any wireless access protocol (WAP) enabled device or any other computing device capable of interfacing directly or indirectly to the Internet or other network connection.
- WAP wireless access protocol
- Each of the customer systems 112 typically runs an HTTP client, e.g., a browsing program, such as Microsoft's Internet Explorer browser, Netscape's Navigator browser, Opera's browser, or a WAP-enabled browser in the case of a cell phone, PDA or other wireless device, or the like, allowing a customer (e.g., subscriber of the multi-tenant database system) of the customer systems 112 to access, process and view information, pages and applications available to it from the system 116 over the network 114 .
- a browsing program such as Microsoft's Internet Explorer browser, Netscape's Navigator browser, Opera's browser, or a WAP-enabled browser in the case of a cell phone, PDA or other wireless device, or the like.
- Each of the customer systems 112 also typically includes one or more user interface devices, such as a keyboard, a mouse, trackball, touch pad, touch screen, pen or the like, for interacting with a 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 the system 116 or other systems or servers.
- GUI graphical user interface
- the user interface device may be used to access data and applications hosted by the system 116 , and to perform searches on stored data, and otherwise allow a user to interact with various GUI pages that may be presented to a user.
- embodiments are suitable for use with the Internet, which refers to a specific global internetwork of networks. However, it should be understood that other networks may be used instead of the Internet, such as an intranet, an extranet, a virtual private network (VPN), a non-TCP/IP based network, any LAN or WAN or the like.
- VPN virtual private network
- each of the customer systems 112 and all of its components are operator configurable using applications, such as a browser, including computer code run using a central processing unit such as an Intel Pentium® processor or the like.
- applications such as a browser, including computer code run using a central processing unit such as an Intel Pentium® processor or the like.
- the system 116 (and additional instances of an MTS, where more than one is present) and all of their components might be operator configurable using application(s) including computer code to run using a central processing unit such as the processor system 117 , which may include an Intel Pentium® processor or the like, and/or multiple processor units.
- a computer program product embodiment includes a machine-readable storage medium (media) having instructions stored thereon/in which may be used to program a computer to perform any of the processes of the embodiments described herein.
- Computer code for operating and configuring the system 116 to intercommunicate and to process webpages, applications and other data and media content as described herein are, for example, downloaded and stored on a hard disk, but the entire program code, or portions thereof, may also be stored in any other volatile or non-volatile memory medium or device as is well known, such as a ROM or RAM, or provided on any media capable of storing program code, such as any type of rotating media including floppy disks, optical discs, digital versatile disk (DVD), compact disk (CD), micro-drive, and magneto-optical disks, and magnetic or optical cards, Nano-systems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.
- any type of rotating media including floppy disks, optical discs, digital versatile disk (DVD), compact disk (CD), micro-drive, and magneto-optical disks, and magnetic or optical cards, Nano-systems (including molecular memory ICs), or any type of media or device suitable for
- the entire program code, or portions thereof may be transmitted and downloaded from a software source over a transmission medium, e.g., over the Internet, or from another server, as is well known, or transmitted over any other conventional network connection as is well known (e.g., extranet, VPN, LAN, etc.) using any communication medium and protocols (e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.) as are well known.
- a transmission medium e.g., over the Internet
- any other conventional network connection e.g., extranet, VPN, LAN, etc.
- any communication medium and protocols e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.
- computer code for implementing embodiments may be implemented in any programming language that may be executed on a client system and/or server or server system such as, for example, C, C++, HTML, any other markup language, JavaTM, JavaScript, ActiveX, any other scripting language, such as VBScript, and many other programming languages as are well known may be used.
- JavaTM is a trademark of Sun Microsystems, Inc.
- the system 116 is configured to provide webpages, forms, applications, data and media content to the customer (client) systems 112 to support the access by the customer systems 112 as tenants of the system 116 .
- the system 116 provides security mechanisms to keep each tenant's data separate unless the data is shared.
- MTS multi-tenant system
- they may be located in close proximity to one another (e.g., in a server farm located in a single building or campus), or they may be distributed at locations remote from one another (e.g., one or more servers located in city A and one or more servers located in city B).
- each MTS could include one or more logically and/or physically connected servers distributed locally or across one or more geographic locations.
- server is meant to include a computer system, including processing hardware and process space(s), and an associated storage system and database application (e.g., OODBMS or RDBMS) as is well known in the art. It should also be understood that “server system” and “server” are often used interchangeably herein.
- database object described herein may be implemented as single databases, a distributed database, a collection of distributed databases, a database with redundant online or offline backups or other redundancies, etc., and might include a distributed database or storage network and associated processing intelligence.
- FIG. 1B also illustrates the environment 110 . However, in FIG. 1B elements of the system 116 and various interconnections in an embodiment are further illustrated.
- FIG. 1B shows that the each of the customer systems 112 may include a processor system 112 A, a memory system 112 B, an input system 112 C, and an output system 112 D.
- FIG. 1B shows the network 114 and the system 116 .
- system 116 may include the tenant data storage 122 , the tenant data 123 , the system data storage 124 , the system data 125 , a User Interface (UI) 144 , an Application Program Interface (API) 146 , a PL/SOQL 148 , save routines 150 , an application setup mechanism 152 , applications servers 130 , a system process space 132 , tenant process spaces 134 , a tenant management process space 136 , a tenant storage area 138 , a customer storage 140 , and application metadata 142 .
- the 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.
- the customer systems 112 , the network 114 , the system 116 , the tenant data storage 122 , and the system data storage 124 were discussed above in FIG. 1A .
- the processor system 112 A may be any combination of one or more processors.
- the memory system 112 B may be any combination of one or more memory devices, short term, and/or long-term memory.
- the input system 112 C may be any combination of input devices, such as one or more keyboards, mice, trackballs, scanners, cameras, and/or interfaces to networks.
- the output system 112 D may be any combination of output devices, such as one or more monitors, printers, and/or interfaces to networks. As shown by FIG.
- the system 116 may include the network interface 120 (of FIG. 1A ) implemented as a set of HTTP application servers 130 , the application platform 118 (of FIG. 1A ), the tenant data storage 122 , and the system data storage 124 . Also shown is the system process space 132 , including individual tenant process spaces 134 and the tenant management process space 136 .
- Each application server 130 may be configured to access tenant data storage 122 and the tenant data 123 therein, and the system data storage 124 and the system data 125 therein to serve requests of the customer systems 112 .
- the tenant data 123 might be divided into individual tenant storage areas 138 , which may be either a physical arrangement and/or a logical arrangement of data.
- each tenant storage area 138 the customer storage 140 and the application metadata 142 might be similarly allocated for each customer. For example, a copy of a customer's most recently used (MRU) items might be stored to the customer storage 140 . Similarly, a copy of MRU items for an entire organization that is a tenant might be stored to the tenant storage area 138 .
- the UI 144 provides a user interface and the API 146 provides an application programmer interface to the system 116 resident processes to customers and/or developers at the customer systems 112 .
- the tenant data and the system data may be stored in various databases, such as one or more databases.
- the application platform 118 includes the application setup mechanism 152 that supports application developers' creation and management of applications, which may be saved as metadata into the tenant data storage 122 by the save routines 150 for execution by subscribers as one or more tenant process spaces 134 managed by the tenant management process 136 for example. Invocations to such applications may be coded using the PL/SOQL 148 that provides a programming language style interface extension to the API 146 . A detailed description of some PL/SOQL language embodiments is discussed in commonly owned U.S. Pat. No. 7,730,478, filed Sep. 21, 2007, entitled, “Method and system for allowing access to developed applications via a multi-tenant on-demand database service ,” which is incorporated in its entirety herein for all purposes. Invocations to applications may be detected by one or more system processes, which manages retrieving the application metadata 142 for the subscriber making the invocation and executing the metadata as an application in a virtual machine.
- Each application server 130 may be communicably coupled to database systems, e.g., having access to the system data 125 and the tenant data 123 , via a different network connection.
- database systems e.g., having access to the system data 125 and the tenant data 123 , via a different network connection.
- one application server 130 - 1 might be coupled via the network 114 (e.g., the Internet)
- another application server 130 -N might be coupled via a direct network link
- another application server 130 -N might be coupled by yet a different network connection.
- Transfer Control Protocol and Internet Protocol TCP/IP
- TCP/IP Transfer Control Protocol and Internet Protocol
- each application server 130 is configured to handle requests for any user associated with any organization that is a tenant. Because it is desirable to be able to add and remove application servers from the server pool at any time for any reason, there is no server affinity for a customer and/or organization to a specific application server 130 .
- an interface system implementing a load balancing function e.g., an F5 Big-IP load balancer
- 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, also may be used.
- the system 116 is multi-tenant, wherein the system 116 handles storage of, and access to, different objects, data and applications across disparate customers and organizations.
- one tenant might be a company that employs a sales force where each salesperson uses the system 116 to manage their sales process.
- a customer might maintain contact data, leads data, consumer follow-up data, performance data, goals and progress data, etc., all applicable to that customer's personal sales process (e.g., in the tenant data storage 122 ).
- the customer since all of the data and the applications to access, view, modify, report, transmit, calculate, etc., may be maintained and accessed by a customer system having nothing more than network access, the customer can manage his or her sales efforts and cycles from any of many different customer systems. For example, if a salesperson is visiting a customer and the customer has Internet access in their lobby, the salesperson can obtain critical updates as to that customer while waiting for the customer to arrive in the lobby.
- the customer systems 112 (which may be client systems) communicate with the application servers 130 to request and update system-level and tenant-level data from the system 116 that may require sending one or more queries to the tenant data storage 122 and/or the system data storage 124 .
- the system 116 e.g., an application server 130 in the system 116 ) automatically generates one or more SQL statements (e.g., one or more SQL queries) that are designed to access the desired information.
- the system data storage 124 may generate query plans to access the requested data from the database.
- Each database can generally be viewed as a collection of objects, such as a set of logical tables, containing data fitted into predefined categories.
- a “table” is one representation of a data object, and a table 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 logically arranged as columns or fields in a viewable schema. Each row or record of a table contains an instance of data for each category defined by the fields.
- a CRM database may include a table that describes a customer with fields for basic contact information such as name, address, phone number, fax number, etc.
- Another table might describe a purchase order, including fields for information such as customer, product, sale price, date, etc.
- standard entity tables might be provided for use by all tenants.
- such standard entities might include tables for Account, Contact, Lead, and Opportunity data, each containing pre-defined fields. It should be understood that the word “entity” may also be used interchangeably herein with “object” and “table”.
- tenants may be allowed to create and store custom objects, or they may be allowed to customize standard entities or objects, for example by creating custom fields for standard objects, including custom index fields.
- U.S. Pat. No. 7,779,039, filed Apr. 2, 2004, entitled “Custom Entities and Fields in a Multi-Tenant Database System,” is hereby incorporated herein by reference.
- all custom entity data rows are stored in a single multi-tenant physical table, which may contain multiple logical tables per organization. It is transparent to customers that their multiple “tables” are in fact stored in one large table or that their data may be stored in the same table as the data of other customers.
- Customer, company, or client as referred to interchangeably herein refers to companies that subscribe to CRM services.
- companies such as CrocsTM may subscribe to CRM services and are referred to as customers herein.
- Consumers as referred to herein refers to individuals that purchase products or services from the customers, e.g., from customer websites, customer stores, or in-person sales by the customers.
- FIG. 2 illustrates an integrated enterprise commerce architecture 201 according to an embodiment of the disclosure.
- Architecture 201 is part of system 116 and environment 110 in FIGS. 1A-1B .
- raw event bus 200 receives raw events 202 - 1 through 202 - 7 from a number of sources.
- raw event bus 200 receives data from, including but not limited to, a customer's webpage 204 (e.g., clicks by consumers on webpage 204 ), from computational devices 206 (e.g., consumer laptops or desktops), mobile devices 208 (e.g., consumer smart phones and tablets), devices 210 with Internet of Things 224 (IoT) capability, core database 214 , marketing cloud (“MC”) 216 , and commerce cloud (“CC”) 218 .
- a customer's webpage 204 e.g., clicks by consumers on webpage 204
- computational devices 206 e.g., consumer laptops or desktops
- mobile devices 208 e.g., consumer smart phones and tablets
- devices 210 with Internet of Things 224 (IoT) capability IoT) capability
- core database 214 e.g., marketing cloud (“MC”) 216
- CC commerce cloud
- 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 get transmitted to the raw event bus 200 .
- Customer and client devices can publish raw events onto the raw event bus 200 by sending the raw events to a certain Internet Protocol (IP) address such as rawevents.salesforce.com.
- IP Internet Protocol
- Raw events are typically high volume, low quality data.
- Embodiments presented herein convert high volume, low quality data into lower volume, higher quality data. Conventionally, administrators had to produce code to convert the high volume, low quality data into lower volume, higher quality data. The embodiments presented herein provide point-and-click software to perform this function thereby significantly reducing time and cost required for such conversions.
- Raw events calculators 226 include a number of 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 and convert the high volume, low quality data into lower volume, higher quality data.
- MC PI 228 parses events from the raw event bus 200 to determine what is being added by a consumer into an online checkout cart or removed from the online checkout cart. Events may include a cart identification (ID) to identify the cart.
- ID cart identification
- MC PI 228 will publish an abandoned cart event on the Enterprise Messaging Platform (EMP) bus 234 .
- EMP Enterprise Messaging Platform
- MC PI 228 will put the event on the EMP bus 234 .
- Raw Event Bus 200 and EMP bus 234 could be one big bus. However, Raw Event Bus 200 processes raw events, which can have high data volume and may not directly go to any customer or application, while EMP bus 234 processes business event, which can have more transactional details.
- Raw Event Bus 200 can only define who has access to it or not, but EMP bus 234 has a security model that can define “who is allowed to get what events when”.
- EMP bus 234 can provide a common abstraction layer for disparate, different customers and a common shared bus for events across different systems. Any events going onto EMP bus 234 can go to any systems encircling the platform. But different customers and different systems can't communicate directly with each other through EMP bus 234 . The events on EMP bus 234 are securely isolated from each other.
- EMP bus 234 allows for event publish/event subscribe rules.
- the event publish/event subscribe rules provide for what event can be published to the EMP bus 234 by a customer, what event can be subscribed to on the EMP bus 234 by the customer, and what happens when a customer subscribes to a particular event on the EMP bus 234 .
- a filter criteria can be applied for a given event to limit how it's shared, such as only publishing PersonAccounts with RecordType as “EMEA”.
- the payload can be enriched with additional information before publishing to EMP bus 234 . For example, RecordType information is added to a given customer data change (CDC) event so subscribers can apply filters.
- CDC customer data change
- a filter criteria can be applied when retrieving events off the share EMP 234 .
- a filter criteria can be set up to only process PersonAccount with RecordType of “NorthAmerica”.
- EMP bus 234 can provide customer trigger events that can be used to produce an action. Taking the abandoned cart as an example, after an abandoned cart event is published on EMP bus 234 , it can be subscribed to and retrieved off EMP bus 234 . The abandoned cart event can be the trigger event. And an email action can be produced to remind the consumer who has abandoned the cart.
- Event router/buffer 236 provides support for the event publish/event subscribe rules.
- the events published on EMP bus 234 are in chronological order and events exceeding a certain period of time, such as 72 hours, can be dropped off. So newly published events can push previously published events down, for example, to the left as shown in FIG. 2 .
- Different customers can subscribe to the events on EMP bus 234 at different time point of that period of time and independently from each other. For example, as shown in FIG. 2 , Core 214 can subscribe to newly published events on EMP bus 234 .
- EComm 254 may be brought down 24 hours for system upgrade. And after EComm 254 is brought up, it can subscribe to events published 24 hours ago.
- the event publish/event subscribe rules can define the schema, version, and security of the events. With different customers publish/subscribe to EMP bus, the efficiency for development life cycle can be improved by decoupling separate duties for different customers. For example, there is an update on Core 214 , such as publishing new version of events. Conventionally, EComm 254 , OMS 256 , MC 216 and 3 rd Party system 258 , which have one to one connection between each other to communicate with each other, need to be upgraded at the same time and brought up all at once to avoid system breakdown and process new version of events published by Core 214 .
- Embodiments presented herein provide an easy to use point-and-click user interface (UI) for event publish/event subscribe rules that allows a customer's administrator to select what data is to be published to the EMP bus 234 and what data is to be subscribed from the EMP bus 234 .
- UI point-and-click user interface
- CC PI 230 provides product recommendations based on a consumer's browsing history. For example, based on items a consumer has clicked on a customer website 204 , added to an online cart, or deleted from the online cart, CC PI 230 , based on third party and internal data sources, can generate product recommendations. The product recommendations are placed on the EMP bus 234 .
- Krux 232 segments user traffic.
- Krux 232 has a UI that allows tracking of user clicks and segmenting the traffic into different buckets.
- Krux 232 may segment data, based on Krux related control tags.
- control tags may include data such as the general location where the traffic originated from, e.g., California, or whether a consumer clicked on men's or women's items.
- Krux can segment data by location, gender, age, etc.
- raw event calculators 226 convert the high volume, low quality data into lower volume, higher quality data and place the filtered data onto the EMP bus 234 .
- Cross-cloud Application Components 238 highlight the value of integrated systems by providing seamless experiences and access to data across systems.
- Cross-cloud Application Components 238 include commerce journeys event handler 240 , journey builder 242 , runtime components 244 , virtual entities 246 , and setup UI 248 .
- Commerce journeys event handler 240 takes action on events filtered by raw events calculator 226 and received via the EMP bus 234 .
- commerce journeys event handler 240 monitors the EMP bus 234 for abandoned cart events and generates data for an email that reminds a consumer about items left behind in the cart that the consumer might want to purchase.
- Journey builder 242 builds and sends the email based on data generated by commerce journeys event handler 240 .
- an “add cart” event is produced on raw event bus 200 .
- MC PI 228 starts or restarts an abandoned cart counter operation associated with the consumer's shopping cart.
- MC PI 228 publishes an “abandoned cart” event on the EMP 234 .
- Commerce journeys event handler 242 listens for “abandoned cart” events. Upon ingesting the event, commerce journeys event handler 242 requests additional information associated with the abandoned cart, such as the consumer's identity and email address, via query handler 264 . Leveraging this information, journey builder 242 generates and transmits a communication to the consumer.
- journey builder 242 may generate an email to remind the consumer of his or her interest in a product, or to offer a discount.
- the attributes for each journey can be defined by a user using point-and-click tools.
- additional predictive logic may also be configured to determine journey attributes.
- a calculator such as CC PI 230 may also provide information to commerce journeys event handler 240 via EMP 234 , such as the amount of the discount based on the consumer's commercial value to the tenant. While conventional methods require a customer's administrator to write code to parse through raw data, determine abandoned cart events, and generate an email, the embodiments presented herein transparently provide point-and-click tools that allow the generation of such emails seamlessly and transparently.
- Additional commerce journey events handled by cross-cloud application components 238 may include additional commerce events, such as cart remove or add.
- Other events may include consumer related change events, consent events such as mailing list unsubscribe, ordering events (e.g., generating an email regarding a status of an order), and other marketing events.
- Runtime Components 244 are a customized set of UI tools.
- runtime components 244 include an image frame (IFrame) UI tool (not shown) that allows for integrated display and placement of a product image into, for example, a marketing email or an email that reminds a consumer of an abandoned cart. Conventionally such an extraction of a product image would require extensive coding, however the IFrame tools allows for point-and-click extraction of such images.
- Runtime components 244 also include a list view tool (not shown) that provides customized views of data from other systems, like commerce cloud 218 and marketing cloud 216 .
- Virtual Entities 246 provide a common query layer for integration with third party systems. Virtual entities 246 delegates to data federation service 0 provides a consistent interface for querying data across various systems. Thereby, data can be queried from multiple systems reducing complexity for a user seeking to access such systems.
- Setup UI 248 (also referred to as “cross-cloud setup UI” herein) provides an integrated UI experience that allows a user to configure connectivity between different applications provided by the system. It also allows for users to map schemas and configure the Consumer Resolution Engine (CRE) 250 . Setup UI 248 permits business users to configure different applications without needing sophisticated technical capability on the part of the user. Changes made using the setup UI 248 are saved in the Metadata Service 252 that is described further below. In an embodiment, setup UI 248 allows program developers to make their own UIs thereby providing a UI framework as a micro service to customers.
- CRE Consumer Resolution Engine
- Core 214 is a database of core products and services.
- Core 214 includes sales cloud, service cloud, communities services, industries services, and platform services. While marketing cloud 216 and commerce cloud 218 are shown as separate clouds, in an example, marketing cloud 216 and commerce cloud 218 may be part of core 214 .
- E-commerce database 254 stores information used to run a storefront web interface.
- Order management system (OMS) 256 is a database that stores consumer order data and handles logistics after an order is placed (e.g., shipment, returns, etc.)
- Third party systems 258 are databases and systems that belong to third parties such as an Enterprise Resource Planning (ERP) system.
- ERP Enterprise Resource Planning
- a customer such as AdidasTM, will have data that will be used by the embodiments herein to provide services such as event data analysis or generate marketing emails for consumers.
- Event handlers 260 - 1 through 260 - 5 are associated with core, MC, OMS, e-commerce, and third party systems and are code that is used to read data from EMP bus 234 or to place data onto EMP bus 234 .
- Data Federation Service (DFS) 262 provides a set of connectors to plug into components of the system in order to run queries, read, write, or delete data from records.
- DFS 262 provide a common query interface so customers can get data from across multiple systems. For example, a customer can run a query and get data on an online cart from commerce cloud 218 . Conventionally a customer would have to use a system-specific Application Programming Interface (API) for the commerce cloud 218 in order to program a query and retrieve the data.
- API Application Programming Interface
- Embodiments presented herein allow the customer to forego use of the distinct APIs and provides a singular, unified API for queries across multiple disparate disconnected systems such as core 214 , E-commerce database 254 , OMS 256 , MC 216 , third party systems 258 , CRE 250 etc.
- the upsert/delete handler 268 allows for reading from and writing back to different systems.
- the DFS cache 270 stores local copies of data for performance improvement.
- Query executors 266 manage queries by reaching out to multiple systems for parallel execution of queries.
- Query handler 264 handles error scenarios resulting from queries.
- DFS 262 can receive a query from virtual entities 246 against a virtual schema, that is, a target shape that does not exist on disk. DFS 262 can then parse the query to be performed against a concrete logical schema. DFS 262 executes the query on the logical schema and provides the results to be returned through the target shape. Additionally, DFS 262 can perform a query that relies on a metadata model and transformation information stored in metadata service 252 . Thereby, DFS 262 can rewrite a query into an ad hoc language of a downstream system using the transformation information. For example, a query may be generated that includes joins or fields.
- DFS 262 can execute a query by relying on the metadata model. For example, a query may seek information associated with separate domains (e.g., an order domain and a product domain). The query may seek orders, order line items, and products information associated with the respective orders. Where a traditional query may obtain such information via separate calls to the downstream system, DFS 262 is enabled by metadata service 252 to obtain this information in a single query call.
- a query may seek information associated with separate domains (e.g., an order domain and a product domain).
- the query may seek orders, order line items, and products information associated with the respective orders.
- DFS 262 is enabled by metadata service 252 to obtain this information in a single query call.
- FIGS. 5 and 6 show examples of a multi-tenancy UI.
- the UI in FIG. 5 illustrates four clouds—commerce cloud, service cloud, sales cloud, and marketing cloud.
- Each instance of the cloud is referred to as a “tenant.”
- CrocsTM has purchased one contract for a commerce cloud (“Crocs US).
- Crocs' US commerce cloud is an example of a tenant.
- Crocs has purchased three contracts for service cloud (Crocs North America, Crocs Canada, and Crocs Latin America).
- the three service cloud contracts comprise three distinct tenants.
- Global Directory of Tenants 272 provides a source for managing a customer's tenants and the authentication configuration to connect to the tenant. For example, Crocs may have a service cloud tenant for North America, Canada, and Latin America.
- global directory of tenants 272 also manages trust relationships. For example, global directory of tenants 272 can provide for rules that allow for trust between the Crocs service clouds for North America and Canada but not Latin America. Management of trust relationships also allows for compliance with privacy laws such as 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.
- FIG. 5 and 6 illustrate alternate list views of tenants.
- the UI in FIG. 5 shows that there are three service cloud tenants, and one each of marketing cloud, sales cloud, and commerce cloud.
- the “other data” button and the “Salesforce data” button allows a customer to add other sources of data from non-Salesforce systems, such as their own data in an ERP system, along with Salesforce CRM data.
- Metadata Service 252 provides metadata and schemas to create, edit, and store configurations for the system.
- Master record canonical models 282 provide a common exchange schema that reconciles the schema between disparate systems. For example, some records refer to a last name field as a “family name” instead of a “last name.” Master record canonical models 282 provide a common schema for the records, e.g., family name will be resolved to “last name.”
- Field mapping registry 276 connects different schemas.
- Entity schema registry 274 provides access to each tenant's specific schema.
- EMP message schemas 280 provide an event registry that defines the attributes of what kinds of events can go onto the EMP bus 234 and what kinds of events cannot go onto the EMP bus 234 .
- CRE services metadata 284 determines how CRE 250 should operate. For example it determines how CRE 250 should match and normalize records. CRE 250 will be described in further detail below.
- DFS metadata 278 provides for what kind of data can be accessed, using queries, from the DFS 262 .
- Metadata Service 252 also provides support for versioning of schema metadata. For example, a user can create and save multiple distinct metadata profiles.
- query handler 264 may receive a request to perform a query across multiple data sources. For example, query handler may receive a query request for consumer data. In response, query handler 264 determines a first data source and a second data source related to the query. The first data source and second data source may be from disparate systems. Query handler 264 performs the requested query by retrieving data stored in the first data source, the second data source and a common exchange schema, such as master record canonical model 282 , to reconcile the schema between the disparate first and second data sources.
- a common exchange schema such as master record canonical model 282
- CRE Consumer Resolution Engine
- CRE 250 as described herein allows for multi-tenancy, security, and regulatory compliance. Embodiments build a holistic view of the consumer, which includes not only the data but also the context surrounding the data.
- Sources of data include all possible touchpoints a consumer may have with a company including both current known touchpoints or future touchpoints.
- Touchpoints as referred to herein include, for example, point-of-sale, customer service, marketing etc.
- Embodiments maintain traceability of data provenance through the system to allow for searchable profiles.
- CRE 250 also allows for maintaining audit logs on all inputs, operations, and access of data elements.
- CRE 250 also allows for administrators or “data stewards” to fully control behavior of the system, monitor data quality, and modify data as needed.
- CRE 250 can integrate with social media applications to gain visibility into a consumer's activities thereby providing for different consumer touchpoints.
- the system provides a fully integrated view of all incoming events to determine whether an event is generated by a prior consumer or a new consumer.
- the integrated view of a consumer allows for complete analysis of the consumer since we have reconciled data on the consumer.
- conventional systems only had snippets of consumer data to work with. For example, as shown in FIG.
- consumer Samantha Smith may purchase an item via commerce cloud, may request a service for the purchased product via service cloud, may conduct self-service via community cloud, and may be marketed further products via marketing cloud.
- Samantha Smith may send a Twitter message to a company's Twitter account and also use other third party applications in relation to the company.
- Each of these touchpoints has data on Samantha Smith, however the data is distributed and disconnected in separate systems.
- Samantha Smith may use different names, such as Sam Smith or different email addresses for the different touchpoints.
- “Customer 360 via CRE” provides a unified view for consumer Samantha Smith by reconciling data from all the touchpoints and creating a master record for Samantha Smith.
- CRE provides for data provenance by keeping a record of where the data came from such as tenant record linkages, digital identity linkages, and third party identity linkages. Further details and examples of customer record reconciliation may be found in U.S. patent application Ser. No. 15/940,419, filed Mar. 29, 2018 and U.S. patent application Ser. No. 15/940,448, filed Mar. 29, 2018, both of which are incorporated by reference herein in their respective entireties.
- the unified view of a consumer's reconciled data allows for analysis of the consumer's behavior for future service and marketing. For example, a customer may be tweeting a company's Twitter account, making a Facebook post related to the company, viewing a website where the company's advertisement is placed, visit the company's store, or use an Internet of Things (IOT) devices such as a washer/dryer that is linked to the company.
- IOT Internet of Things
- data provenance allows for determination of whether consumer data, such as an email, can be used for marketing or other purposes without triggering privacy issues.
- data sources 300 represent data acquisition.
- Data sources 300 can include any data source such as commerce cloud 218 , marketing cloud 216 , or third party system 258 .
- Data from data sources 300 can flow from all of the data sources into CRE 250 in real-time via an event bus.
- Stream processor 302 processes streaming data streams coming in and going out. All streaming data is dealt with inside stream processor 302 .
- Stream processor 302 includes audit handler 304 which provides data provenance and auditing capabilities.
- Metrics handler 306 provides operational metrics, e.g., how many new customers, how many updates etc.
- Event handler 308 monitors streaming data flowing in and transforms the data into canonical format. In other words, event handler 308 transforms the data structure of incoming and outgoing data to allow for processing in the correct contextual format.
- An example of data mapping and transformation can be found in U.S.
- Audit handler 304 may perform an operation to determine whether to act on an update. For example, when a new event is triggered, audit handler 304 may identify and record the specific change that has occurred and decide whether to forward the update to a later stage for processing. Thereby, audit handler 304 determines whether streaming data requires additional processing based on context information associated with the streaming data. In an embodiment, audit handler 304 may transmit information associated with this determination or the context information downstream.
- Transformation rules can be defined by canonical information about an event ingested by stream processor. As events reach stream processor 302 from EMP 234 , context information such as the tenant or other metadata about events permits audit handler 304 to make logic decisions. Such decisions may predict information about how the data will arrive, even prior to ingesting the event. Such logic information can determine a transformation rule to be applied by stream processor 302 .
- data may be handled by audit handler 304 may have disparate shape or content, either when data is ingested from a single or multiple data sources.
- stream processor 302 may ingest data having a country field, where the country field may have disparate data types or content.
- Audit handler 304 may make logic decisions about the data based on metadata about the tenant or other context information.
- a transformation rule may be applied to the data.
- the metadata can be leveraged to apply proper transformation rules when data is ingested and ultimately directed to CRE engine 314 .
- Change publisher 310 publishes updates to a master profile of a customer onto EMP bus 234 . For example, if a link or an email address is added to a profile, then the update is sent to whoever subscribes to that customer on EMP bus 234 .
- Data buffer 312 buffers data between stream processor 302 and CRE engine 314 .
- CRE engine 314 includes data preparation module 316 where incoming data is normalized. For example, depending on the source of the data, addresses or phone numbers might be in the wrong format or incomplete. Data preparation module 316 also enriches the data by, for example, adding area or country code that may be missing. Match module 318 determines for each record whether there are connections to existing master profiles. For example, a person associated with a service record from service cloud can be matched to the same person associated with a guest checkout commerce record. Thus, match module 318 makes edges to connect disconnected records.
- CRE engine 314 can receive and associate different consumer data records from disparate data sources related directed to an individual consumer.
- Match module 318 formats the consumer records received from disparate data sources into a standard format and matches the consumer data with existing records based on at least one transformation rule.
- CRE engine 314 can create a master record for the consumer in such manner, using the formatted data and existing records associated with the individual consumer.
- Matching rules are configured and optimized to create a single record out of multiple records.
- Match module 318 uses a configurable set of criteria to determine a matching record in a canonical data model.
- Embodiments of UIs allow an administrator to setup and configure matching rules.
- the matching rules are composed of criteria and a combination of conditions that can be used for matching.
- Data mapping can allow an administrator to write code to resolve mismatches in field type between customer data and the canonical format.
- Resolution module 320 analyzes connections between records to determine which records should be clustered.
- Reconciliation module 322 creates the master record using the cluster of different records. It also allows for configuration of a specific value in a master profile, e.g., the desired email address for a person. For example, the “Customer 360 via CRE” record in FIG. 7 is created by reconciliation module 322 using the other records from, e.g., commerce cloud, sales cloud, third party sources etc. Different rules for data reconciliation can be entered along with primary and secondary tiebreaker rules when there are multiple matches.
- CRE control plane 324 manages the orchestration of data flows between the parts of the CRE system, as well as error handling should issues occur in a particular part of the system.
- Batch orchestration module 326 oversees batch processing by making sure that all files are in the correct location, processing resources are available, and provides notifications when processing is done.
- Streaming orchestration module 328 makes sure that the CRE 250 is listening to the right Enterprise Messaging Platform channels and publishing to the right channels.
- Failure recovery module 330 manages the failures in the system and may allocate resources in another data center upon failure.
- System wide ops module 332 starts and stops software components of the system.
- CRE control plane 324 may also do hardware capacity provisioning in an elastic infrastructure.
- Customer hub 334 is where all the master profiles, including audit data, metrics data and record linkages are stored. Customer hub 334 also stores elements of the data that would be used for a profile, e.g., linkages or customer contact data coming in from commerce cloud or service cloud.
- CRE data 336 includes CRE API 338 .
- CRE API 338 includes data stewardship module 340 .
- Data stewardship module 340 allows a customer or administrator to edit or delete a master record. For example, for compliance with privacy laws, like GDPR, if a consumer wants their information deleted, then data stewardship module can be used to delete the consumer's record in customer hub 334 .
- Data stewardship module 340 also gives a user visibility to audit and metrics data. The UI for data stewardship can provide information such as whether records are still flowing in and at what rate, how many records are giving errors, and what methodology (e.g., fuzzy matching or exact match) is being used to match the records.
- Data stewardship module 340 also allows a customer to run queries against profiles and determine the source for the data in the profile. For example, data stewardship module 340 permits a user to manage, through a user interface, data based on a priority level for incoming requests, the type of request, and the requester amongst other fields. The user interface can display a request type, such as “privacy delete” along with notes from the requestor. Data stewardship module 340 further permits a user to merge flagged records into a single profile record. Data stewardship module 340 allows the user to perform a search of records based on data included therein.
- CRE export module 342 is used for data analytics and for moving large datasets out of customer hub 334 for external use.
- CRE search module 344 provides synchronous access to customer hub 334 .
- CRE search module 344 allows a customer to search for a candidate list of master profiles. It also allows for real-time queries and lookup. If an administrator wants to put data from customer hub 334 onto a webpage, then CRE search module is used to run queries in order to render the webpage.
- CRE data 336 also provides search results to queries coming from DFS 262 via DFS CRE connector 346 . As described above, DFS 262 queries across tenants and across the entire CRM system.
- Hbase 348 in addition to including customer hub 334 includes configuration data 350 , metrics data 352 , and audit data 354 .
- HBase may be NoSQL technology that is used as the storage layer of the customer hub.
- Configuration data 350 stores the rules for data preparation, match, resolution, and reconciliation as used in CRE engine 314 .
- Metrics data 352 stores data received from metrics handler 306 .
- Audit data 354 stores audit data.
- Setup module 356 is a UI application for cloud-related services.
- Reporting module 358 provides operational status of the system to help customers make decisions. Reporting module 358 lets customers determine that master consumer profiles are being built the way they want them to. Reporting module 358 also provides feedback on how the system is operating.
- External loading analytics visualization module 360 allows a customer to export and visualize data in their preferred format, e.g., as a graph or a chart.
- FileForce 362 stores files for batch output 364 and batch input 366 .
- Batch input 366 includes all previously stored data on a customer that can be merged with streaming data from stream processor 302 by CRE engine 314 .
- Batch output 364 is the refined customer data received from CRE engine 314 .
- Data in batch input 366 and batch output 364 may be stored in a “csv” format.
- Containerized software modules allow software from multiple developers to run on the same machine. It is to be appreciated that certain elements with the same identifying number are shown in different places in the figures for ease of illustration. These are however the same element.
- FIG. 4 Various embodiments may be implemented using one or more well-known computer systems, such as computer system 400 shown in FIG. 4 .
- One or more computer systems 400 may be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub-combinations thereof.
- Computer system 400 may include one or more processors (also called central processing units, or CPUs), such as a processor 404 .
- processors also called central processing units, or CPUs
- Processor 404 may be connected to a communication infrastructure or bus 406 .
- Computer system 400 may also include user input/output device(s) 403 , such as monitors, keyboards, pointing devices, etc., which may communicate with communication infrastructure 406 through user input/output interface(s) 402 .
- user input/output device(s) 403 such as monitors, keyboards, pointing devices, etc.
- communication infrastructure 406 may communicate with user input/output interface(s) 402 .
- processors 404 may be a graphics processing unit (GPU).
- a GPU may be a processor that is a specialized electronic circuit designed to process mathematically intensive applications.
- the GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as mathematically intensive data common to computer graphics applications, images, videos, etc.
- Computer system 400 may also include a main (or primary) memory 408 , such as random access memory (RAM).
- Main memory 408 may include one or more levels of cache.
- Main memory 408 may have stored therein control logic (i.e., computer software) and/or data.
- Computer system 400 may also include one or more secondary storage devices or memory 410 .
- Secondary memory 410 may include, for example, a hard disk drive 412 or a removable storage device or drive 414 .
- Removable storage drive 414 may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, or any other storage device/drive.
- Removable storage drive 414 may interact with a removable storage unit 418 .
- Removable storage unit 418 may include a computer usable or readable storage device having stored thereon computer software (control logic) or data.
- Removable storage unit 418 may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, or any other computer data storage device.
- Removable storage drive 414 may read from or write to removable storage unit 418 .
- Secondary memory 410 may include other means, devices, components, instrumentalities, or other approaches for allowing computer programs or other instructions or data to be accessed by computer system 400 .
- Such means, devices, components, instrumentalities, or other approaches may include, for example, a removable storage unit 422 and an interface 420 .
- Examples of the removable storage unit 422 and the interface 420 may include a program cartridge and cartridge interface (such as that 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 any other removable storage unit and associated interface.
- Computer system 400 may further include a communications or network interface 424 .
- Communications 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 referenced by reference number 428 ).
- communications interface 424 may allow computer system 400 to communicate with external or remote devices 428 over communications path 426 , which may be wired or wireless (or a combination thereof), and which may include any combination of LANs, WANs, the Internet, etc.
- Control logic or data may be transmitted to and from computer system 400 via communications path 426 .
- Computer system 400 may also be any of a personal digital assistant (PDA), desktop workstation, laptop or notebook computer, netbook, tablet, smart phone, smart watch or other wearable, appliance, part of the Internet-of-Things, or embedded system, to name a few non-limiting examples, or any combination thereof.
- PDA personal digital assistant
- Computer system 400 may be a client or server, accessing or hosting any applications or data through any delivery paradigm, including but not limited to remote or distributed cloud computing solutions; local or on-premises software (“on-premise” 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 as a service (FaaS), backend as a service (BaaS), mobile backend as a service (MBaaS), infrastructure as a service (IaaS), etc.); or a hybrid model including any combination of the foregoing examples or other services or delivery paradigms.
- “as a service” models e.g., content as a service (CaaS), digital content as a service (DCaaS), software as a service (Sa
- Any applicable data structures, file formats, and schemas in computer system 400 may be derived from standards including but not limited to JavaScript Object Notation (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 alone or in combination.
- JSON JavaScript Object Notation
- XML Extensible Markup Language
- YAML Yet Another Markup Language
- XHTML Extensible Hypertext Markup Language
- WML Wireless Markup Language
- MessagePack XML User Interface Language
- XUL XML User Interface Language
- a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device.
- control logic software stored thereon
- control logic when executed by one or more data processing devices (such as computer system 400 ), may cause such data processing devices to operate as described herein.
- references herein to “one embodiment,” “an embodiment,” “an exemplary embodiment,” or similar phrases, indicate that the embodiment described can include a particular feature, structure, or characteristic, but every embodiment cannot necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of persons skilled in the relevant art(s) to incorporate such feature, structure, or characteristic into other embodiments whether or not explicitly mentioned or described herein. Additionally, some embodiments can be described using the expression “coupled” and “connected,” along with their derivatives. These terms are not necessarily intended as synonyms for each other.
- Coupled can also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Business, Economics & Management (AREA)
- Software Systems (AREA)
- Mathematical Physics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Quality & Reliability (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Economics (AREA)
- Probability & Statistics with Applications (AREA)
- Fuzzy Systems (AREA)
- Multimedia (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
- This application claims the benefit of U.S. Provisional Patent Application No. 62/735,552 filed on Sep. 24, 2018, which is incorporated by reference in its entirety.
- Companies have access to more data about consumers of their products and services than ever before. An objective of a CRM system is to efficiently manage and be able to easily access and share this data at all levels of service within a supply chain. However, conventional database or CRM systems are not able to integrate customer data from disparate, disconnected sources and create a master record for a consumer. Conventional systems are also challenged with determining where to get data from for either executing queries, reading, or writing data in a multi-tenant system. Another issue with conventional systems is that of data provenance, i.e., determining one or more sources of data in a record. Furthermore, conventional systems have struggled with providing audit logs for data. Data provenance and audit logs are essential for complying with privacy laws. Conventional systems also face the issue of integrating data with different time scales, accessing data from different sources, comparing the data, and reconciling it.
- Typical commerce/marketing systems require administrators to produce code to convert high volume, low quality consumer data into lower volume, higher quality data. This process can be time consuming, expensive, and error prone. When a customer leaves items in an online checkout cart, i.e., abandons the cart, administrators have to write specific code to parse through large amounts of data to track such events and generate follow-up emails to the consumer. Furthermore, because data comes from disparate sources that have their own Application Programming Interface (API), conventionally administrators would have to learn the API for each system to program a query to interface with different systems and retrieve the data. Embodiments presented herein provide solutions for at least these problems amongst others.
- The accompanying drawings, which are incorporated herein and form part of the specification, illustrate the present embodiments and, together with the description, further serve to explain the principles of the present embodiments and to enable a person skilled in the relevant art(s) to make and use the present embodiments.
-
FIGS. 1A and 1B illustrate an example operating environment according to an embodiment of the disclosure. -
FIG. 2 illustrates an integrated enterprise commerce architecture according to an embodiment of the disclosure. -
FIG. 3 illustrates a consumer resolution engine (CRE) according to an embodiment of the disclosure. -
FIG. 4 illustrates an example computer system which may be used for implementing various embodiments presented herein. -
FIGS. 5 to 7 illustrate example user interfaces according to an embodiment of the disclosure. - The features and advantages of the present embodiments will become more apparent from the Detailed Description set forth below when taken in conjunction with the drawings, in which like reference characters 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) in the corresponding reference number.
-
FIG. 1A illustrates a block diagram of anenvironment 110 wherein an on-demand database service might be used. Theenvironment 110 may includecustomer systems 112, anetwork 114, asystem 116, aprocessor system 117, anapplication platform 118, anetwork interface 120, atenant data storage 122, asystem data storage 124,program code 126, and aprocess space 128. In other embodiments, theenvironment 110 may not have all of the components listed and/or may have other elements instead of, or in addition to, those listed above. In this disclosure, a consumer may be synonymously referred to as a customer or patron. - The
environment 110 is an environment in which an on-demand database service exists. Acustomer system 112 may be any machine or system that is used by a customer to access a database customer system. For example, any of thecustomer systems 112 may be a handheld computing device, a mobile phone, a laptop computer, a work station, and/or a network of computing devices. As illustrated inFIG. 1A (and in more detail inFIG. 1B ) thecustomer systems 112 might interact via thenetwork 114 with an on-demand database service, which is thesystem 116. - An on-demand database service, such as the
system 116, is a database system that is made available to outside customers that do not need to necessarily be concerned with building and/or maintaining the database system, but instead may be available for their use when the customers need the database system (e.g., on the demand of the customers). Some on-demand database services may store information from one or more tenants stored into tables of a common database image to form a multi-tenant database system (MTS). Accordingly, the “on-demand database service 116” and the “system 116” will be used interchangeably herein. A database image may include one or more database objects. A relational database management system (RDMS) or the equivalent may execute storage and retrieval of information against the database object(s). Theapplication platform 118 may be a framework that allows the applications of thesystem 116 to run, such as the hardware and/or software, e.g., the operating system. In an embodiment, the on-demand database service 116 may include theapplication platform 118 which enables creation, managing and executing one or more applications developed by the provider of the on-demand database service, customers accessing the on-demand database service viacustomer systems 112, or third-party application developers accessing the on-demand database service via thecustomer systems 112. - The users of the
customer systems 112 may differ in their respective capacities, and the capacity of aparticular customer system 112 might be entirely determined by permissions (permission levels) for the current user. For example, where a salesperson is using aparticular customer system 112 to interact with thesystem 116, thatcustomer system 112 has the capacities allotted to that salesperson. However, while an administrator is using thatcustomer system 112 to interact with thesystem 116, thatcustomer system 112 has the capacities allotted to that administrator. In systems with a hierarchical role model, users at one permission level may have access to applications, data, and database information accessible by a lower permission level user, but may not have access to certain applications, database information, and data accessible by a user at a higher permission level. Thus, different users will have different capabilities with regard to accessing and modifying application and database information, depending on a user's security or permission level. - The
network 114 is any network or combination of networks of devices that communicate with one another. For example, thenetwork 114 may be any one or any combination of a LAN (local area network), WAN (wide area network), telephone network, wireless network, point-to-point network, star network, token ring network, hub network, or other appropriate configuration. As the most common type of computer network in current use 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,” that network will be used in many of the examples herein. However, it should be understood that the networks that the one or more implementations might use are not so limited, although TCP/IP is a frequently implemented protocol. - The
customer systems 112 might communicate with thesystem 116 using TCP/IP and, at a higher network level, use other common Internet protocols to communicate, such as HTTP, FTP, AFS, WAP, etc. In an example where HTTP is used, thecustomer systems 112 might include an HTTP client commonly referred to as a “browser” for sending and receiving HTTP messages to and from an HTTP server at thesystem 116. Such an HTTP server might be implemented as the sole network interface between thesystem 116 and thenetwork 114, but other techniques might be used as well or instead. In some implementations, the interface between thesystem 116 and thenetwork 114 includes load sharing functionality, such as round-robin HTTP request distributors to balance loads and distribute incoming HTTP requests evenly over a plurality of servers. At least as for the users that are accessing that server, each of the plurality of servers has access to the MTS' data; however, other alternative configurations may be used instead. - In one embodiment, the
system 116, shown inFIG. 1A , implements a web-based customer relationship management (CRM) system. For example, in one embodiment, thesystem 116 includes application servers configured to implement and execute CRM software applications as well as provide related data, code, forms, webpages and other information to and from thecustomer systems 112 and to store to, and retrieve from, a database system related data, objects, and Webpage content. With a multi-tenant system, data for multiple tenants may be stored in the same physical database object, however, tenant data typically is arranged so that data of one tenant is kept logically separate from that of other tenants so that one tenant does not have access to another tenant's data, unless such data is expressly shared. In certain embodiments, thesystem 116 implements applications other than, or in addition to, a CRM application. For example, thesystem 116 may provide tenant access to multiple hosted (standard and custom) applications, including a CRM application. Customer (or third-party developer) applications, which may or may not include CRM, may be supported by theapplication platform 118, which manages creation, storage of the applications into one or more database objects, and executing of the applications in a virtual machine in the process space of thesystem 116. - One arrangement for elements of the
system 116 is shown inFIG. 1B , including thenetwork interface 120, theapplication platform 118, thetenant data storage 122 fortenant data 123, thesystem data storage 124 forsystem data 125 accessible to thesystem 116 and possibly multiple tenants, theprogram code 126 for implementing various functions of thesystem 116, and theprocess space 128 for executing MTS system processes and tenant-specific processes, such as running applications as part of an application hosting service. Additional processes that may execute on thesystem 116 include database indexing processes. - Several elements in the system shown in
FIG. 1A include conventional, well-known elements that are explained only briefly here. For example, each of thecustomer systems 112 could include a desktop personal computer, workstation, laptop, PDA, cell phone, or any wireless access protocol (WAP) enabled device or any other computing device capable of interfacing directly or indirectly to the Internet or other network connection. Each of thecustomer systems 112 typically runs an HTTP client, e.g., a browsing program, such as Microsoft's Internet Explorer browser, Netscape's Navigator browser, Opera's browser, or a WAP-enabled browser in the case of a cell phone, PDA or other wireless device, or the like, allowing a customer (e.g., subscriber of the multi-tenant database system) of thecustomer systems 112 to access, process and view information, pages and applications available to it from thesystem 116 over thenetwork 114. Each of thecustomer systems 112 also typically includes one or more user interface devices, such as a keyboard, a mouse, trackball, touch pad, touch screen, pen or the like, for interacting with a 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 thesystem 116 or other systems or servers. For example, the user interface device may be used to access data and applications hosted by thesystem 116, and to perform searches on stored data, and otherwise allow a user to interact with various GUI pages that may be presented to a user. As discussed above, embodiments are suitable for use with the Internet, which refers to a specific global internetwork of networks. However, it should be understood that other networks may be used instead of the Internet, such as an intranet, an extranet, a virtual private network (VPN), a non-TCP/IP based network, any LAN or WAN or the like. - According to one embodiment, each of the
customer systems 112 and all of its components are operator configurable using applications, such as a browser, including computer code run using a central processing unit such as an Intel Pentium® processor or the like. Similarly, the system 116 (and additional instances of an MTS, where more than one is present) and all of their components might be operator configurable using application(s) including computer code to run using a central processing unit such as theprocessor system 117, which may include an Intel Pentium® processor or the like, and/or multiple processor units. A computer program product embodiment includes a machine-readable storage medium (media) having instructions stored thereon/in which may be used to program a computer to perform any of the processes of the embodiments described herein. Computer code for operating and configuring thesystem 116 to intercommunicate and to process webpages, applications and other data and media content as described herein are, for example, downloaded and stored on a hard disk, but the entire program code, or portions thereof, may also be stored in any other volatile or non-volatile memory medium or device as is well known, such as a ROM or RAM, or provided on any media capable of storing program code, such as any type of rotating media including floppy disks, optical discs, digital versatile disk (DVD), compact disk (CD), micro-drive, and magneto-optical disks, and magnetic or optical cards, Nano-systems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data. Additionally, the entire program code, or portions thereof, may be transmitted and downloaded from a software source over a transmission medium, e.g., over the Internet, or from another server, as is well known, or transmitted over any other conventional network connection as is well known (e.g., extranet, VPN, LAN, etc.) using any communication medium and protocols (e.g., TCP/IP, HTTP, HTTPS, Ethernet, etc.) as are well known. It will also be appreciated that computer code for implementing embodiments may be implemented in any programming language that may be executed on a client system and/or server or server system such as, for example, C, C++, HTML, any other markup language, Java™, JavaScript, ActiveX, any other scripting language, such as VBScript, and many other programming languages as are well known may be used. (Java™ is a trademark of Sun Microsystems, Inc.). - According to one embodiment, the
system 116 is configured to provide webpages, forms, applications, data and media content to the customer (client)systems 112 to support the access by thecustomer systems 112 as tenants of thesystem 116. As such, thesystem 116 provides security mechanisms to keep each tenant's data separate unless the data is shared. If more than one MTS is used, they may be located in close proximity to one another (e.g., in a server farm located in a single building or campus), or they may be distributed at locations remote from one another (e.g., one or more servers located in city A and one or more servers located in city B). As used herein, each MTS could include one or more logically and/or physically connected servers distributed locally or across one or more geographic locations. Additionally, the term “server” is meant to include a computer system, including processing hardware and process space(s), and an associated storage system and database application (e.g., OODBMS or RDBMS) as is well known in the art. It should also be understood that “server system” and “server” are often used interchangeably herein. Similarly, the database object described herein may be implemented as single databases, a distributed database, a collection of distributed databases, a database with redundant online or offline backups or other redundancies, etc., and might include a distributed database or storage network and associated processing intelligence. -
FIG. 1B also illustrates theenvironment 110. However, inFIG. 1B elements of thesystem 116 and various interconnections in an embodiment are further illustrated.FIG. 1B shows that the each of thecustomer systems 112 may include aprocessor system 112A, amemory system 112B, aninput system 112C, and anoutput system 112D.FIG. 1B shows thenetwork 114 and thesystem 116.FIG. 1B also shows that thesystem 116 may include thetenant data storage 122, thetenant data 123, thesystem data storage 124, thesystem data 125, a User Interface (UI) 144, an Application Program Interface (API) 146, a PL/SOQL 148, saveroutines 150, anapplication setup mechanism 152,applications servers 130, asystem process space 132,tenant process spaces 134, a tenantmanagement process space 136, atenant storage area 138, acustomer storage 140, andapplication metadata 142. In other embodiments, theenvironment 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. - The
customer systems 112, thenetwork 114, thesystem 116, thetenant data storage 122, and thesystem data storage 124 were discussed above inFIG. 1A . Regarding thecustomer systems 112, theprocessor system 112A may be any combination of one or more processors. Thememory system 112B may be any combination of one or more memory devices, short term, and/or long-term memory. Theinput system 112C may be any combination of input devices, such as one or more keyboards, mice, trackballs, scanners, cameras, and/or interfaces to networks. Theoutput system 112D may be any combination of output devices, such as one or more monitors, printers, and/or interfaces to networks. As shown byFIG. 1B , thesystem 116 may include the network interface 120 (ofFIG. 1A ) implemented as a set ofHTTP application servers 130, the application platform 118 (ofFIG. 1A ), thetenant data storage 122, and thesystem data storage 124. Also shown is thesystem process space 132, including individualtenant process spaces 134 and the tenantmanagement process space 136. Eachapplication server 130 may be configured to accesstenant data storage 122 and thetenant data 123 therein, and thesystem data storage 124 and thesystem data 125 therein to serve requests of thecustomer systems 112. Thetenant data 123 might be divided into individualtenant storage areas 138, which may be either a physical arrangement and/or a logical arrangement of data. Within eachtenant storage area 138, thecustomer storage 140 and theapplication metadata 142 might be similarly allocated for each customer. For example, a copy of a customer's most recently used (MRU) items might be stored to thecustomer storage 140. Similarly, a copy of MRU items for an entire organization that is a tenant might be stored to thetenant storage area 138. TheUI 144 provides a user interface and theAPI 146 provides an application programmer interface to thesystem 116 resident processes to customers and/or developers at thecustomer systems 112. The tenant data and the system data may be stored in various databases, such as one or more databases. - The
application platform 118 includes theapplication setup mechanism 152 that supports application developers' creation and management of applications, which may be saved as metadata into thetenant data storage 122 by the saveroutines 150 for execution by subscribers as one or moretenant process spaces 134 managed by thetenant management process 136 for example. Invocations to such applications may be coded using the PL/SOQL 148 that provides a programming language style interface extension to theAPI 146. A detailed description of some PL/SOQL language embodiments is discussed in commonly owned U.S. Pat. No. 7,730,478, filed Sep. 21, 2007, entitled, “Method and system for allowing access to developed applications via a multi-tenant on-demand database service ,” which is incorporated in its entirety herein for all purposes. Invocations to applications may be detected by one or more system processes, which manages retrieving theapplication metadata 142 for the subscriber making the invocation and executing the metadata as an application in a virtual machine. - Each
application server 130 may be communicably coupled to database systems, e.g., having access to thesystem data 125 and thetenant data 123, via a different network connection. For example, one application server 130-1 might be coupled via the network 114 (e.g., the Internet), another application server 130-N might be coupled via a direct network link, and another application server 130-N might be coupled by yet a different network connection. Transfer Control Protocol and Internet Protocol (TCP/IP) are typical protocols for communicating betweenapplication 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. - In certain embodiments, each
application server 130 is configured to handle requests for any user associated with any organization that is a tenant. Because it is desirable to be able to add and remove application servers from the server pool at any time for any reason, there is no server affinity for a customer and/or organization to aspecific application server 130. In one embodiment, therefore, an interface system implementing a load balancing function (e.g., an F5 Big-IP load balancer) is communicably coupled between theapplication servers 130 and thecustomer systems 112 to distribute requests to theapplication servers 130. In one embodiment, the load balancer uses a least connections algorithm to route customer requests to theapplication servers 130. Other examples of load balancing algorithms, such as round robin and observed response time, also may be used. For example, in certain embodiments, three consecutive requests from the same customer could hit threedifferent application servers 130, and three requests from different customers could hit thesame application server 130. In this manner, thesystem 116 is multi-tenant, wherein thesystem 116 handles storage of, and access to, different objects, data and applications across disparate customers and organizations. - As an example of storage, one tenant might be a company that employs a sales force where each salesperson uses the
system 116 to manage their sales process. Thus, a customer might maintain contact data, leads data, consumer follow-up data, performance data, goals and progress data, etc., all applicable to that customer's personal sales process (e.g., in the tenant data storage 122). In an example of a MTS arrangement, since all of the data and the applications to access, view, modify, report, transmit, calculate, etc., may be maintained and accessed by a customer system having nothing more than network access, the customer can manage his or her sales efforts and cycles from any of many different customer systems. For example, if a salesperson is visiting a customer and the customer has Internet access in their lobby, the salesperson can obtain critical updates as to that customer while waiting for the customer to arrive in the lobby. - While each user's data might be separate from other users' data regardless of the employers of each user, some data might be organization-wide data shared or accessible by a plurality of users or all of the users for a given organization that is a tenant. Thus, there might be some data structures managed by the
system 116 that are allocated at the tenant level while other data structures might be managed at the user level. Because an MTS might support multiple tenants including possible competitors, the MTS should have security protocols that keep data, applications, and application use separate. Also, because many tenants may opt for access to an MTS rather than maintain their own system, redundancy, up-time, and backup are additional functions that may be implemented in the MTS. In addition to user-specific data and tenant specific data, thesystem 116 might also maintain system level data usable by multiple tenants or other data. Such system level data might include industry reports, news, postings, and the like that are sharable among tenants. - In certain embodiments, the customer systems 112 (which may be client systems) communicate with the
application servers 130 to request and update system-level and tenant-level data from thesystem 116 that may require sending one or more queries to thetenant data storage 122 and/or thesystem data storage 124. The system 116 (e.g., anapplication server 130 in the system 116) automatically generates one or more SQL statements (e.g., one or more SQL queries) that are designed to access the desired information. Thesystem data storage 124 may generate query plans to access the requested data from the database. - Each database can generally be viewed as a collection of objects, such as a set of logical tables, containing data fitted into predefined categories. A “table” is one representation of a data object, and a table 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 logically arranged as columns or fields in a viewable schema. Each row or record of a table contains an instance of data for each category defined by the fields. For example, a CRM database may include a table that describes a customer with fields for basic contact information such as name, address, phone number, fax number, etc. Another table might describe a purchase order, including fields for information such as customer, product, sale price, date, etc. In some multi-tenant database systems, standard entity tables might be provided for use by all tenants. For CRM database applications, such standard entities might include tables for Account, Contact, Lead, and Opportunity data, each containing pre-defined fields. It should be understood that the word “entity” may also be used interchangeably herein with “object” and “table”.
- In some multi-tenant database systems, tenants may be allowed to create and store custom objects, or they may be allowed to customize standard entities or objects, for example by creating custom fields for standard objects, including custom index fields. U.S. Pat. No. 7,779,039, filed Apr. 2, 2004, entitled “Custom Entities and Fields in a Multi-Tenant Database System,” is hereby incorporated herein by reference. In certain embodiments, for example, all custom entity data rows are stored in a single multi-tenant physical table, which may contain multiple logical tables per organization. It is transparent to customers that their multiple “tables” are in fact stored in one large table or that their data may be stored in the same table as the data of other customers.
- Customer, company, or client as referred to interchangeably herein refers to companies that subscribe to CRM services. For example, companies such as Crocs™ may subscribe to CRM services and are referred to as customers herein. Consumers as referred to herein refers to individuals that purchase products or services from the customers, e.g., from customer websites, customer stores, or in-person sales by the customers.
-
FIG. 2 illustrates an integratedenterprise commerce architecture 201 according to an embodiment of the disclosure.Architecture 201 is part ofsystem 116 andenvironment 110 inFIGS. 1A-1B . - In
FIG. 2 ,raw event bus 200 receives raw events 202-1 through 202-7 from a number of sources. For example,raw event bus 200 receives data from, including but not limited to, a customer's webpage 204 (e.g., clicks by consumers on webpage 204), from computational devices 206 (e.g., consumer laptops or desktops), mobile devices 208 (e.g., consumer smart phones and tablets),devices 210 with Internet of Things 224 (IoT) capability,core database 214, marketing cloud (“MC”) 216, and commerce cloud (“CC”) 218. In an example, if a customer clicks on an item oncustomer website 204 to view the item, a customer adds an item to an online cart, or if a customer removes an item from the 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, andIOT 224 are used to determine which events get transmitted to theraw event bus 200. Customer and client devices can publish raw events onto theraw event bus 200 by sending the raw events to a certain Internet Protocol (IP) address such as rawevents.salesforce.com. - Raw events are typically high volume, low quality data. Embodiments presented herein convert high volume, low quality data into lower volume, higher quality data. Conventionally, administrators had to produce code to convert the high volume, low quality data into lower volume, higher quality data. The embodiments presented herein provide point-and-click software to perform this function thereby significantly reducing time and cost required for such conversions.
-
Raw events calculators 226 include a number of modules such as marketing cloud predictive intelligence (MC PI) 228, commerce cloud predictive intelligence (CC PI) 230, andKrux 232 for sorting raw events received via theraw event bus 200 and convert the high volume, low quality data into lower volume, higher quality data. For example,MC PI 228 parses events from theraw event bus 200 to determine what is being added by a consumer into an online checkout cart or removed from the online checkout cart. 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 adds items to a cart but doesn't checkout and complete the transaction,MC PI 228 will publish an abandoned cart event on the Enterprise Messaging Platform (EMP)bus 234. Similarly, if a cart has not seen an event such as an addition or deletion for a certain programmable period of time, then theMC PI 228 will put the event on theEMP bus 234.Raw Event Bus 200 andEMP bus 234 could be one big bus. However,Raw Event Bus 200 processes raw events, which can have high data volume and may not directly go to any customer or application, whileEMP bus 234 processes business event, which can have more transactional details. Moreover,Raw Event Bus 200 can only define who has access to it or not, butEMP bus 234 has a security model that can define “who is allowed to get what events when”.EMP bus 234 can provide a common abstraction layer for disparate, different customers and a common shared bus for events across different systems. Any events going ontoEMP bus 234 can go to any systems encircling the platform. But different customers and different systems can't communicate directly with each other throughEMP bus 234. The events onEMP bus 234 are securely isolated from each other. -
EMP bus 234 allows for event publish/event subscribe rules. The event publish/event subscribe rules provide for what event can be published to theEMP bus 234 by a customer, what event can be subscribed to on theEMP bus 234 by the customer, and what happens when a customer subscribes to a particular event on theEMP bus 234. When setting up publications rules, a filter criteria can be applied for a given event to limit how it's shared, such as only publishing PersonAccounts with RecordType as “EMEA”. And for a given event, the payload can be enriched with additional information before publishing toEMP bus 234. For example, RecordType information is added to a given customer data change (CDC) event so subscribers can apply filters. Similarly, when setting up subscription rules, a filter criteria can be applied when retrieving events off theshare EMP 234. For example, a filter criteria can be set up to only process PersonAccount with RecordType of “NorthAmerica”.EMP bus 234 can provide customer trigger events that can be used to produce an action. Taking the abandoned cart as an example, after an abandoned cart event is published onEMP bus 234, it can be subscribed to and retrieved offEMP bus 234. The abandoned cart event can be the trigger event. And an email action can be produced to remind the consumer who has abandoned the cart. - Event router/
buffer 236 provides support for the event publish/event subscribe rules. The events published onEMP bus 234 are in chronological order and events exceeding a certain period of time, such as 72 hours, can be dropped off. So newly published events can push previously published events down, for example, to the left as shown inFIG. 2 . Different customers can subscribe to the events onEMP bus 234 at different time point of that period of time and independently from each other. For example, as shown inFIG. 2 ,Core 214 can subscribe to newly published events onEMP bus 234.EComm 254 may be brought down 24 hours for system upgrade. And afterEComm 254 is brought up, it can subscribe to events published 24 hours ago. - The event publish/event subscribe rules can define the schema, version, and security of the events. With different customers publish/subscribe to EMP bus, the efficiency for development life cycle can be improved by decoupling separate duties for different customers. For example, there is an update on
Core 214, such as publishing new version of events. Conventionally,EComm 254,OMS 256,MC 216 and 3rdParty system 258, which have one to one connection between each other to communicate with each other, need to be upgraded at the same time and brought up all at once to avoid system breakdown and process new version of events published byCore 214. WithEMP bus 234, the systems ofEComm 254,OMS 256,MC 216 and 3rdParty system 258 can be upgraded at different time afterCore 214 update, and then subscribe to the new version of events fromEMP 234 at different time point. Embodiments presented herein provide an easy to use point-and-click user interface (UI) for event publish/event subscribe rules that allows a customer's administrator to select what data is to be published to theEMP bus 234 and what data is to be subscribed from theEMP bus 234. -
CC PI 230 provides product recommendations based on a consumer's browsing history. For example, based on items a consumer has clicked on acustomer website 204, added to an online cart, or deleted from the online cart,CC PI 230, based on third party and internal data sources, can generate product recommendations. The product recommendations are placed on theEMP bus 234. -
Krux 232 segments user traffic.Krux 232 has a UI that allows tracking of user clicks and segmenting the traffic into different buckets. For example,Krux 232 may segment data, based on Krux related control tags. For example, control tags may include data such as the general location where the traffic originated from, e.g., California, or whether a consumer clicked on men's or women's items. Using data from control tags 220, Krux can segment data by location, gender, age, etc. Thus,raw event calculators 226 convert the high volume, low quality data into lower volume, higher quality data and place the filtered data onto theEMP bus 234. -
Cross-cloud Application Components 238 highlight the value of integrated systems by providing seamless experiences and access to data across systems.Cross-cloud Application Components 238 include commercejourneys event handler 240,journey builder 242,runtime components 244,virtual entities 246, andsetup UI 248. Commercejourneys event handler 240 takes action on events filtered byraw events calculator 226 and received via theEMP bus 234. For example, commercejourneys event handler 240 monitors theEMP bus 234 for abandoned cart events and generates data for an email that reminds a consumer about items left behind in the cart that the consumer might want to purchase.Journey builder 242 builds and sends the email based on data generated by commercejourneys event handler 240. - For example, when a consumer adds an item to a shopping cart, an “add cart” event is produced on
raw event bus 200.MC PI 228 starts or restarts an abandoned cart counter operation associated with the consumer's shopping cart. After a period of time passes, two days for example,MC PI 228 publishes an “abandoned cart” event on theEMP 234. Commercejourneys event handler 242 listens for “abandoned cart” events. Upon ingesting the event, commercejourneys event handler 242 requests additional information associated with the abandoned cart, such as the consumer's identity and email address, viaquery handler 264. Leveraging this information,journey builder 242 generates and transmits a communication to the consumer. For example,journey builder 242 may generate an email to remind the consumer of his or her interest in a product, or to offer a discount. The attributes for each journey can be defined by a user using point-and-click tools. In this regard, additional predictive logic may also be configured to determine journey attributes. For example, a calculator such asCC PI 230 may also provide information to commercejourneys event handler 240 viaEMP 234, such as the amount of the discount based on the consumer's commercial value to the tenant. While conventional methods require a customer's administrator to write code to parse through raw data, determine abandoned cart events, and generate an email, the embodiments presented herein transparently provide point-and-click tools that allow the generation of such emails seamlessly and transparently. Additional commerce journey events handled bycross-cloud application components 238 may include additional commerce events, such as cart remove or add. Other events may include consumer related change events, consent events such as mailing list unsubscribe, ordering events (e.g., generating an email regarding a status of an order), and other marketing events. - Runtime Components 244 (also referred to as “retail runtime UI widgets”) are a customized set of UI tools. For example,
runtime components 244 include an image frame (IFrame) UI tool (not shown) that allows for integrated display and placement of a product image into, for example, a marketing email or an email that reminds a consumer of an abandoned cart. Conventionally such an extraction of a product image would require extensive coding, however the IFrame tools allows for point-and-click extraction of such images.Runtime components 244 also include a list view tool (not shown) that provides customized views of data from other systems, likecommerce cloud 218 andmarketing cloud 216.Virtual Entities 246 provide a common query layer for integration with third party systems.Virtual entities 246 delegates todata federation service 0 provides a consistent interface for querying data across various systems. Thereby, data can be queried from multiple systems reducing complexity for a user seeking to access such systems. - Setup UI 248 (also referred to as “cross-cloud setup UI” herein) provides an integrated UI experience that allows a user to configure connectivity between different applications provided by the system. It also allows for users to map schemas and configure the Consumer Resolution Engine (CRE) 250.
Setup UI 248 permits business users to configure different applications without needing sophisticated technical capability on the part of the user. Changes made using thesetup UI 248 are saved in theMetadata Service 252 that is described further below. In an embodiment,setup UI 248 allows program developers to make their own UIs thereby providing a UI framework as a micro service to customers. -
Core 214 is a database of core products and services.Core 214 includes sales cloud, service cloud, communities services, industries services, and platform services. Whilemarketing cloud 216 andcommerce cloud 218 are shown as separate clouds, in an example,marketing cloud 216 andcommerce cloud 218 may be part ofcore 214. -
E-commerce database 254 stores information used to run a storefront web interface. Order management system (OMS) 256 is a database that stores consumer order data and handles logistics after an order is placed (e.g., shipment, returns, etc.) -
Third party systems 258 are databases and systems that belong to third parties such as an Enterprise Resource Planning (ERP) system. For example, a customer such as Adidas™, will have data that will be used by the embodiments herein to provide services such as event data analysis or generate marketing emails for consumers. - Event handlers 260-1 through 260-5 are associated with core, MC, OMS, e-commerce, and third party systems and are code that is used to read data from
EMP bus 234 or to place data ontoEMP bus 234. - Data Federation Service (DFS) 262 provides a set of connectors to plug into components of the system in order to run queries, read, write, or delete data from records.
DFS 262 provide a common query interface so customers can get data from across multiple systems. For example, a customer can run a query and get data on an online cart fromcommerce cloud 218. Conventionally a customer would have to use a system-specific Application Programming Interface (API) for thecommerce cloud 218 in order to program a query and retrieve the data. Embodiments presented herein allow the customer to forego use of the distinct APIs and provides a singular, unified API for queries across multiple disparate disconnected systems such ascore 214,E-commerce database 254,OMS 256,MC 216,third party systems 258,CRE 250 etc. In DFS, the upsert/deletehandler 268 allows for reading from and writing back to different systems. TheDFS cache 270 stores local copies of data for performance improvement.Query executors 266 manage queries by reaching out to multiple systems for parallel execution of queries.Query handler 264 handles error scenarios resulting from queries. - By providing provide a common query interface,
DFS 262 can receive a query fromvirtual entities 246 against a virtual schema, that is, a target shape that does not exist on disk.DFS 262 can then parse the query to be performed against a concrete logical schema.DFS 262 executes the query on the logical schema and provides the results to be returned through the target shape. Additionally,DFS 262 can perform a query that relies on a metadata model and transformation information stored inmetadata service 252. Thereby,DFS 262 can rewrite a query into an ad hoc language of a downstream system using the transformation information. For example, a query may be generated that includes joins or fields. Without knowing whether a downstream system supports joins,DFS 262 can execute a query by relying on the metadata model. For example, a query may seek information associated with separate domains (e.g., an order domain and a product domain). The query may seek orders, order line items, and products information associated with the respective orders. Where a traditional query may obtain such information via separate calls to the downstream system,DFS 262 is enabled bymetadata service 252 to obtain this information in a single query call. - Conventional systems are challenged with determining where to get data from for either executing queries, reading, or writing data in a multi-tenant system.
FIGS. 5 and 6 show examples of a multi-tenancy UI. The UI inFIG. 5 illustrates four clouds—commerce cloud, service cloud, sales cloud, and marketing cloud. Each instance of the cloud is referred to as a “tenant.” For example, Crocs™ has purchased one contract for a commerce cloud (“Crocs US). Crocs' US commerce cloud is an example of a tenant. Crocs has purchased three contracts for service cloud (Crocs North America, Crocs Canada, and Crocs Latin America). The three service cloud contracts comprise three distinct tenants. Similarly, Crocs has purchased a sales cloud contract and a marketing cloud contract which comprises two distinct tenants. Global Directory ofTenants 272 provides a source for managing a customer's tenants and the authentication configuration to connect to the tenant. For example, Crocs may have a service cloud tenant for North America, Canada, and Latin America. In an embodiment, global directory oftenants 272 also manages trust relationships. For example, global directory oftenants 272 can provide for rules that allow for trust between the Crocs service clouds for North America and Canada but not Latin America. Management of trust relationships also allows for compliance with privacy laws such as 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.FIGS. 5 and 6 illustrate alternate list views of tenants. For example, the UI inFIG. 5 shows that there are three service cloud tenants, and one each of marketing cloud, sales cloud, and commerce cloud. The “other data” button and the “Salesforce data” button allows a customer to add other sources of data from non-Salesforce systems, such as their own data in an ERP system, along with Salesforce CRM data. -
Metadata Service 252 provides metadata and schemas to create, edit, and store configurations for the system. Master recordcanonical models 282 provide a common exchange schema that reconciles the schema between disparate systems. For example, some records refer to a last name field as a “family name” instead of a “last name.” Master recordcanonical models 282 provide a common schema for the records, e.g., family name will be resolved to “last name.”Field mapping registry 276 connects different schemas.Entity schema registry 274 provides access to each tenant's specific schema. EMP message schemas 280 provide an event registry that defines the attributes of what kinds of events can go onto theEMP bus 234 and what kinds of events cannot go onto theEMP bus 234. CRE services metadata 284 determines howCRE 250 should operate. For example it determines howCRE 250 should match and normalize records.CRE 250 will be described in further detail below.DFS metadata 278 provides for what kind of data can be accessed, using queries, from theDFS 262. In an embodiment,Metadata Service 252 also provides support for versioning of schema metadata. For example, a user can create and save multiple distinct metadata profiles. - In an embodiment,
query handler 264 may receive a request to perform a query across multiple data sources. For example, query handler may receive a query request for consumer data. In response,query handler 264 determines a first data source and a second data source related to the query. The first data source and second data source may be from disparate systems.Query handler 264 performs the requested query by retrieving data stored in the first data source, the second data source and a common exchange schema, such as master recordcanonical model 282, to reconcile the schema between the disparate first and second data sources. - Conventional database or customer relationship management systems are not able to integrate customer data from disparate disconnected sources and create a master record for a customer without copying data to a specific system. Another issue with conventional systems is that of data provenance, i.e., determining one or more sources of data in a record. Furthermore, conventional systems have struggled with providing audit logs for data. Data provenance and audit logs are essential for complying with privacy laws. For example, if a customer wishes to edit or delete a record, they should be able to do so.
CRE 250 as described herein allows for multi-tenancy, security, and regulatory compliance. Embodiments build a holistic view of the consumer, which includes not only the data but also the context surrounding the data. Sources of data include all possible touchpoints a consumer may have with a company including both current known touchpoints or future touchpoints. Touchpoints as referred to herein include, for example, point-of-sale, customer service, marketing etc. Embodiments maintain traceability of data provenance through the system to allow for searchable profiles.CRE 250 also allows for maintaining audit logs on all inputs, operations, and access of data elements.CRE 250 also allows for administrators or “data stewards” to fully control behavior of the system, monitor data quality, and modify data as needed. - Conventional systems also face the issue of integrating data with different time scales, accessing data from different sources, comparing the data, and reconciling it. Embodiments presented herein solve these problems.
CRE 250 can integrate with social media applications to gain visibility into a consumer's activities thereby providing for different consumer touchpoints. The system provides a fully integrated view of all incoming events to determine whether an event is generated by a prior consumer or a new consumer. The integrated view of a consumer allows for complete analysis of the consumer since we have reconciled data on the consumer. In contrast, conventional systems only had snippets of consumer data to work with. For example, as shown inFIG. 7 , consumer Samantha Smith may purchase an item via commerce cloud, may request a service for the purchased product via service cloud, may conduct self-service via community cloud, and may be marketed further products via marketing cloud. In addition, Samantha Smith may send a Twitter message to a company's Twitter account and also use other third party applications in relation to the company. Each of these touchpoints has data on Samantha Smith, however the data is distributed and disconnected in separate systems. Furthermore, Samantha Smith may use different names, such as Sam Smith or different email addresses for the different touchpoints. As shown inFIG. 7 , “Customer 360 via CRE” provides a unified view for consumer Samantha Smith by reconciling data from all the touchpoints and creating a master record for Samantha Smith. In addition, CRE provides for data provenance by keeping a record of where the data came from such as tenant record linkages, digital identity linkages, and third party identity linkages. Further details and examples of customer record reconciliation may be found in U.S. patent application Ser. No. 15/940,419, filed Mar. 29, 2018 and U.S. patent application Ser. No. 15/940,448, filed Mar. 29, 2018, both of which are incorporated by reference herein in their respective entireties. - The unified view of a consumer's reconciled data allows for analysis of the consumer's behavior for future service and marketing. For example, a customer may be tweeting a company's Twitter account, making a Facebook post related to the company, viewing a website where the company's advertisement is placed, visit the company's store, or use an Internet of Things (IOT) devices such as a washer/dryer that is linked to the company. In addition data provenance allows for determination of whether consumer data, such as an email, can be used for marketing or other purposes without triggering privacy issues.
- Turning to
FIG. 3 ,data sources 300 represent data acquisition.Data sources 300 can include any data source such ascommerce cloud 218,marketing cloud 216, orthird party system 258. Data fromdata sources 300 can flow from all of the data sources intoCRE 250 in real-time via an event bus. -
Stream processor 302 processes streaming data streams coming in and going out. All streaming data is dealt withinside stream processor 302.Stream processor 302 includesaudit handler 304 which provides data provenance and auditing capabilities.Metrics handler 306 provides operational metrics, e.g., how many new customers, how many updates etc.Event handler 308 monitors streaming data flowing in and transforms the data into canonical format. In other words,event handler 308 transforms the data structure of incoming and outgoing data to allow for processing in the correct contextual format. An example of data mapping and transformation can be found in U.S. patent application Ser. No. 16/037,435, filed Jul. 17, 2018, which is incorporated by reference herein in its entirety. -
Audit handler 304 may perform an operation to determine whether to act on an update. For example, when a new event is triggered,audit handler 304 may identify and record the specific change that has occurred and decide whether to forward the update to a later stage for processing. Thereby,audit handler 304 determines whether streaming data requires additional processing based on context information associated with the streaming data. In an embodiment,audit handler 304 may transmit information associated with this determination or the context information downstream. - Transformation rules can be defined by canonical information about an event ingested by stream processor. As events reach
stream processor 302 fromEMP 234, context information such as the tenant or other metadata about events permitsaudit handler 304 to make logic decisions. Such decisions may predict information about how the data will arrive, even prior to ingesting the event. Such logic information can determine a transformation rule to be applied bystream processor 302. - In certain embodiments, data may be handled by
audit handler 304 may have disparate shape or content, either when data is ingested from a single or multiple data sources. For example,stream processor 302 may ingest data having a country field, where the country field may have disparate data types or content.Audit handler 304 may make logic decisions about the data based on metadata about the tenant or other context information. A transformation rule may be applied to the data. Thus, instead of relying on external customization customer development, the metadata can be leveraged to apply proper transformation rules when data is ingested and ultimately directed toCRE engine 314. -
Change publisher 310 publishes updates to a master profile of a customer ontoEMP bus 234. For example, if a link or an email address is added to a profile, then the update is sent to whoever subscribes to that customer onEMP bus 234.Data buffer 312 buffers data betweenstream processor 302 andCRE engine 314. -
CRE engine 314 includesdata preparation module 316 where incoming data is normalized. For example, depending on the source of the data, addresses or phone numbers might be in the wrong format or incomplete.Data preparation module 316 also enriches the data by, for example, adding area or country code that may be missing.Match module 318 determines for each record whether there are connections to existing master profiles. For example, a person associated with a service record from service cloud can be matched to the same person associated with a guest checkout commerce record. Thus,match module 318 makes edges to connect disconnected records. -
CRE engine 314 can receive and associate different consumer data records from disparate data sources related directed to an individual consumer.Match module 318 formats the consumer records received from disparate data sources into a standard format and matches the consumer data with existing records based on at least one transformation rule. Furthermore,CRE engine 314 can create a master record for the consumer in such manner, using the formatted data and existing records associated with the individual consumer. - As described above with respect to
FIG. 7 , different records for Samantha Smith in different sources may be connected by match module. Matching rules are configured and optimized to create a single record out of multiple records.Match module 318 uses a configurable set of criteria to determine a matching record in a canonical data model. Embodiments of UIs allow an administrator to setup and configure matching rules. The matching rules are composed of criteria and a combination of conditions that can be used for matching. Data mapping can allow an administrator to write code to resolve mismatches in field type between customer data and the canonical format. -
Resolution module 320 analyzes connections between records to determine which records should be clustered.Reconciliation module 322 creates the master record using the cluster of different records. It also allows for configuration of a specific value in a master profile, e.g., the desired email address for a person. For example, the “Customer 360 via CRE” record inFIG. 7 is created byreconciliation module 322 using the other records from, e.g., commerce cloud, sales cloud, third party sources etc. Different rules for data reconciliation can be entered along with primary and secondary tiebreaker rules when there are multiple matches. -
CRE control plane 324 manages the orchestration of data flows between the parts of the CRE system, as well as error handling should issues occur in a particular part of the system.Batch orchestration module 326 oversees batch processing by making sure that all files are in the correct location, processing resources are available, and provides notifications when processing is done.Streaming orchestration module 328 makes sure that theCRE 250 is listening to the right Enterprise Messaging Platform channels and publishing to the right channels.Failure recovery module 330 manages the failures in the system and may allocate resources in another data center upon failure. Systemwide ops module 332 starts and stops software components of the system. In an example,CRE control plane 324 may also do hardware capacity provisioning in an elastic infrastructure. -
Customer hub 334 is where all the master profiles, including audit data, metrics data and record linkages are stored.Customer hub 334 also stores elements of the data that would be used for a profile, e.g., linkages or customer contact data coming in from commerce cloud or service cloud. -
CRE data 336 includesCRE API 338.CRE API 338 includesdata stewardship module 340.Data stewardship module 340 allows a customer or administrator to edit or delete a master record. For example, for compliance with privacy laws, like GDPR, if a consumer wants their information deleted, then data stewardship module can be used to delete the consumer's record incustomer hub 334.Data stewardship module 340 also gives a user visibility to audit and metrics data. The UI for data stewardship can provide information such as whether records are still flowing in and at what rate, how many records are giving errors, and what methodology (e.g., fuzzy matching or exact match) is being used to match the records.Data stewardship module 340 also allows a customer to run queries against profiles and determine the source for the data in the profile. For example,data stewardship module 340 permits a user to manage, through a user interface, data based on a priority level for incoming requests, the type of request, and the requester amongst other fields. The user interface can display a request type, such as “privacy delete” along with notes from the requestor.Data stewardship module 340 further permits a user to merge flagged records into a single profile record.Data stewardship module 340 allows the user to perform a search of records based on data included therein. -
CRE export module 342 is used for data analytics and for moving large datasets out ofcustomer hub 334 for external use.CRE search module 344 provides synchronous access tocustomer hub 334. For example,CRE search module 344 allows a customer to search for a candidate list of master profiles. It also allows for real-time queries and lookup. If an administrator wants to put data fromcustomer hub 334 onto a webpage, then CRE search module is used to run queries in order to render the webpage.CRE data 336 also provides search results to queries coming fromDFS 262 viaDFS CRE connector 346. As described above,DFS 262 queries across tenants and across the entire CRM system. -
Hbase 348 in addition to includingcustomer hub 334 includes configuration data 350,metrics data 352, andaudit data 354. HBase may be NoSQL technology that is used as the storage layer of the customer hub. Configuration data 350 stores the rules for data preparation, match, resolution, and reconciliation as used inCRE engine 314.Metrics data 352 stores data received frommetrics handler 306.Audit data 354 stores audit data. -
Setup module 356 is a UI application for cloud-related services.Reporting module 358 provides operational status of the system to help customers make decisions.Reporting module 358 lets customers determine that master consumer profiles are being built the way they want them to.Reporting module 358 also provides feedback on how the system is operating. External loadinganalytics visualization module 360 allows a customer to export and visualize data in their preferred format, e.g., as a graph or a chart. -
FileForce 362 stores files forbatch output 364 andbatch input 366.Batch input 366 includes all previously stored data on a customer that can be merged with streaming data fromstream processor 302 byCRE engine 314.Batch output 364 is the refined customer data received fromCRE engine 314. Data inbatch input 366 andbatch output 364 may be stored in a “csv” format. - It is to be appreciated that one of 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 is to be appreciated that certain elements with the same identifying number are shown in different places in the figures for ease of illustration. These are however the same element.
- Various embodiments may be implemented using one or more well-known computer systems, such as
computer system 400 shown inFIG. 4 . One ormore computer systems 400 may be used, for example, to implement any of the embodiments discussed herein, as well as combinations and sub-combinations thereof. -
Computer system 400 may include one or more processors (also called central processing units, or CPUs), such as aprocessor 404.Processor 404 may be connected to a communication infrastructure orbus 406. -
Computer system 400 may also include user input/output device(s) 403, such as monitors, keyboards, pointing devices, etc., which may communicate withcommunication infrastructure 406 through user input/output interface(s) 402. - One or more of
processors 404 may be a graphics processing unit (GPU). In an embodiment, a GPU may be a processor that is a specialized electronic circuit designed to process mathematically intensive applications. The GPU may have a parallel structure that is efficient for parallel processing of large blocks of data, such as mathematically intensive data common to computer graphics applications, images, videos, etc. -
Computer system 400 may also include a main (or primary)memory 408, such as random access memory (RAM).Main memory 408 may include one or more levels of cache.Main memory 408 may have stored therein control logic (i.e., computer software) and/or data. -
Computer system 400 may also include one or more secondary storage devices ormemory 410.Secondary memory 410 may include, for example, ahard disk drive 412 or a removable storage device or drive 414.Removable storage drive 414 may be a floppy disk drive, a magnetic tape drive, a compact disk drive, an optical storage device, tape backup device, or any other storage device/drive. -
Removable storage drive 414 may interact with aremovable storage unit 418.Removable storage unit 418 may include a computer usable or readable storage device having stored thereon computer software (control logic) or data.Removable storage unit 418 may be a floppy disk, magnetic tape, compact disk, DVD, optical storage disk, or any other computer data storage device.Removable storage drive 414 may read from or write toremovable storage unit 418. -
Secondary memory 410 may include other means, devices, components, instrumentalities, or other approaches for allowing computer programs or other instructions or data to be accessed bycomputer system 400. Such means, devices, components, instrumentalities, or other approaches may include, for example, aremovable storage unit 422 and aninterface 420. Examples of theremovable storage unit 422 and theinterface 420 may include a program cartridge and cartridge interface (such as that 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 any other removable storage unit and associated interface. -
Computer system 400 may further include a communications ornetwork interface 424. Communications interface 424 may enablecomputer system 400 to communicate and interact with any combination of external devices, external networks, external entities, etc. (individually and collectively referenced by reference number 428). For example,communications interface 424 may allowcomputer system 400 to communicate with external orremote devices 428 over communications path 426, which may be wired or wireless (or a combination thereof), and which may include any combination of LANs, WANs, the Internet, etc. Control logic or data may be transmitted to and fromcomputer system 400 via communications path 426. -
Computer system 400 may also be any of a personal digital assistant (PDA), desktop workstation, laptop or notebook computer, netbook, tablet, smart phone, smart watch or other wearable, appliance, part of the Internet-of-Things, or embedded system, to name a few non-limiting examples, or any combination thereof. -
Computer system 400 may be a client or server, accessing or hosting any applications or data through any delivery paradigm, including but not limited to remote or distributed cloud computing solutions; local or on-premises software (“on-premise” 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 as a service (FaaS), backend as a service (BaaS), mobile backend as a service (MBaaS), infrastructure as a service (IaaS), etc.); or a hybrid model including any combination of the foregoing examples or other services or delivery paradigms. - Any applicable data structures, file formats, and schemas in
computer system 400 may be derived from standards including but not limited to JavaScript Object Notation (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 alone or in combination. Alternatively, proprietary data structures, formats or schemas may be used, either exclusively or in combination with known or open standards. - In some embodiments, a tangible, non-transitory apparatus or article of manufacture comprising a tangible, non-transitory computer useable or readable medium having control logic (software) stored thereon may also be referred to herein as a computer program product or program storage device. This includes, but is not limited to,
computer system 400,main memory 408,secondary memory 410, andremovable storage units - Based on the teachings contained in this disclosure, it will be apparent to persons skilled in the relevant art(s) how to make and use embodiments of this disclosure using data processing devices, computer systems, or computer architectures other than that shown in
FIG. 4 . In particular, embodiments can operate with software, hardware, and/or operating system implementations other than those described herein. - It is to be appreciated that the Detailed Description section, and not any other section, is intended to be used to interpret the claims. Other sections can set forth one or more but not all exemplary embodiments as contemplated by the inventor(s), and thus, are not intended to limit this disclosure or the appended claims in any way.
- While this disclosure describes exemplary embodiments for exemplary fields and applications, it should be understood that the disclosure is not limited thereto. Other embodiments and modifications thereto are possible, and are within the scope and spirit of this disclosure. For example, and without limiting the generality of this paragraph, embodiments are not limited to the software, hardware, firmware, or entities illustrated in the figures or described herein. Further, embodiments (whether or not explicitly described herein) have significant utility to fields and applications beyond the examples described herein.
- Embodiments have been described herein with the aid of functional building blocks illustrating the implementation of specified functions and relationships thereof. The boundaries of these functional building blocks have been arbitrarily defined herein for the convenience of the description. Alternate boundaries can be defined as long as the specified functions and relationships (or equivalents thereof) are appropriately performed. Also, alternative embodiments can perform functional blocks, steps, operations, methods, etc. using orderings different than those described herein.
- References herein to “one embodiment,” “an embodiment,” “an exemplary embodiment,” or similar phrases, indicate that the embodiment described can include a particular feature, structure, or characteristic, but every embodiment cannot necessarily include the particular feature, structure, or characteristic. Moreover, such phrases are not necessarily referring to the same embodiment. Further, when a particular feature, structure, or characteristic is described in connection with an embodiment, it would be within the knowledge of persons skilled in the relevant art(s) to incorporate such feature, structure, or characteristic into other embodiments whether or not explicitly mentioned or described herein. Additionally, some embodiments can be described using the expression “coupled” and “connected,” along with their derivatives. These terms are not necessarily intended as synonyms for each other. For example, some embodiments can 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. The term “coupled,” however, can also mean that two or more elements are not in direct contact with each other, but yet still co-operate or interact with each other.
- The breadth and scope of this 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 (20)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/264,464 US20200097468A1 (en) | 2018-09-24 | 2019-01-31 | Integrated entity view across distributed systems |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201862735552P | 2018-09-24 | 2018-09-24 | |
US16/264,464 US20200097468A1 (en) | 2018-09-24 | 2019-01-31 | Integrated entity view across distributed systems |
Publications (1)
Publication Number | Publication Date |
---|---|
US20200097468A1 true US20200097468A1 (en) | 2020-03-26 |
Family
ID=69883429
Family Applications (4)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/264,484 Active US10936582B2 (en) | 2018-09-24 | 2019-01-31 | Integrated entity view across distributed systems |
US16/264,464 Pending US20200097468A1 (en) | 2018-09-24 | 2019-01-31 | Integrated entity view across distributed systems |
US16/264,470 Active 2039-07-03 US11366805B2 (en) | 2018-09-24 | 2019-01-31 | Integrated entity view across distributed systems |
US16/264,428 Active 2039-08-06 US11366804B2 (en) | 2018-09-24 | 2019-01-31 | Integrated entity view across distributed systems |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/264,484 Active US10936582B2 (en) | 2018-09-24 | 2019-01-31 | Integrated entity view across distributed systems |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US16/264,470 Active 2039-07-03 US11366805B2 (en) | 2018-09-24 | 2019-01-31 | Integrated entity view across distributed systems |
US16/264,428 Active 2039-08-06 US11366804B2 (en) | 2018-09-24 | 2019-01-31 | Integrated entity view across distributed systems |
Country Status (1)
Country | Link |
---|---|
US (4) | US10936582B2 (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20220335106A1 (en) * | 2021-04-15 | 2022-10-20 | Copyright Clearance Center, Inc. | Cloud-native content management system |
US11803555B2 (en) | 2018-09-24 | 2023-10-31 | Salesforce, Inc. | Integrated entity view across distributed systems |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20210182880A1 (en) * | 2019-12-13 | 2021-06-17 | Cross Commerce Media, Inc. | Intelligent write back for customer relationship management |
US11182218B2 (en) * | 2019-12-31 | 2021-11-23 | Vmware, Inc. | Method and apparatus for orchestrating cross-FaaS provider functions declaratively |
US11824837B2 (en) * | 2020-07-15 | 2023-11-21 | Sap Se | End user creation of trusted integration pathways between different enterprise systems |
US11741119B2 (en) | 2021-01-26 | 2023-08-29 | Salesforce, Inc. | Canonical data model for distributed data catalog and metadata exchange |
AU2022254512A1 (en) * | 2021-04-09 | 2023-10-26 | Truata Limited | System and method for privacy-preserving analytics on disparate data sets |
US11836150B2 (en) | 2021-06-23 | 2023-12-05 | Salesforce, Inc. | System and architecture for standardizing and centralizing data movement between systems |
US20240086380A1 (en) * | 2022-09-08 | 2024-03-14 | Jpmorgan Chase Bank, N.A. | Method and system for providing data quality capability within distributed data lakes |
US12039312B2 (en) | 2022-09-19 | 2024-07-16 | Salesforce, Inc. | Deployment of a multi-technology-stack application |
WO2024086407A1 (en) * | 2022-10-18 | 2024-04-25 | Mouton Bernard Behan | System and method for making event routing decisions based on a standardized messages format |
US20240168955A1 (en) * | 2022-11-23 | 2024-05-23 | Salesforce, Inc. | Multi-context stateful rule execution |
Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040139018A1 (en) * | 2000-07-13 | 2004-07-15 | Anderson Ian R | Card system |
US6941514B2 (en) * | 2001-04-30 | 2005-09-06 | Bellsouth Intellectual Property Corporation | System and method for priority-based work order scheduling |
US20090254511A1 (en) * | 2007-10-19 | 2009-10-08 | Oracle International Corporation | Privacy Management Policy Hub |
US20110173041A1 (en) * | 2010-01-11 | 2011-07-14 | Vendmore Systems, Llc | Venue product sales and networking |
US20110173119A1 (en) * | 1998-12-08 | 2011-07-14 | Yodlee.Com, Inc. | Interactive Bill Payment Center |
US20130317888A1 (en) * | 2012-05-23 | 2013-11-28 | Wal-Mart Stores, Inc. | Reporting and Management of Computer Systems and Data Sources |
US20140351205A1 (en) * | 2013-05-22 | 2014-11-27 | Dell Products, Lp | Cloud Based Master Data Management System and Method Therefor |
US20170091388A1 (en) * | 2015-09-30 | 2017-03-30 | Stratus Interoperable, Inc. | Systems and methods supporting interoperability among health record applications and data sources |
US20170278202A1 (en) * | 2016-03-25 | 2017-09-28 | Rockspoon, Inc. | Automated patron food take-out management |
US20180158000A1 (en) * | 2015-05-19 | 2018-06-07 | Benoit Fredette | System and method for managing event access rights |
US20180225345A1 (en) * | 2008-08-26 | 2018-08-09 | Zeewise, Inc. | Systems and methods for collection and consolidation of heterogeneous remote business data using dynamic data handling |
US10445382B2 (en) * | 2003-09-10 | 2019-10-15 | Thomson Reuters Global Resources Unlimited Company | Method and system for relationship management and intelligent agent |
US10552630B1 (en) * | 2015-11-30 | 2020-02-04 | Iqvia Inc. | System and method to produce a virtually trusted database record |
US11157954B1 (en) * | 2012-12-22 | 2021-10-26 | Quotient Technology Inc. | Forming and using master records based on consumer transaction data |
Family Cites Families (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5806066A (en) * | 1996-03-26 | 1998-09-08 | Bull Hn Information Systems Inc. | Method of integrating schemas of distributed heterogeneous databases |
US8412746B2 (en) * | 2001-05-25 | 2013-04-02 | International Business Machines Corporation | Method and system for federated querying of data sources |
US8255548B2 (en) * | 2002-06-13 | 2012-08-28 | Salesforce.Com, Inc. | Offline web services API to mirror online web services API |
US7464073B2 (en) * | 2003-04-10 | 2008-12-09 | International Business Machines Corporation | Application of queries against incomplete schemas |
US7779039B2 (en) | 2004-04-02 | 2010-08-17 | Salesforce.Com, Inc. | Custom entities and fields in a multi-tenant database system |
US20060155581A1 (en) * | 2005-01-10 | 2006-07-13 | George Eisenberger | Systems with user selectable data attributes for automated electronic search, identification and publication of relevant data from electronic data records at multiple data sources |
US7730478B2 (en) | 2006-10-04 | 2010-06-01 | Salesforce.Com, Inc. | Method and system for allowing access to developed applications via a multi-tenant on-demand database service |
US20080294502A1 (en) | 2007-05-25 | 2008-11-27 | Eventmobile, Inc. | System and Method for Providing Event-Based Services |
US8838592B2 (en) * | 2007-06-13 | 2014-09-16 | Mlslistings Inc. | Methods and systems for developing a data repository for heterogeneous MLS systems |
US20090089169A1 (en) | 2007-09-28 | 2009-04-02 | Google Inc. | Event Based Serving |
US20110004622A1 (en) * | 2007-10-17 | 2011-01-06 | Blazent, Inc. | Method and apparatus for gathering and organizing information pertaining to an entity |
US8442934B2 (en) * | 2010-09-22 | 2013-05-14 | Microsoft Corporation | Query and result rebinding |
US20120109663A1 (en) * | 2010-10-29 | 2012-05-03 | Southern Company Services, Inc. | Advanced Metering Infrastructure Event Filtering |
US9020981B2 (en) * | 2011-09-30 | 2015-04-28 | Comprehend Systems, Inc. | Systems and methods for generating schemas that represent multiple data sources |
US20130179400A1 (en) * | 2012-01-09 | 2013-07-11 | Morgan Stanley | Intelligent data publishing framework for common data updates in large scale networks of heterogeneous computer systems |
JP6448555B2 (en) * | 2013-02-27 | 2019-01-09 | ヒタチ ヴァンタラ コーポレーションHitachi Vantara Corporation | Content class for object storage indexing system |
US20140324503A1 (en) | 2013-04-30 | 2014-10-30 | Microsoft Corporation | Multi-source data subscriptions |
US9424289B2 (en) * | 2014-03-20 | 2016-08-23 | International Business Machines Corporation | Conforming data structure instances to schema versions |
US10104049B2 (en) | 2014-09-12 | 2018-10-16 | Vmware, Inc. | Secure distributed publish/subscribe system |
US10469584B2 (en) | 2016-09-30 | 2019-11-05 | Salesforce.Com, Inc. | Techniques and architectures for managing disparate heterogeneous cloud-based resources |
US10733613B2 (en) | 2017-01-04 | 2020-08-04 | Salesforce.Com, Inc. | Methods and systems for performing data assessment |
US11385944B2 (en) * | 2017-07-10 | 2022-07-12 | Nokia Solutions And Networks Oy | Event handling in distributed event handling systems |
US20190095481A1 (en) * | 2017-09-22 | 2019-03-28 | Microsoft Technology Licensing, Llc | Generating a query |
US20190129981A1 (en) * | 2017-10-31 | 2019-05-02 | Sap Se | Asynchronous distributed data cleansing |
-
2019
- 2019-01-31 US US16/264,484 patent/US10936582B2/en active Active
- 2019-01-31 US US16/264,464 patent/US20200097468A1/en active Pending
- 2019-01-31 US US16/264,470 patent/US11366805B2/en active Active
- 2019-01-31 US US16/264,428 patent/US11366804B2/en active Active
Patent Citations (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110173119A1 (en) * | 1998-12-08 | 2011-07-14 | Yodlee.Com, Inc. | Interactive Bill Payment Center |
US20040139018A1 (en) * | 2000-07-13 | 2004-07-15 | Anderson Ian R | Card system |
US6941514B2 (en) * | 2001-04-30 | 2005-09-06 | Bellsouth Intellectual Property Corporation | System and method for priority-based work order scheduling |
US10445382B2 (en) * | 2003-09-10 | 2019-10-15 | Thomson Reuters Global Resources Unlimited Company | Method and system for relationship management and intelligent agent |
US20090254511A1 (en) * | 2007-10-19 | 2009-10-08 | Oracle International Corporation | Privacy Management Policy Hub |
US20180225345A1 (en) * | 2008-08-26 | 2018-08-09 | Zeewise, Inc. | Systems and methods for collection and consolidation of heterogeneous remote business data using dynamic data handling |
US20110173041A1 (en) * | 2010-01-11 | 2011-07-14 | Vendmore Systems, Llc | Venue product sales and networking |
US20130317888A1 (en) * | 2012-05-23 | 2013-11-28 | Wal-Mart Stores, Inc. | Reporting and Management of Computer Systems and Data Sources |
US11157954B1 (en) * | 2012-12-22 | 2021-10-26 | Quotient Technology Inc. | Forming and using master records based on consumer transaction data |
US20140351205A1 (en) * | 2013-05-22 | 2014-11-27 | Dell Products, Lp | Cloud Based Master Data Management System and Method Therefor |
US20180158000A1 (en) * | 2015-05-19 | 2018-06-07 | Benoit Fredette | System and method for managing event access rights |
US20170091388A1 (en) * | 2015-09-30 | 2017-03-30 | Stratus Interoperable, Inc. | Systems and methods supporting interoperability among health record applications and data sources |
US10552630B1 (en) * | 2015-11-30 | 2020-02-04 | Iqvia Inc. | System and method to produce a virtually trusted database record |
US20170278202A1 (en) * | 2016-03-25 | 2017-09-28 | Rockspoon, Inc. | Automated patron food take-out management |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11803555B2 (en) | 2018-09-24 | 2023-10-31 | Salesforce, Inc. | Integrated entity view across distributed systems |
US20220335106A1 (en) * | 2021-04-15 | 2022-10-20 | Copyright Clearance Center, Inc. | Cloud-native content management system |
WO2022221671A1 (en) * | 2021-04-15 | 2022-10-20 | Copyright Clearance Center, Inc. | Cloud-native content management system |
Also Published As
Publication number | Publication date |
---|---|
US20200097456A1 (en) | 2020-03-26 |
US20200097471A1 (en) | 2020-03-26 |
US11366805B2 (en) | 2022-06-21 |
US20200097475A1 (en) | 2020-03-26 |
US10936582B2 (en) | 2021-03-02 |
US11366804B2 (en) | 2022-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10936582B2 (en) | Integrated entity view across distributed systems | |
US11803555B2 (en) | Integrated entity view across distributed systems | |
US20180096267A1 (en) | Single model-based behavior predictions in an on-demand environment | |
US10482135B2 (en) | Facilitating dynamic generation and customization of software applications at client computing devices using server metadata in an on-demand services environment | |
US20190114342A1 (en) | Entity identifier clustering | |
US20140317093A1 (en) | Facilitating dynamic creation of multi-column index tables and management of customer queries in an on-demand services environment | |
US8660881B2 (en) | Mechanism for facilitating dynamic visual workflow and task generation in an on-demand services environment | |
US10636086B2 (en) | XBRL comparative reporting | |
US10909103B2 (en) | Techniques and architectures for data field lifecycle management | |
US20140279857A1 (en) | Mechanism for facilitating dynamic integration of disparate database architectures for efficient management of resources in an on-demand services enviroment | |
US11740994B2 (en) | Systems and methods for secure data transfer between entities in a multi-user on-demand computing environment | |
US10872097B2 (en) | Data resolution system for management of distributed data | |
US11741246B2 (en) | Systems and methods for secure data transfer between entities in a multi-user on-demand computing environment | |
US9141983B2 (en) | Shared data sets combined with user-specific purchased data sets | |
US9594790B2 (en) | System and method for evaluating claims to update a record from conflicting data sources | |
US20210224254A1 (en) | Intelligent data-loader for management of data in database systems | |
US20210406936A1 (en) | Preservation of Price Calculation Data in Performance of Price Calculation Operations | |
US11803370B2 (en) | Configurable transaction status interface | |
US11461559B2 (en) | Mechanism to facilitate image translation | |
US11249752B2 (en) | Code classification mechanism | |
US20230297550A1 (en) | Dynamic data views |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE AFTER FINAL ACTION FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: ADVISORY ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
STPP | Information on status: patent application and granting procedure in general |
Free format text: FINAL REJECTION MAILED |