SlideShare a Scribd company logo
1 of 25
SUGNL 's-Hertogenbosch -Welcome
Sitecore 9 xConnect and Marketing Automation
Speakers:
Daniil Raschupkin - Lead Sitecore/.NET Developer at Brimit, Sitecore MVP
2017, Sitecore 9 Certified, MCP
Alexei Vershalovich - Managing Director at Brimit, Sitecore Team Lead &
Consultant, Sitecore 9 Certified
Daniil @danlrby Alexei @lebeg
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Sitecore 9 Partners Intro webinar
Daniil @danlrby Alexei @lebeg
Background (Sitecore 8.x Problems)
 Scalability
 Session expiration
 Contact Locks
 Extend model
 Lack of documentation
SUGNL – Sitecore xConnect
Background (Sitecore 8.x Problems)
 Scalability
 Session expiration
 Contact Locks
 Extend model
 Lack of documentation
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Edit xDB Contact (SC 8.x)
public void SetContactData(string username)
{
LeaseOwner leaseOwner = new LeaseOwner("YOUR_WORKER_NAME", LeaseOwnerType.OutOfRequestWorker);
ContactRepositoryBase contactRepository = Factory.CreateObject("contactRepository", true) as ContactRepositoryBase;
// Attempt to obtain an exclusive lock on an existing contact in xDB.
LockAttemptResult<Contact> lockResult = contactRepository.TryLoadContact(username, leaseOwner,
TimeSpan.FromMinutes(1));
Contact contact = null;
if (lockResult.Status == LockAttemptStatus.AlreadyLocked)
{
// Another worker or a live web session has an exclusive lock on the contact.
// You can't use this contact right now. It's up to you what to do in this case.
/* ... */
}
else if (lockResult.Status == LockAttemptStatus.DatabaseUnavailable)
{
// Database is down. Try to handle this gracefully.
/* ... */
}
else if (lockResult.Status == LockAttemptStatus.NotFound)
{
// A contact with the given identifier doesn't exist.
// Just create a new contact object.
contact = contactRepository.CreateContact(Guid.NewGuid());
// Identify it.
contact.Identifiers.Identifier = username;
// And make it known.
contact.Identifiers.IdentificationLevel = Sitecore.Analytics.Model.ContactIdentificationLevel.Known;
}
else
{
// We successfull locked an existing contact.
contact = lockResult.Object;
}
// Set some contact facets:
/* ... */
// Save the contact and release the lock.
if (contact != null)
{
var options = new ContactSaveOptions(release: true, owner: leaseOwner);
contactRepository.SaveContact(contact, options);
}
}
Edit Contact with xConnect
public void UpdateContact(string source, string identifier, Data data)
{
using (XConnectClient client = GetClient())
{
IdentifiedContactReference reference = new IdentifiedContactReference(source, identifier);
Contact contact = client.Get<Contact>(reference, new ContactExpandOptions(PersonalInformation.DefaultFacetKey));
if (contact == null)
{
return;
}
// Set Facets
client.SetFacet<PersonalInformation>(contact, PersonalInformation.DefaultFacetKey, personalInformation);
client.Submit();
}
}
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
New roles & services
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
https://sitecore.gallery.video/detail/videos/xconnect/video/5596004966001/xconnect---scaling
 Service Layer
 Implements oData
protocol
 Provider based
 Use xConnect to
read/write/search
 Supports sync/async
 Supports batching
 Secure
 Customizable
 Not xDB
xConnect
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Core
components
 xConnect
Collection service
 xConnect Search
service
 Automation
Operations &
Reporting
 Marketing
Operations
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
xConnect Web Api
DocumentDB
Processing
Reporting Automation
Engine
CollectionWebApi SearchWebApi
SearchCollection
Aggregation
Tracking
Automation
Operations &
Reporting
Marketing
Operations
(ReferenceData)
Reference
Data
Definitions
Processing
Search
Experience/Collection Data
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Contact
Online
Interaction
Offline
Interaction
Interaction
Interaction
Event
Event
Custom Event
Goal
Custom Goal
Custom
Outcome
Goal
Outcome
Contact
Identifier
Contact
Identifier
xConnect Facets
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
xConnect default Facets
Contact
PersonalInformation PersonalInformation
Interaction
EmailAddressList
PersonalInformation
Avatar
ContactBehaviorProfile
ProfileScore
...
IpInfo
WebVisit
ProfileScores
UserAgentInfo
LocaleInfo
...
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
xConnect
Sitecore xConnect & Marketing
Automation Demo
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
The tracker is used on Sitecore Content Delivery servers to track a contact
during a session. The tracker has its own data model which is converted
into a format for xConnect by the XConnectDataAdapter
xConnect
Anonymous
Daniil
Email
Behaviour profile
website
Contact
PersonalInformation
Facet
EmailAddressList
Facet
ContactBehavior
Profile Facet
?
Contact
Identifier Online
Interaction
Goal
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Daniil
Email
Behaviour profile
Test Drive Signup
Confirmation
Offline
Interaction
Outcome
xConnect
Daniil @danlrby Alexei @lebeg
Daniil
Email
Behaviour profile
Test Drive Signup
Confirmation
Automation
Engine
Offline
Interaction
Outcome
Email channel
interaction
Email Sent
Event
xConnect
SUGNL – Sitecore xConnect
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Daniil
Email
Behaviour profile
Dealership Center Visit
Male
Age
Desktop/Stand
Offline
Interaction
FaceApiFacet
Outcome
PersonalInformation
Facet
xConnect
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Daniil
Email
Behaviour profile
Test Drive Completed
Male
Age
Desktop/Stand
Offline
Interaction
FaceApiFacet
Outcome
PersonalInformation
Facet
xConnect
Offline
Interaction
ContactBehavior
Profile Facet
Test Drive
Goal
AutomationPlan
Enroll Facet
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Daniil
Email
Behaviour profile
Test Drive Done
Automation
Engine
Email channel
interaction
Email Sent
Event
xConnect
ListSubscriptions
Facet
AutomationPlan
Enrollm..Cache
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
AutomationPlanEnrollmentCache
Avatar
Classification
ContactBehaviorProfile
EmailAddressHistory
Emails
EngagementMeasures
ExmKeyBehaviorCache
FaceApiContactInfo
InteractionsCache
KeyBehaviorCache
ListSubscriptions
Personal
PhoneNumbers
xConnect Facets used across the demo
xConnect Api Features
• Calculated facets
• Search
• No Sitecore.ContentSearch
• xConnect Service plugins
• XdbContactEventWatcher
• Example: Batch executing, Operation completed
• Right to be forgotten
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore xConnect
Marketing Automation
 New way to create
automated campaigns
 Easy & User friendly
 Customizable
 Is a stand-alone Windows
Service/Console App/Azure
Web Job
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore Marketing Automation
Built in Action Types Classification
 Campaign Entry
 Marketing Action
 Listeners
 Decision Points
 Other
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore Marketing Automation
Automation enrollment
 Automation processing pool - A new entity (contact or
interaction) is created in xConnect
 Timeout worker - regularly evaluates all ‘Pause’ activities
 Operations API - directly, bypassing the processing pool
 Enroll contact in a plan(s)
 Register live event(s)
 Delete contact from plan(s)
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore Marketing Automation
Custom Action
 Create Activity Type backend logic and definition item
 Create Activity Type Sitecore UI and Editor (Angular, Typescript)
 Deploy Activity Type to Sitecore UI and MA engine
Custom Condition
 Implement ICondition interface
 Deploy condition definition to MA engine
Daniil @danlrby Alexei @lebeg
SUGNL – Sitecore Marketing Automation
Thank you!
Daniil @danlrby Alexei @lebeg
SUGNL

More Related Content

Similar to Sitecore 9 xConnect and Marketing Automation

The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
SPTechCon
 
Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)
Igor Moochnick
 
What's New for Data?
What's New for Data?What's New for Data?
What's New for Data?
ukdpe
 

Similar to Sitecore 9 xConnect and Marketing Automation (20)

[iOS] Networking
[iOS] Networking[iOS] Networking
[iOS] Networking
 
LINQ
LINQLINQ
LINQ
 
Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008Silverlight 2 for Developers - TechEd New Zealand 2008
Silverlight 2 for Developers - TechEd New Zealand 2008
 
Contract-driven development with OpenAPI 3 and Vert.x | DevNation Tech Talk
Contract-driven development with OpenAPI 3 and Vert.x | DevNation Tech TalkContract-driven development with OpenAPI 3 and Vert.x | DevNation Tech Talk
Contract-driven development with OpenAPI 3 and Vert.x | DevNation Tech Talk
 
Xmppforcloudcomputing
XmppforcloudcomputingXmppforcloudcomputing
Xmppforcloudcomputing
 
Hexagonal Architecture using Grails
Hexagonal Architecture using GrailsHexagonal Architecture using Grails
Hexagonal Architecture using Grails
 
Neo4j introduction
Neo4j introductionNeo4j introduction
Neo4j introduction
 
Launching Beeline with Firebase
Launching Beeline with FirebaseLaunching Beeline with Firebase
Launching Beeline with Firebase
 
JavaOne Brasil 2016: JavaEE e HTML5: da web/desktop ao mobile
JavaOne Brasil 2016: JavaEE e HTML5: da web/desktop ao mobileJavaOne Brasil 2016: JavaEE e HTML5: da web/desktop ao mobile
JavaOne Brasil 2016: JavaEE e HTML5: da web/desktop ao mobile
 
Sumeet_CV
Sumeet_CVSumeet_CV
Sumeet_CV
 
BP204 - Take a REST and put your data to work with APIs!
BP204 - Take a REST and put your data to work with APIs!BP204 - Take a REST and put your data to work with APIs!
BP204 - Take a REST and put your data to work with APIs!
 
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
The Magic Revealed: Four Real-World Examples of Using the Client Object Model...
 
Accessing loosely structured data from F# and C#
Accessing loosely structured data from F# and C#Accessing loosely structured data from F# and C#
Accessing loosely structured data from F# and C#
 
XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>XML-Free Programming : Java Server and Client Development without &lt;>
XML-Free Programming : Java Server and Client Development without &lt;>
 
Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)Ado.Net Data Services (Astoria)
Ado.Net Data Services (Astoria)
 
Web components: A simpler and faster react
Web components:  A simpler and faster reactWeb components:  A simpler and faster react
Web components: A simpler and faster react
 
Seaside - The Revenge of Smalltalk
Seaside - The Revenge of SmalltalkSeaside - The Revenge of Smalltalk
Seaside - The Revenge of Smalltalk
 
Salesforce and sap integration
Salesforce and sap integrationSalesforce and sap integration
Salesforce and sap integration
 
O365 Saturday - Deepdive SharePoint Client Side Rendering
O365 Saturday - Deepdive SharePoint Client Side RenderingO365 Saturday - Deepdive SharePoint Client Side Rendering
O365 Saturday - Deepdive SharePoint Client Side Rendering
 
What's New for Data?
What's New for Data?What's New for Data?
What's New for Data?
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf[BuildWithAI] Introduction to Gemini.pdf
[BuildWithAI] Introduction to Gemini.pdf
 
Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)Introduction to Multilingual Retrieval Augmented Generation (RAG)
Introduction to Multilingual Retrieval Augmented Generation (RAG)
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..Understanding the FAA Part 107 License ..
Understanding the FAA Part 107 License ..
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Six Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal OntologySix Myths about Ontologies: The Basics of Formal Ontology
Six Myths about Ontologies: The Basics of Formal Ontology
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot ModelMcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
Mcleodganj Call Girls 🥰 8617370543 Service Offer VIP Hot Model
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
Navigating the Deluge_ Dubai Floods and the Resilience of Dubai International...
 
Exploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with MilvusExploring Multimodal Embeddings with Milvus
Exploring Multimodal Embeddings with Milvus
 

Sitecore 9 xConnect and Marketing Automation

  • 1. SUGNL 's-Hertogenbosch -Welcome Sitecore 9 xConnect and Marketing Automation Speakers: Daniil Raschupkin - Lead Sitecore/.NET Developer at Brimit, Sitecore MVP 2017, Sitecore 9 Certified, MCP Alexei Vershalovich - Managing Director at Brimit, Sitecore Team Lead & Consultant, Sitecore 9 Certified Daniil @danlrby Alexei @lebeg
  • 2. Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect Sitecore 9 Partners Intro webinar
  • 3. Daniil @danlrby Alexei @lebeg Background (Sitecore 8.x Problems)  Scalability  Session expiration  Contact Locks  Extend model  Lack of documentation SUGNL – Sitecore xConnect
  • 4. Background (Sitecore 8.x Problems)  Scalability  Session expiration  Contact Locks  Extend model  Lack of documentation Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect
  • 5. Edit xDB Contact (SC 8.x) public void SetContactData(string username) { LeaseOwner leaseOwner = new LeaseOwner("YOUR_WORKER_NAME", LeaseOwnerType.OutOfRequestWorker); ContactRepositoryBase contactRepository = Factory.CreateObject("contactRepository", true) as ContactRepositoryBase; // Attempt to obtain an exclusive lock on an existing contact in xDB. LockAttemptResult<Contact> lockResult = contactRepository.TryLoadContact(username, leaseOwner, TimeSpan.FromMinutes(1)); Contact contact = null; if (lockResult.Status == LockAttemptStatus.AlreadyLocked) { // Another worker or a live web session has an exclusive lock on the contact. // You can't use this contact right now. It's up to you what to do in this case. /* ... */ } else if (lockResult.Status == LockAttemptStatus.DatabaseUnavailable) { // Database is down. Try to handle this gracefully. /* ... */ } else if (lockResult.Status == LockAttemptStatus.NotFound) { // A contact with the given identifier doesn't exist. // Just create a new contact object. contact = contactRepository.CreateContact(Guid.NewGuid()); // Identify it. contact.Identifiers.Identifier = username; // And make it known. contact.Identifiers.IdentificationLevel = Sitecore.Analytics.Model.ContactIdentificationLevel.Known; } else { // We successfull locked an existing contact. contact = lockResult.Object; } // Set some contact facets: /* ... */ // Save the contact and release the lock. if (contact != null) { var options = new ContactSaveOptions(release: true, owner: leaseOwner); contactRepository.SaveContact(contact, options); } } Edit Contact with xConnect public void UpdateContact(string source, string identifier, Data data) { using (XConnectClient client = GetClient()) { IdentifiedContactReference reference = new IdentifiedContactReference(source, identifier); Contact contact = client.Get<Contact>(reference, new ContactExpandOptions(PersonalInformation.DefaultFacetKey)); if (contact == null) { return; } // Set Facets client.SetFacet<PersonalInformation>(contact, PersonalInformation.DefaultFacetKey, personalInformation); client.Submit(); } } Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect
  • 6. New roles & services Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect https://sitecore.gallery.video/detail/videos/xconnect/video/5596004966001/xconnect---scaling
  • 7.  Service Layer  Implements oData protocol  Provider based  Use xConnect to read/write/search  Supports sync/async  Supports batching  Secure  Customizable  Not xDB xConnect Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect
  • 8. Core components  xConnect Collection service  xConnect Search service  Automation Operations & Reporting  Marketing Operations Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect xConnect Web Api DocumentDB Processing Reporting Automation Engine CollectionWebApi SearchWebApi SearchCollection Aggregation Tracking Automation Operations & Reporting Marketing Operations (ReferenceData) Reference Data Definitions Processing Search
  • 9. Experience/Collection Data Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect Contact Online Interaction Offline Interaction Interaction Interaction Event Event Custom Event Goal Custom Goal Custom Outcome Goal Outcome Contact Identifier Contact Identifier
  • 10. xConnect Facets Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect
  • 11. xConnect default Facets Contact PersonalInformation PersonalInformation Interaction EmailAddressList PersonalInformation Avatar ContactBehaviorProfile ProfileScore ... IpInfo WebVisit ProfileScores UserAgentInfo LocaleInfo ... Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect
  • 12. Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect xConnect Sitecore xConnect & Marketing Automation Demo
  • 13. Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect The tracker is used on Sitecore Content Delivery servers to track a contact during a session. The tracker has its own data model which is converted into a format for xConnect by the XConnectDataAdapter xConnect Anonymous Daniil Email Behaviour profile website Contact PersonalInformation Facet EmailAddressList Facet ContactBehavior Profile Facet ? Contact Identifier Online Interaction Goal
  • 14. Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect Daniil Email Behaviour profile Test Drive Signup Confirmation Offline Interaction Outcome xConnect
  • 15. Daniil @danlrby Alexei @lebeg Daniil Email Behaviour profile Test Drive Signup Confirmation Automation Engine Offline Interaction Outcome Email channel interaction Email Sent Event xConnect SUGNL – Sitecore xConnect
  • 16. Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect Daniil Email Behaviour profile Dealership Center Visit Male Age Desktop/Stand Offline Interaction FaceApiFacet Outcome PersonalInformation Facet xConnect
  • 17. Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect Daniil Email Behaviour profile Test Drive Completed Male Age Desktop/Stand Offline Interaction FaceApiFacet Outcome PersonalInformation Facet xConnect Offline Interaction ContactBehavior Profile Facet Test Drive Goal AutomationPlan Enroll Facet
  • 18. Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect Daniil Email Behaviour profile Test Drive Done Automation Engine Email channel interaction Email Sent Event xConnect ListSubscriptions Facet AutomationPlan Enrollm..Cache
  • 19. Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect AutomationPlanEnrollmentCache Avatar Classification ContactBehaviorProfile EmailAddressHistory Emails EngagementMeasures ExmKeyBehaviorCache FaceApiContactInfo InteractionsCache KeyBehaviorCache ListSubscriptions Personal PhoneNumbers xConnect Facets used across the demo
  • 20. xConnect Api Features • Calculated facets • Search • No Sitecore.ContentSearch • xConnect Service plugins • XdbContactEventWatcher • Example: Batch executing, Operation completed • Right to be forgotten Daniil @danlrby Alexei @lebeg SUGNL – Sitecore xConnect
  • 21. Marketing Automation  New way to create automated campaigns  Easy & User friendly  Customizable  Is a stand-alone Windows Service/Console App/Azure Web Job Daniil @danlrby Alexei @lebeg SUGNL – Sitecore Marketing Automation
  • 22. Built in Action Types Classification  Campaign Entry  Marketing Action  Listeners  Decision Points  Other Daniil @danlrby Alexei @lebeg SUGNL – Sitecore Marketing Automation
  • 23. Automation enrollment  Automation processing pool - A new entity (contact or interaction) is created in xConnect  Timeout worker - regularly evaluates all ‘Pause’ activities  Operations API - directly, bypassing the processing pool  Enroll contact in a plan(s)  Register live event(s)  Delete contact from plan(s) Daniil @danlrby Alexei @lebeg SUGNL – Sitecore Marketing Automation
  • 24. Custom Action  Create Activity Type backend logic and definition item  Create Activity Type Sitecore UI and Editor (Angular, Typescript)  Deploy Activity Type to Sitecore UI and MA engine Custom Condition  Implement ICondition interface  Deploy condition definition to MA engine Daniil @danlrby Alexei @lebeg SUGNL – Sitecore Marketing Automation
  • 25. Thank you! Daniil @danlrby Alexei @lebeg SUGNL

Editor's Notes

  1. xConnect implements an optimistic concurrency model. This means that contacts and facets are not locked when they are read. xConnect will throw an exception in case of conflict and return the facet that is currently in storage.
  2. Plan pulse regulator The default plan pulse regulator is the CyclicProtectionPlanPulseRegulator, which ensures that the same activity of a plan is not repeated too often in a single pulse. The default maximum number of single activity visits is 10. This will prevent an enrollment getting stuck in a fast loop in a poorly designed plan without pauses, which would starve the engine of available workers to handle work, as they’d be tied up processing an infinite loop.
  3. The segmentation engine is responsible for building a query from an ISegmentDefinition or an IContactSearchQueryFactory and returning a list of contacts or a count of contacts that match those criteria