10 update info about possible personal data in url tracked in Interactions collection
source | link
  • Core database, if you use membership tables to store users profiles.
  • SQL Forms/WFFM db (if you use WFFM with SQL provider). Sitecore saves every submitted form to db, but you can disable this behaviour in forms settings, if you don't want to save personal data from the form fields.
  • xDB in Collections:
    • Identifiers, for example if you use email address as an identifier.
    • Contacts. For identified contacts it contains facets like: Personal, Emails, Addresses, etc, but also IDs from List Manager in Tags.Entries.ContactLists (for example EXM opt-in and opt-out list).
    • Interactions, for example EXM events like open(open email, open landing page, etc) contain data used for placeholders, like first name, last name and email address. Also you should check if personal data is not used in url (in query string parameters) cause it may all be tracked by Sitecore and stored in the collection. 
    • AutomationStates, for campaings triggered by EXM, Sitecore stores recipient email addres here in CustomValues.ScExm.Email.
    • FormData (if you use WFFM with MongoDb provider) Sitecore will store submitted forms data in this collection.
  • Sitecore Analytics index: Sitecore keeps copy of xDB data in Sitecore analytics index. Analytics index is used in list manager, list of contacts in experience profile, or reports in EXM.
  • Reporting database, Contacts table contains Identifiers (in ExternalUser column) and IDs of lists from List Manager (in ContactTags column).
  • Core database, if you use membership tables to store users profiles.
  • SQL Forms/WFFM db (if you use WFFM with SQL provider). Sitecore saves every submitted form to db, but you can disable this behaviour in forms settings, if you don't want to save personal data from the form fields.
  • xDB in Collections:
    • Identifiers, for example if you use email address as an identifier.
    • Contacts. For identified contacts it contains facets like: Personal, Emails, Addresses, etc, but also IDs from List Manager in Tags.Entries.ContactLists (for example EXM opt-in and opt-out list).
    • Interactions, for example EXM events like open email, open landing page, contain data used for placeholders, like first name, last name and email address.
    • AutomationStates, for campaings triggered by EXM, Sitecore stores recipient email addres here in CustomValues.ScExm.Email.
    • FormData (if you use WFFM with MongoDb provider) Sitecore will store submitted forms data in this collection.
  • Sitecore Analytics index: Sitecore keeps copy of xDB data in Sitecore analytics index. Analytics index is used in list manager, list of contacts in experience profile, or reports in EXM.
  • Reporting database, Contacts table contains Identifiers (in ExternalUser column) and IDs of lists from List Manager (in ContactTags column).
  • Core database, if you use membership tables to store users profiles.
  • SQL Forms/WFFM db (if you use WFFM with SQL provider). Sitecore saves every submitted form to db, but you can disable this behaviour in forms settings, if you don't want to save personal data from the form fields.
  • xDB in Collections:
    • Identifiers, for example if you use email address as an identifier.
    • Contacts. For identified contacts it contains facets like: Personal, Emails, Addresses, etc, but also IDs from List Manager in Tags.Entries.ContactLists (for example EXM opt-in and opt-out list).
    • Interactions, for example EXM events (open email, open landing page, etc) contain data used for placeholders like first name, last name and email address. Also you should check if personal data is not used in url (in query string parameters) cause it may all be tracked by Sitecore and stored in the collection. 
    • AutomationStates, for campaings triggered by EXM, Sitecore stores recipient email addres here in CustomValues.ScExm.Email.
    • FormData (if you use WFFM with MongoDb provider) Sitecore will store submitted forms data in this collection.
  • Sitecore Analytics index: Sitecore keeps copy of xDB data in Sitecore analytics index. Analytics index is used in list manager, list of contacts in experience profile, or reports in EXM.
  • Reporting database, Contacts table contains Identifiers (in ExternalUser column) and IDs of lists from List Manager (in ContactTags column).
9 add in-depth analysis links
source | link

Check out following blog articles for in-depth analysis of:


Check out following blog articles for in-depth analysis of:

8 add right to be informed info
source | link
  • Right to be forgotten

    Sitecore 8 prior 8.2 Update 7: Sitecore doesn't have documented API to remove data from MongoDB, but you can rather easily delete the data using standard MongoDB .Net provider shipped with the platform.
    For updating Analytics Index you can use https://github.com/vhil/helpfulcore-analytics-index-builder, or use Sitecore.ContentSearch API to search and remove documents from the index.
    If you removed user from list manager (there's no point to keep anonymous users without email address in the list), you will also need to update recipients count in list item using ListManager<TContactList, TContactData> class to keep your data consistent.
    Additionally you need to update Contacts table in SQL Reporting database for ContactId equals _id from Contacts collection.

    Sitecore 8.2 Update 7: You can execute new pipeline introduced in this version:

    var args = new Sitecore.Analytics.Pipelines.RemoveContactPiiSensitiveData.RemoveContactPiiSensitiveDataArgs(contactId);
    Sitecore.Pipelines.CorePipeline.Run("removeContactPiiSensitiveData", args);
    

    You can also look at RemovePiiSensitiveFacets processor in Sitecore.Analytics.config if you want to remove your custom facets.

    Sitecore 9: you can call ExecuteRightToBeForgotten method from XConnectClient class: https://doc.sitecore.net/developers/xp/xconnect/xconnect-client-api/contacts/right-to-be-forgotten.html

  • Right to data rectification

    You should allow the user to change personal facets in Tracker.Current.Contact.
    Alternatively in Sitecore 8 you will need to directly call ContactManager and ContactRepository to lock and update contact.

    In Sitecore 9 you can use xConnect API to modify contact data: https://doc.sitecore.net/developers/xp/xconnect/xconnect-client-api/contacts/set-contact-facet.html

  • Right to be informed

    For every version you need to implement custom message box where you inform the users about their rights and your privacy policy.

    Sitecore 8 prior 8.2 Update 7: you need to implement custom facet to store audit trail of when the contact acknowledged the organization's privacy policy.

    Sitecore 8.2 Update 7: you can use built-in GdprStatus facet to store privacy policy acknowledged info.

    Sitecore 9: ConsentInformation facet will be the good place to store privacy policy acknowledged info.

  • Right to data portability

    Sitecore 8 prior 8.2 Update 7: You can extract all the data form xDB Contacts and Interactions collections using Mongo .Net driver and export it to Json.

    Sitecore 8.2 Update 7: You can call new method in ContactRepositoryBase to export visits:

    var contactRepository = Sitecore.Configuration.Factory.CreateObject("contactRepository", true) as Sitecore.Analytics.Data.ContactRepositoryBase;
    var history = contactRepository.GetInteractionCursor(contactId, visitToLoadPerBatch, maximumSaveDate);
    


    Sitecore 9: You can use xConnect API to export contact data: https://doc.sitecore.net/developers/xp/xconnect/xconnect-client-api/contacts/export-all-contact-data.html

  • Right to be forgotten

    Sitecore 8 prior 8.2 Update 7: Sitecore doesn't have documented API to remove data from MongoDB, but you can rather easily delete the data using standard MongoDB .Net provider shipped with the platform.
    For updating Analytics Index you can use https://github.com/vhil/helpfulcore-analytics-index-builder, or use Sitecore.ContentSearch API to search and remove documents from the index.
    If you removed user from list manager (there's no point to keep anonymous users without email address in the list), you will also need to update recipients count in list item using ListManager<TContactList, TContactData> class to keep your data consistent.
    Additionally you need to update Contacts table in SQL Reporting database for ContactId equals _id from Contacts collection.

    Sitecore 8.2 Update 7: You can execute new pipeline introduced in this version:

    var args = new Sitecore.Analytics.Pipelines.RemoveContactPiiSensitiveData.RemoveContactPiiSensitiveDataArgs(contactId);
    Sitecore.Pipelines.CorePipeline.Run("removeContactPiiSensitiveData", args);
    

    You can also look at RemovePiiSensitiveFacets processor in Sitecore.Analytics.config if you want to remove your custom facets

    Sitecore 9: you can call ExecuteRightToBeForgotten method from XConnectClient class: https://doc.sitecore.net/developers/xp/xconnect/xconnect-client-api/contacts/right-to-be-forgotten.html

  • Right to data rectification

    You should allow the user to change personal facets in Tracker.Current.Contact.
    Alternatively in Sitecore 8 you will need to directly call ContactManager and ContactRepository to lock and update contact.

    In Sitecore 9 you can use xConnect API to modify contact data: https://doc.sitecore.net/developers/xp/xconnect/xconnect-client-api/contacts/set-contact-facet.html

  • Right to data portability

    Sitecore 8 prior 8.2 Update 7: You can extract all the data form xDB Contacts and Interactions collections using Mongo .Net driver and export it to Json.

    Sitecore 8.2 Update 7: You can call new method in ContactRepositoryBase to export visits:

    var contactRepository = Sitecore.Configuration.Factory.CreateObject("contactRepository", true) as Sitecore.Analytics.Data.ContactRepositoryBase;
    var history = contactRepository.GetInteractionCursor(contactId, visitToLoadPerBatch, maximumSaveDate);
    


    Sitecore 9: You can use xConnect API to export contact data: https://doc.sitecore.net/developers/xp/xconnect/xconnect-client-api/contacts/export-all-contact-data.html

  • Right to be forgotten

    Sitecore 8 prior 8.2 Update 7: Sitecore doesn't have documented API to remove data from MongoDB, but you can rather easily delete the data using standard MongoDB .Net provider shipped with the platform.
    For updating Analytics Index you can use https://github.com/vhil/helpfulcore-analytics-index-builder, or use Sitecore.ContentSearch API to search and remove documents from the index.
    If you removed user from list manager (there's no point to keep anonymous users without email address in the list), you will also need to update recipients count in list item using ListManager<TContactList, TContactData> class to keep your data consistent.
    Additionally you need to update Contacts table in SQL Reporting database for ContactId equals _id from Contacts collection.

    Sitecore 8.2 Update 7: You can execute new pipeline introduced in this version:

    var args = new Sitecore.Analytics.Pipelines.RemoveContactPiiSensitiveData.RemoveContactPiiSensitiveDataArgs(contactId);
    Sitecore.Pipelines.CorePipeline.Run("removeContactPiiSensitiveData", args);
    

    You can also look at RemovePiiSensitiveFacets processor in Sitecore.Analytics.config if you want to remove your custom facets.

    Sitecore 9: you can call ExecuteRightToBeForgotten method from XConnectClient class: https://doc.sitecore.net/developers/xp/xconnect/xconnect-client-api/contacts/right-to-be-forgotten.html

  • Right to data rectification

    You should allow the user to change personal facets in Tracker.Current.Contact.
    Alternatively in Sitecore 8 you will need to directly call ContactManager and ContactRepository to lock and update contact.

    In Sitecore 9 you can use xConnect API to modify contact data: https://doc.sitecore.net/developers/xp/xconnect/xconnect-client-api/contacts/set-contact-facet.html

  • Right to be informed

    For every version you need to implement custom message box where you inform the users about their rights and your privacy policy.

    Sitecore 8 prior 8.2 Update 7: you need to implement custom facet to store audit trail of when the contact acknowledged the organization's privacy policy.

    Sitecore 8.2 Update 7: you can use built-in GdprStatus facet to store privacy policy acknowledged info.

    Sitecore 9: ConsentInformation facet will be the good place to store privacy policy acknowledged info.

  • Right to data portability

    Sitecore 8 prior 8.2 Update 7: You can extract all the data form xDB Contacts and Interactions collections using Mongo .Net driver and export it to Json.

    Sitecore 8.2 Update 7: You can call new method in ContactRepositoryBase to export visits:

    var contactRepository = Sitecore.Configuration.Factory.CreateObject("contactRepository", true) as Sitecore.Analytics.Data.ContactRepositoryBase;
    var history = contactRepository.GetInteractionCursor(contactId, visitToLoadPerBatch, maximumSaveDate);
    


    Sitecore 9: You can use xConnect API to export contact data: https://doc.sitecore.net/developers/xp/xconnect/xconnect-client-api/contacts/export-all-contact-data.html

7 add info about Sitecore 8.2 update 7
source | link
6 correct header name
source | link
5 add info about personal data in "View Contacts" functionality in Marketing Automation
source | link
4 Add information where to set security setting to WFFM FormReport button
source | link
3 added information about Reporting database
source | link
2 added 135 characters in body
source | link
1
source | link