System to manage privacy preferences
A first event stream maintains a plurality of privacy preference data from two or more customer relationship management (CRM) systems. A second event stream maintains a plurality of solicitation preference data, each solicitation preference data in the plurality of solicitation preference data determined by applying a set of rules to filter a respective privacy preference data from the plurality of privacy preference data. A request for a current solicitation preference of a client is received from a CRM system of the two or more CRM systems. One or more entries in the second event stream are accessed. The current solicitation preference of the client is determined from the one or more entries in the second event stream. The current solicitation preference associated with the client is provided to the CRM system.
1 . A method comprising:
maintaining, using a first event stream with immutable entries published by a contact master component, a plurality of privacy preference data entries derived from two or more customer relationship management (CRM) systems, wherein the immutable entries in the first event stream have timestamps identifying when a client provided respective privacy preference data to a respective CRM system;
maintaining, using a second event stream with immutable entries published by a consent engine subscribed to the first event stream, a plurality of solicitation preference data, each solicitation preference data in the plurality of solicitation preference data including a timestamp, and each solicitation preference data determined by the consent engine by applying a set of rules to filter a respective privacy preference data from the plurality of privacy preference data published by the contact master component in the first event stream wherein the consent engine receives each privacy preference data from the first event stream at least once responsive to the contact master component writing each privacy preference data to the first event stream;
responsive to receiving privacy preference data from the first event stream, the consent engine applies a set of rules to the received privacy preference data to determine solicitation preference data and publishes the solicitation preference data to the second event stream;
receiving, from a first CRM system of the two or more CRM systems, a request for a current solicitation preference of a client;
accessing one or more immutable entries in the second event stream associated with the client;
determining the current solicitation preference of the client from the immutable entries in the second event stream associated with the client based on determining a most recent timestamp of the immutable entries in the second event stream; and
providing, to the first CRM system, the current solicitation preference associated with the client.
2 . The method of claim 1 , wherein the current solicitation preference is a current email solicitation preference indicating whether the client has agreed to be solicited by email.
3 . The method of claim 1 , further comprising:
receiving first privacy preference data associated with the client from the first CRM system;
writing, to the first event stream, a first entry comprising the first privacy preference data associated with the client;
applying the set of rules to the first privacy preference data to determine first solicitation preference data associated with the client; and
writing, to the second event stream, a second entry comprising the first solicitation preference data associated with the client.
4 . The method of claim 3 , further comprising:
receiving second privacy preference data associated with the client from a second CRM system of the two or more CRM systems, the second CRM system being distinct from the first CRM system;
writing, to the first event stream, a third entry comprising the second privacy preference data associated with the client;
applying the set of rules to the second privacy preference data to determine second solicitation preference data associated with the client; and
writing, to the second event stream, a fourth entry comprising the second solicitation preference data associated with the client, the second solicitation preference data being the current solicitation preference of the client.
5 . The method of claim 1 , wherein privacy preference data comprises one or more of: communication type preference, data collection preference, data usage preference, and data sharing preference.
6 . The method of claim 5 , wherein solicitation preference data comprises one or more of: communication type solicitation preference, frequency of solicitation preference, and solicitation content type preference.
7 . The method of claim 1 , further comprising:
accessing one or more entries in the first event stream associated with the client,
determining a current privacy preference of the client from the one or more entries in the first event stream associated with the client, the current privacy preference comprising a data sharing preference; and
responsive to being permitted by the data sharing preference associated with the client, providing the current solicitation preference associated with the client to the first CRM system.
8 . The method of claim 1 , further comprising:
responsive to a real-world event, updating the set of rules, wherein the real-world event is one of a weather event, a political event, an economic event, a social event, a cultural event, a scientific event, or a legal event.
9 . A system comprising:
processing circuitry; and
memory, including instructions, which when executed by the processing circuitry, causes the processing circuitry to perform operations to:
maintain, using a first event stream with immutable entries published by a contact master component, a plurality of privacy preference data entries derived from two or more customer relationship management (CRM) systems, wherein the immutable entries in the first event stream have timestamps identifying when a client provided respective privacy preference data to a respective CRM system;
maintain, using a second event stream with immutable entries published by a consent engine subscribed to the first event stream, a plurality of solicitation preference data, each solicitation preference data in the plurality of solicitation preference data including a timestamp, and each solicitation preference data determined by the consent engine by applying a set of rules to filter a respective privacy preference data from the plurality of privacy preference data published by the contact master component in the first event stream wherein the consent engine receives each privacy preference data from the first event stream at least once responsive to the contact master component writing each privacy preference data to the first event stream;
responsive to receiving privacy preference data from the first event stream, the consent engine applies a set of rules to the received privacy preference data to determine solicitation preference data and publishes the solicitation preference data to the second event stream;
receive, from a first CRM system of the two or more CRM systems, a request for a current solicitation preference of a client;
access one or more immutable entries in the second event stream associated with the client;
determine the current solicitation preference of the client from the immutable entries in the second event stream associated with the client based on determining a most recent timestamp of the immutable entries in the second event stream; and
provide, to the first CRM system, the current solicitation preference associated with the client.
10 . The system of claim 9 , wherein the current solicitation preference is a current email solicitation preference indicating whether the client has agreed to be solicited by email.
11 . The system of claim 9 , wherein the instructions further cause the processing circuitry to:
receive first privacy preference data associated with the client from the first CRM system;
write, to the first event stream, a first entry comprising the first privacy preference data associated with the client;
apply the set of rules to the first privacy preference data to determine first solicitation preference data associated with the client; and
write, to the second event stream, a second entry comprising the first solicitation preference data associated with the client.
12 . The system of claim 11 , wherein the instructions further cause the processing circuitry to:
receive second privacy preference data associated with the client from a second CRM system of the two or more CRM systems, the second CRM system being distinct from the first CRM system;
write, to the first event stream, a third entry comprising the second privacy preference data associated with the client;
apply the set of rules to the second privacy preference data to determine second solicitation preference data associated with the client; and
write, to the second event stream, a fourth entry comprising the second solicitation preference data associated with the client, the second solicitation preference data being the current solicitation preference of the client.
13 . A non-transitory computer-readable storage medium, the non-transitory computer-readable storage medium including instructions that when executed by a computer, cause the computer to:
maintain, using a first event stream with immutable entries published by a contact master component, a plurality of privacy preference data entries derived from two or more customer relationship management (CRM) systems, wherein the immutable entries in the first event stream have timestamps identifying when a client provided respective privacy preference data to a respective CRM system;
maintain, using a second event stream with immutable entries published by a consent engine subscribed to the first event stream, a plurality of solicitation preference data, each solicitation preference data in the plurality of solicitation preference data including a timestamp, and each solicitation preference data determined by the consent engine by applying a set of rules to filter a respective privacy preference data from the plurality of privacy preference data published by the contact master component in the first event stream wherein the consent engine receives each privacy preference data from the first event stream at least once responsive to the contact master component writing each privacy preference data to the first event stream;
responsive to receiving privacy preference data from the first event stream, the consent engine applies a set of rules to the received privacy preference data to determine solicitation preference data and publishes the solicitation preference data to the second event stream;
receive, from a first CRM system of the two or more CRM systems, a request for a current solicitation preference of a client;
access one or more immutable entries in the second event stream associated with the client;
determine the current solicitation preference of the client from the immutable entries in the second event stream associated with the client based on determining a most recent timestamp of the immutable entries in the second event stream; and
provide, to the first CRM system, the current solicitation preference associated with the client.
14 . The non-transitory computer-readable storage medium of claim 13 , wherein the current solicitation preference is a current email solicitation preference indicating whether the client has agreed to be solicited by email.