<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>AEP - Moses Dinakaran</title>
	<atom:link href="https://mosesdinakaran.in/category/tutorials/aep/feed/" rel="self" type="application/rss+xml" />
	<link>https://mosesdinakaran.in</link>
	<description>Tutorials and Documentations on Magento</description>
	<lastBuildDate>Mon, 16 Feb 2026 16:01:41 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.3</generator>
	<item>
		<title>Segments vs Audiences</title>
		<link>https://mosesdinakaran.in/segments-vs-audiences/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=segments-vs-audiences</link>
					<comments>https://mosesdinakaran.in/segments-vs-audiences/#respond</comments>
		
		<dc:creator><![CDATA[mosesdinakaran@gmail.com]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 15:29:11 +0000</pubDate>
				<category><![CDATA[AEP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://mosesdinakaran.in/?p=2522</guid>

					<description><![CDATA[<p>These&#160;terms&#160;are often used interchangeably, but there's a subtle&#160;distinction:Segment&#160;= The&#160;rule/definition&#160;(the&#160;logic) Audience&#160;= The&#160;resulting&#160;group of&#160;people&#160;who&#160;match&#160;that&#160;rule In&#160;AEP, when&#160;you create a "segment definition," it&#160;automatically&#160;produces&#160;an&#160;"audience." Adobe&#160;has&#160;been&#160;migrating terminology&#160;from&#160;"Segments" to "Audiences"&#160;— so&#160;in&#160;the&#160;UI&#160;you'll mostly&#160;see&#160;Audiences. 2. Types&#160;of Audiences a) Batch&#160;Audiences&#160;(Segment&#160;Builder) b) Streaming&#160;Audiences c) Edge&#160;Audiences For&#160;your capstone, you'll&#160;use&#160;Streaming&#160;for&#160;the&#160;journey&#160;trigger&#160;(react&#160;to events in&#160;real-time). 3. Segment&#160;Builder&#160;— How&#160;It&#160;Works The&#160;Segment Builder UI has&#160;these&#160;components: Key concepts&#160;in&#160;the builder: 4. Adobe&#160;Journey Optimizer (AJO) AJO is [&#8230;]</p>
<p>The post <a href="https://mosesdinakaran.in/segments-vs-audiences/">Segments vs Audiences</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>These&nbsp;terms&nbsp;are often used interchangeably, but there's a subtle&nbsp;distinction:Segment&nbsp;= The&nbsp;rule/definition&nbsp;(the&nbsp;logic)</p>



<ul class="wp-block-list">
<li>"Give me all customers who have an unpaid bill and haven't made a payment"</li>



<li>It's like a SQL WHERE clause</li>
</ul>



<p>Audience&nbsp;= The&nbsp;resulting&nbsp;group of&nbsp;people&nbsp;who&nbsp;match&nbsp;that&nbsp;rule</p>



<ul class="wp-block-list">
<li>The actual list of profiles: Alice, Bob, Carol, Frank, Grace, Iris</li>



<li>This is what gets used in journeys and campaigns</li>
</ul>



<p>In&nbsp;AEP, when&nbsp;you create a "segment definition," it&nbsp;automatically&nbsp;produces&nbsp;an&nbsp;"audience." Adobe&nbsp;has&nbsp;been&nbsp;migrating terminology&nbsp;from&nbsp;"Segments" to "Audiences"&nbsp;— so&nbsp;in&nbsp;the&nbsp;UI&nbsp;you'll mostly&nbsp;see&nbsp;Audiences.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">2. Types&nbsp;of Audiences</h2>



<h3 class="wp-block-heading">a) Batch&nbsp;Audiences&nbsp;(Segment&nbsp;Builder)</h3>



<ul class="wp-block-list">
<li>Evaluated periodically (once every 24 hours by default, or on-demand)</li>



<li>Uses the Segment Builder UI with drag-and-drop rules</li>



<li>Best for: campaigns, scheduled sends, large audiences</li>



<li>Example: "All customers with unpaid bills" — evaluated daily</li>
</ul>



<h3 class="wp-block-heading">b) Streaming&nbsp;Audiences</h3>



<ul class="wp-block-list">
<li>Evaluated in real-time as data flows in</li>



<li>Profile qualifies/disqualifies the moment an event arrives</li>



<li>Best for: time-sensitive triggers, journeys</li>



<li>Example: "Customer just received a bill" — triggers instantly</li>
</ul>



<h3 class="wp-block-heading">c) Edge&nbsp;Audiences</h3>



<ul class="wp-block-list">
<li>Evaluated on the edge network (CDN level)</li>



<li>Ultra-low latency (milliseconds)</li>



<li>Best for: same-page personalization, web/app experiences</li>
</ul>



<p>For&nbsp;your capstone, you'll&nbsp;use&nbsp;Streaming&nbsp;for&nbsp;the&nbsp;journey&nbsp;trigger&nbsp;(react&nbsp;to events in&nbsp;real-time).</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">3. Segment&nbsp;Builder&nbsp;— How&nbsp;It&nbsp;Works</h2>



<p>The&nbsp;Segment Builder UI has&nbsp;these&nbsp;components:</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="413" height="362" src="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-6.png" alt="" class="wp-image-2523" srcset="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-6.png 413w, https://mosesdinakaran.in/wp-content/uploads/2026/02/image-6-300x263.png 300w" sizes="(max-width: 413px) 100vw, 413px" /></figure>



<p><canvas width="0" height="354"></canvas><canvas width="0" height="354"></canvas>Key concepts&nbsp;in&nbsp;the builder:</p>



<ul class="wp-block-list">
<li>Attributes = Profile fields (firstName, accountStatus, churnRiskScore)</li>



<li>Events = ExperienceEvents (bill_generated, payment_received)</li>



<li>Include = Profiles that MUST match these conditions</li>



<li>Exclude = Profiles that must NOT match these conditions</li>



<li>Time window = "In last 30 days", "In last 7 days", "Any time"</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">4. Adobe&nbsp;Journey Optimizer (AJO)</h2>



<p>AJO is the tool&nbsp;that&nbsp;orchestrates&nbsp;the customer&nbsp;experience&nbsp;— it decides&nbsp;who&nbsp;gets&nbsp;what&nbsp;message,&nbsp;when, and through&nbsp;which channel.</p>



<h3 class="wp-block-heading">Core Components of&nbsp;AJO:</h3>



<h3 class="wp-block-heading">a) Journeys</h3>



<p>A&nbsp;journey is a&nbsp;multi-step, automated&nbsp;workflow&nbsp;triggered&nbsp;by an&nbsp;event&nbsp;or&nbsp;audience&nbsp;qualification.</p>



<p>Trigger&nbsp;──►&nbsp;Action&nbsp;──►&nbsp;Wait&nbsp;──►&nbsp;Condition&nbsp;──►&nbsp;Action&nbsp;──►&nbsp;End</p>



<p><canvas width="0" height="30"></canvas><canvas width="0" height="30"></canvas>Journey&nbsp;building&nbsp;blocks:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Block</th><th>Purpose</th><th>Example</th></tr></thead><tbody><tr><td>Entry</td><td>How&nbsp;profiles&nbsp;enter</td><td>Segment&nbsp;qualification, event&nbsp;trigger</td></tr><tr><td>Action</td><td>What to&nbsp;do</td><td>Send&nbsp;email, send&nbsp;SMS, send&nbsp;push, custom&nbsp;action</td></tr><tr><td>Wait</td><td>Pause</td><td>Wait&nbsp;1 day, wait until&nbsp;specific&nbsp;date</td></tr><tr><td>Condition</td><td>Branch&nbsp;logic</td><td>If&nbsp;paid&nbsp;→ exit, if&nbsp;not&nbsp;→ remind</td></tr><tr><td>End</td><td>Exit&nbsp;point</td><td>Journey&nbsp;complete</td></tr></tbody></table></figure>



<h3 class="wp-block-heading">b) Channels&nbsp;(messaging)</h3>



<p>AJO supports&nbsp;multiple&nbsp;channels:</p>



<ul class="wp-block-list">
<li>Email — rich HTML content</li>



<li>SMS — text messages</li>



<li>Push Notifications — mobile app alerts</li>



<li>In-App Messages — messages inside your app</li>



<li>Direct Mail — physical mail triggers</li>



<li>Web — on-site personalization</li>
</ul>



<h3 class="wp-block-heading">c) Messages&nbsp;/ Content</h3>



<p>Each&nbsp;action&nbsp;uses&nbsp;a&nbsp;message template&nbsp;with:</p>



<ul class="wp-block-list">
<li>Subject line / body — static + dynamic content</li>



<li>Personalization — using profile attributes like {{profile.firstName}}</li>



<li>Content decisions — powered by Offer Decisioning</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">5. Journey&nbsp;Entry&nbsp;Types</h2>



<h3 class="wp-block-heading">Read&nbsp;Audience&nbsp;(Batch)</h3>



<ul class="wp-block-list">
<li>Takes a pre-built audience and pushes all members through the journey</li>



<li>Can be one-time or recurring (daily, weekly)</li>



<li>Example: "Every day at 9am, push all unpaid-bill customers through the reminder flow"</li>
</ul>



<h3 class="wp-block-heading">Audience&nbsp;Qualification (Streaming)</h3>



<ul class="wp-block-list">
<li>Triggers when a profile enters or exits an audience</li>



<li>Real-time: as soon as profile qualifies, they enter the journey</li>



<li>Example: "The moment a customer's bill is generated, start the payment reminder flow"</li>
</ul>



<h3 class="wp-block-heading">Unitary&nbsp;Event&nbsp;(Streaming)</h3>



<ul class="wp-block-list">
<li>Triggers on a specific event for a profile</li>



<li>Most real-time option</li>



<li>Example: "When a bill_generated event arrives for CUST003, enter CUST003 into the journey"</li>
</ul>



<p>For&nbsp;your capstone, you'll likely&nbsp;use&nbsp;Unitary Event&nbsp;(triggered&nbsp;by&nbsp;bill_generated) or&nbsp;Audience Qualification.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">6. How&nbsp;It&nbsp;All Connects&nbsp;— Your&nbsp;Capstone Flow</h2>



<figure class="wp-block-image size-full"><img decoding="async" width="493" height="737" src="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-7.png" alt="" class="wp-image-2524" srcset="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-7.png 493w, https://mosesdinakaran.in/wp-content/uploads/2026/02/image-7-201x300.png 201w" sizes="(max-width: 493px) 100vw, 493px" /></figure>



<h2 class="wp-block-heading">Audience&nbsp;Compositions</h2>



<p>When&nbsp;you&nbsp;click&nbsp;Create Audience&nbsp;in AEP, you&nbsp;see&nbsp;two&nbsp;options:</p>



<ol class="wp-block-list">
<li>Build rule — Segment Builder (what we discussed)</li>



<li>Compose audience — Audience Composition</li>
</ol>



<p>Here's the difference:</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Build Rule (Segment Builder)</h3>



<ul class="wp-block-list">
<li>Define rules based on profile attributes and events</li>



<li>Example: "Customers where eventType = bill_generated AND no payment_received"</li>



<li>Produces a single audience from raw data</li>



<li>Supports streaming (real-time) evaluation</li>
</ul>



<h3 class="wp-block-heading">Compose Audience&nbsp;(Composition)</h3>



<ul class="wp-block-list">
<li>Combines existing audiences using set operations</li>



<li>Think of it as working with audiences as building blocks</li>



<li>Does NOT read raw profile/event data directly — it works with already-built audiences</li>
</ul>



<p>Composition building&nbsp;blocks:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Block</th><th>What&nbsp;it does</th><th>Example</th></tr></thead><tbody><tr><td>Audience</td><td>Start&nbsp;with an&nbsp;existing audience</td><td>"All&nbsp;Bill&nbsp;Generated&nbsp;customers"</td></tr><tr><td>Union</td><td>Combine two&nbsp;audiences&nbsp;(OR)</td><td>"Unpaid customers"&nbsp;+ "High&nbsp;churn risk&nbsp;customers"</td></tr><tr><td>Intersect</td><td>Overlap&nbsp;of&nbsp;two audiences (AND)</td><td>"Unpaid customers" who&nbsp;are&nbsp;ALSO&nbsp;"High usage"</td></tr><tr><td>Exclude</td><td>Remove&nbsp;one&nbsp;audience from&nbsp;another&nbsp;(MINUS)</td><td>"All&nbsp;billed" MINUS "All&nbsp;paid"&nbsp;= Unpaid</td></tr><tr><td>Rank</td><td>Sort and&nbsp;keep&nbsp;top N profiles</td><td>Top&nbsp;100 by&nbsp;churnRiskScore</td></tr><tr><td>Split</td><td>Divide into sub-audiences by percentage or attribute</td><td>50/50 A/B test split</td></tr><tr><td>Enrich</td><td>Add lookup&nbsp;attributes from&nbsp;a&nbsp;dataset</td><td>Add&nbsp;offer&nbsp;details&nbsp;to&nbsp;each&nbsp;profile</td></tr></tbody></table></figure>



<h2 class="wp-block-heading">7. Key&nbsp;AJO Terms Quick&nbsp;Reference</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Term</th><th>Meaning</th></tr></thead><tbody><tr><td>Journey</td><td>Automated multi-step workflow</td></tr><tr><td>Campaign</td><td>One-time or scheduled&nbsp;message&nbsp;blast&nbsp;to&nbsp;an&nbsp;audience&nbsp;(no&nbsp;branching logic)</td></tr><tr><td>Surface</td><td>Channel&nbsp;endpoint&nbsp;— email address, phone&nbsp;number, push&nbsp;token</td></tr><tr><td>Channel&nbsp;Configuration</td><td>The&nbsp;sender&nbsp;config&nbsp;(email domain, SMS number)</td></tr><tr><td>Personalization</td><td>Dynamic content using&nbsp;{{profile._acsultimatesupport.dinakara_cs_cust_firstName}}</td></tr><tr><td>Offer&nbsp;Decisioning</td><td>AI-powered system&nbsp;to&nbsp;pick&nbsp;the&nbsp;best offer&nbsp;for each customer</td></tr><tr><td>Throttling</td><td>Rate limiting to avoid&nbsp;overwhelming channels</td></tr><tr><td>Capping</td><td>Max&nbsp;messages&nbsp;per profile&nbsp;per time&nbsp;window</td></tr><tr><td>Consent</td><td>Respecting customer opt-in/opt-out preferences</td></tr></tbody></table></figure><p>The post <a href="https://mosesdinakaran.in/segments-vs-audiences/">Segments vs Audiences</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mosesdinakaran.in/segments-vs-audiences/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Merge Policy</title>
		<link>https://mosesdinakaran.in/how-data-gets-from-dataset-to-profile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-data-gets-from-dataset-to-profile</link>
					<comments>https://mosesdinakaran.in/how-data-gets-from-dataset-to-profile/#respond</comments>
		
		<dc:creator><![CDATA[mosesdinakaran@gmail.com]]></dc:creator>
		<pubDate>Mon, 16 Feb 2026 13:38:23 +0000</pubDate>
				<category><![CDATA[AEP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://mosesdinakaran.in/?p=2516</guid>

					<description><![CDATA[<p>Intro A merge&#160;policy tells&#160;AEP&#160;how&#160;to&#160;assemble one&#160;person's profile from multiple data&#160;sources. Why&#160;it&#160;exists One customer can&#160;have&#160;data&#160;spread&#160;across many&#160;datasets: Dataset&#160;1&#160;(CRM)&#160;&#160;&#160;&#160;&#160;&#160;→&#160;Alice,&#160;email,&#160;account&#160;status Dataset&#160;2&#160;(Billing)&#160;&#160;→&#160;Alice,&#160;bill&#160;amount,&#160;due&#160;date Dataset&#160;3&#160;(Usage)&#160;&#160;&#160;&#160;→&#160;Alice,&#160;9.2&#160;GB&#160;used,&#160;92% AEP needs rules to&#160;merge&#160;these&#160;into one unified profile. That's the&#160;merge&#160;policy. What&#160;it controls&#160;(3 things) Setting Question it&#160;answers Options Dataset&#160;selection Which datasets contribute&#160;to the profile? All&#160;datasets&#160;/ Selected&#160;datasets Attribute&#160;merge If&#160;two&#160;datasets disagree on a field, which wins? Timestamp ordered&#160;(newest&#160;wins) or&#160;Dataset&#160;precedence&#160;(you&#160;rank them) ID stitching [&#8230;]</p>
<p>The post <a href="https://mosesdinakaran.in/how-data-gets-from-dataset-to-profile/">Merge Policy</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">Intro</h2>



<p>A merge&nbsp;policy tells&nbsp;AEP&nbsp;how&nbsp;to&nbsp;assemble one&nbsp;person's profile from multiple data&nbsp;sources.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Why&nbsp;it&nbsp;exists</h3>



<p>One customer can&nbsp;have&nbsp;data&nbsp;spread&nbsp;across many&nbsp;datasets:</p>



<p>Dataset&nbsp;1&nbsp;(CRM)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;→&nbsp;Alice,&nbsp;email,&nbsp;account&nbsp;status</p>



<p>Dataset&nbsp;2&nbsp;(Billing)&nbsp;&nbsp;→&nbsp;Alice,&nbsp;bill&nbsp;amount,&nbsp;due&nbsp;date</p>



<p>Dataset&nbsp;3&nbsp;(Usage)&nbsp;&nbsp;&nbsp;&nbsp;→&nbsp;Alice,&nbsp;9.2&nbsp;GB&nbsp;used,&nbsp;92%</p>



<p><canvas width="0" height="66"></canvas><canvas width="0" height="66"></canvas>AEP needs rules to&nbsp;merge&nbsp;these&nbsp;into one unified profile. That's the&nbsp;merge&nbsp;policy.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">What&nbsp;it controls&nbsp;(3 things)</h3>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Setting</th><th>Question it&nbsp;answers</th><th>Options</th></tr></thead><tbody><tr><td>Dataset&nbsp;selection</td><td>Which datasets contribute&nbsp;to the profile?</td><td>All&nbsp;datasets&nbsp;/ Selected&nbsp;datasets</td></tr><tr><td>Attribute&nbsp;merge</td><td>If&nbsp;two&nbsp;datasets disagree on a field, which wins?</td><td>Timestamp ordered&nbsp;(newest&nbsp;wins) or&nbsp;Dataset&nbsp;precedence&nbsp;(you&nbsp;rank them)</td></tr><tr><td>ID stitching</td><td>How to link identities across datasets?</td><td>None&nbsp;(exact&nbsp;match only) or&nbsp;Private Graph&nbsp;(use identity graph to&nbsp;connect&nbsp;related&nbsp;IDs)</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">Simple&nbsp;analogy</h3>



<p>Think&nbsp;of building&nbsp;a puzzle&nbsp;of&nbsp;a&nbsp;person:</p>



<ul class="wp-block-list">
<li>Datasets = puzzle pieces from different boxes</li>



<li>Merge policy = the instructions that say:</li>



<li>Which boxes to use (dataset selection)</li>



<li>If two pieces overlap, which goes on top (attribute merge)</li>



<li>How to know two pieces belong to the same puzzle (ID stitching)</li>
</ul>



<h2 class="wp-block-heading">How data gets from Dataset to Profile</h2>



<p>When you ingested Alice's record, here's what happened&nbsp;behind&nbsp;the scenes:</p>



<figure class="wp-block-image size-full"><img decoding="async" width="697" height="458" src="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-5.png" alt="" class="wp-image-2520" srcset="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-5.png 697w, https://mosesdinakaran.in/wp-content/uploads/2026/02/image-5-300x197.png 300w" sizes="(max-width: 697px) 100vw, 697px" /></figure>



<p><canvas width="0" height="372"></canvas><canvas width="0" height="372"></canvas></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Dataset&nbsp;vs&nbsp;Profile&nbsp;— what's the difference?</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Concept</th><th>Dataset</th><th>Profile</th></tr></thead><tbody><tr><td>What</td><td>A&nbsp;table&nbsp;of&nbsp;raw&nbsp;records&nbsp;(like a database&nbsp;table)</td><td>A unified&nbsp;view&nbsp;of ONE&nbsp;person</td></tr><tr><td>Storage</td><td>Data Lake</td><td>Profile&nbsp;Store</td></tr><tr><td>Contains</td><td>Rows of&nbsp;data exactly&nbsp;as you&nbsp;ingested them</td><td>Merged attributes from&nbsp;ALL&nbsp;datasets&nbsp;about&nbsp;that person</td></tr><tr><td>Think&nbsp;of it as</td><td>A filing&nbsp;cabinet drawer&nbsp;full&nbsp;of papers</td><td>A complete&nbsp;dossier about one&nbsp;person, assembled&nbsp;from many&nbsp;drawers</td></tr></tbody></table></figure>



<p>Example:&nbsp;If you had&nbsp;3 datasets about Alice:</p>



<ul class="wp-block-list">
<li>customer_profile dataset → name, account, billing</li>



<li>usage_events dataset → data usage records</li>



<li>support_tickets dataset → support call history</li>
</ul>



<p>The&nbsp;Profile&nbsp;for&nbsp;CUST001 would&nbsp;combine&nbsp;ALL&nbsp;of them into one unified view of Alice.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">What is a Merge Policy?</h2>



<p>Since a Profile is assembled from&nbsp;multiple datasets, AEP needs&nbsp;rules for:</p>



<ol class="wp-block-list">
<li>Which datasets to include — maybe you only want certain datasets in the profile</li>



<li>How to handle conflicts — if two datasets have different values for the same field, which one wins?</li>
</ol>



<p>That's what&nbsp;a&nbsp;Merge Policy&nbsp;defines:</p>



<p>Merge&nbsp;Policy&nbsp;=&nbsp;"Rules&nbsp;for&nbsp;how&nbsp;to&nbsp;assemble&nbsp;a&nbsp;profile&nbsp;from&nbsp;multiple&nbsp;datasets"</p>



<p><canvas width="0" height="30"></canvas><canvas width="0" height="30"></canvas></p>



<h3 class="wp-block-heading">The&nbsp;two&nbsp;key&nbsp;settings:</h3>



<p>1. Attribute&nbsp;Merge&nbsp;(how&nbsp;to handle&nbsp;conflicts):</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Method</th><th>How&nbsp;it works</th></tr></thead><tbody><tr><td>Timestamp&nbsp;ordered</td><td>Most&nbsp;recent record&nbsp;wins&nbsp;(recommended)</td></tr><tr><td>Dataset&nbsp;precedence</td><td>You&nbsp;rank&nbsp;datasets&nbsp;— higher&nbsp;rank&nbsp;wins</td></tr></tbody></table></figure>



<p>Example:&nbsp;If dataset A says&nbsp;accountStatus&nbsp;=&nbsp;"active"&nbsp;(updated&nbsp;yesterday) and dataset B says&nbsp;accountStatus&nbsp;= "suspended"&nbsp;(updated today):</p>



<ul class="wp-block-list">
<li>Timestamp ordered → picks "suspended" (newer)</li>



<li>Dataset precedence → picks whichever dataset you ranked higher</li>
</ul>



<p>2. ID&nbsp;Stitching (how to link&nbsp;identities):</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Method</th><th>How&nbsp;it works</th></tr></thead><tbody><tr><td>None</td><td>Only&nbsp;match&nbsp;on&nbsp;exact&nbsp;same&nbsp;identity</td></tr><tr><td>Private Graph</td><td>Use&nbsp;the Identity&nbsp;Graph to link related&nbsp;identities&nbsp;(CUST001&nbsp;<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> alice@citisignal.com&nbsp;<img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2194.png" alt="↔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> +15551230001)</td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Why you couldn't see Alice in Profiles</h2>



<p>You&nbsp;ingested&nbsp;data&nbsp;→&nbsp;Data&nbsp;Lake&nbsp;✓&nbsp;→&nbsp;Profile&nbsp;Store&nbsp;✓</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;But&nbsp;when&nbsp;you&nbsp;Browse...</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;AEP&nbsp;asks:&nbsp;"Which&nbsp;merge&nbsp;policy?"</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;↓</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;DEFAULT&nbsp;merge&nbsp;policy&nbsp;may&nbsp;not</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;include&nbsp;your&nbsp;dataset,&nbsp;or&nbsp;may&nbsp;not</p>



<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;know&nbsp;how&nbsp;to&nbsp;find&nbsp;dinakara_customerid</p>



<p><canvas width="0" height="174"></canvas><canvas width="0" height="174"></canvas></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="524" height="540" src="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-4.png" alt="" class="wp-image-2518" srcset="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-4.png 524w, https://mosesdinakaran.in/wp-content/uploads/2026/02/image-4-291x300.png 291w" sizes="auto, (max-width: 524px) 100vw, 524px" /></figure>



<p></p>



<p></p>



<p>Bottom&nbsp;line:&nbsp;Your data IS&nbsp;in the Profile&nbsp;Store. The merge&nbsp;policy just&nbsp;controls&nbsp;which&nbsp;"lens" you use&nbsp;to view it. Now&nbsp;try&nbsp;Profiles&nbsp;→ Browse&nbsp;with&nbsp;the&nbsp;Default Timebased&nbsp;merge policy, namespace&nbsp;dinakara_customerid, value&nbsp;CUST001&nbsp;— and let&nbsp;me know if Alice shows up.</p><p>The post <a href="https://mosesdinakaran.in/how-data-gets-from-dataset-to-profile/">Merge Policy</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mosesdinakaran.in/how-data-gets-from-dataset-to-profile/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Adobe Experience Platform – Query Service  &#038; Data Distiller</title>
		<link>https://mosesdinakaran.in/adobe-experience-platform-query-service-brief-documentation/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adobe-experience-platform-query-service-brief-documentation</link>
					<comments>https://mosesdinakaran.in/adobe-experience-platform-query-service-brief-documentation/#respond</comments>
		
		<dc:creator><![CDATA[mosesdinakaran@gmail.com]]></dc:creator>
		<pubDate>Fri, 06 Feb 2026 01:41:41 +0000</pubDate>
				<category><![CDATA[AEP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://mosesdinakaran.in/?p=2506</guid>

					<description><![CDATA[<p>1. Overview 1. What is Query Service? Query Service is Adobe Experience Platform’s SQL engine that lets you query and transform data stored in the AEP Data Lake. Important mental model: AEP is a data lake, not a traditional database. 2. Key Doubt #1 “If data already exists, why do we need CREATE TABLE?” Answer: [&#8230;]</p>
<p>The post <a href="https://mosesdinakaran.in/adobe-experience-platform-query-service-brief-documentation/">Adobe Experience Platform – Query Service  & Data Distiller</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></description>
										<content:encoded><![CDATA[<h2 class="wp-block-heading">1. Overview</h2>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1006" height="582" src="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-3.png" alt="" class="wp-image-2509" srcset="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-3.png 1006w, https://mosesdinakaran.in/wp-content/uploads/2026/02/image-3-300x174.png 300w, https://mosesdinakaran.in/wp-content/uploads/2026/02/image-3-768x444.png 768w" sizes="auto, (max-width: 1006px) 100vw, 1006px" /></figure>



<h2 class="wp-block-heading">1. What is Query Service?</h2>



<p><strong>Query Service</strong> is Adobe Experience Platform’s <strong>SQL engine</strong> that lets you query and transform data stored in the <strong>AEP Data Lake</strong>.</p>



<ul class="wp-block-list">
<li>Uses <strong>ANSI SQL</strong></li>



<li>Works on <strong>datasets (Parquet files + XDM schemas)</strong></li>



<li>Designed for <strong>analytics and transformation</strong>, not transactions</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Important mental model: <strong>AEP is a data lake, not a traditional database.</strong></p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">2. Key Doubt #1</h2>



<h3 class="wp-block-heading"><em>“If data already exists, why do we need CREATE TABLE?”</em></h3>



<h3 class="wp-block-heading">Answer:</h3>



<p>A simple <code>SELECT</code>:</p>



<ul class="wp-block-list">
<li>Scans raw data files</li>



<li>Returns <strong>temporary results</strong></li>



<li>Nothing is stored or reused</li>
</ul>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
SELECT * FROM web_events;

</pre></div>


<p>A <strong>CTAS</strong> (<code>CREATE TABLE AS SELECT</code>):</p>



<ul class="wp-block-list">
<li>Runs the query</li>



<li><strong>Materializes the result</strong></li>



<li>Saves it as a <strong>new dataset</strong> in AEP</li>
</ul>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CREATE TABLE derived_events AS
SELECT * FROM web_events;

</pre></div>


<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>This is required because AEP does <strong>not</strong> store query results automatically.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">3. What is CTAS?</h2>



<p><strong>CTAS (Create Table As Select)</strong> is the mechanism used to create <strong>Derived Datasets</strong>.</p>



<ul class="wp-block-list">
<li>Output = <strong>new dataset</strong></li>



<li>Stored in the Data Lake</li>



<li>Reusable, faster, cheaper for repeated queries</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong>Derived Dataset = Result of a CTAS query</strong></p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">4. What is a Derived Dataset?</h2>



<p>A <strong>Derived Dataset</strong> is:</p>



<ul class="wp-block-list">
<li>A dataset created <strong>from other datasets</strong></li>



<li>Cleaned, flattened, aggregated</li>



<li>Used for analytics, BI, ML, or Profile ingestion</li>
</ul>



<p>Why it exists:</p>



<ul class="wp-block-list">
<li>Raw XDM data is large, nested, and expensive to query repeatedly</li>



<li>Derived datasets optimize performance and cost</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">5. What Query Service Can Do (Alone)</h2>



<p>With <strong>Query Service only</strong>, you can:</p>



<ul class="wp-block-list">
<li>Explore data (<code>SELECT</code>)</li>



<li>Clean, shape, and manipulate data</li>



<li>Create <strong>one-time derived datasets</strong> using CTAS</li>
</ul>



<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2714.png" alt="✔" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Technically capable<br><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Not operational or automated</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">6. What is Data Distiller?</h2>



<p><strong>Data Distiller</strong> is a <strong>licensed add-on</strong> that builds on Query Service to support <strong>production-grade data preparation</strong>.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p>Data Distiller does <strong>not</strong> add new SQL.<br>It adds <strong>automation, scheduling, and incremental processing</strong>.</p>
</blockquote>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">7. Key Doubt #2</h2>



<h3 class="wp-block-heading"><em>“Can’t we do all this with Query Service?”</em></h3>



<h3 class="wp-block-heading">Correct answer:</h3>



<ul class="wp-block-list">
<li><strong>Yes, functionally</strong></li>



<li><strong>No, operationally</strong></li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Capability</th><th>Query Service</th><th>Data Distiller</th></tr></thead><tbody><tr><td>SQL transformations</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr><tr><td>CTAS</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (manual)</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr><tr><td>Scheduled execution</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr><tr><td>Incremental processing</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr><tr><td>Production pipelines</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr><tr><td>Reliable Profile feeding</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">8. Why Data Distiller Exists</h2>



<p>Adobe introduced Data Distiller because customers needed:</p>



<ul class="wp-block-list">
<li>Repeated transformations</li>



<li>Cost-efficient processing</li>



<li>Reliable datasets for <strong>Profile &amp; Analytics</strong></li>



<li>Automated pipelines</li>
</ul>



<p>Query Service alone is <strong>interactive</strong><br>Data Distiller is <strong>operational</strong></p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">9. Relationship Summary</h2>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
Query Service = SQL engine
CTAS = Mechanism
Derived Dataset = Output
Data Distiller = Automation + Scheduling + Incremental logic

</pre></div>


<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">10. One-Line Takeaways (Most Important)</h2>



<ul class="wp-block-list">
<li><strong>Query Service answers questions</strong></li>



<li><strong>CTAS saves answers</strong></li>



<li><strong>Derived datasets avoid repeated heavy queries</strong></li>



<li><strong>Data Distiller productionizes Query Service</strong></li>



<li><strong>AEP is a data lake, not a traditional database</strong></li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">11. When to Use What</h2>



<p>Use <strong>Query Service only</strong> when:</p>



<ul class="wp-block-list">
<li>Exploring data</li>



<li>Debugging ingestion</li>



<li>Running one-off analysis</li>
</ul>



<p>Use <strong>Data Distiller</strong> when:</p>



<ul class="wp-block-list">
<li>Data feeds Profile or analytics continuously</li>



<li>Queries must run repeatedly</li>



<li>Cost, scale, and reliability matter</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Scenario</th><th>Use Query Service</th></tr></thead><tbody><tr><td>SQL-based analysis</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr><tr><td>Large-scale transformations</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr><tr><td>Real-time personalization</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/274c.png" alt="❌" class="wp-smiley" style="height: 1em; max-height: 1em;" /></td></tr><tr><td>Marketing dashboards</td><td><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> (Prefer CJA)</td></tr></tbody></table></figure>



<h2 class="wp-block-heading"></h2>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
Data Sources
   ↓
AEP Ingestion
   ↓
AEP Data Lake (Parquet + XDM)
   ↓
Query Service (SQL Engine)
   ↓
Results / Derived Datasets / BI Tools

</pre></div>


<h2 class="wp-block-heading">How it relates to Query Service</h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Query Service</th><th>Data Distiller</th></tr></thead><tbody><tr><td>Core SQL query engine</td><td>Add-on on top of Query Service</td></tr><tr><td>Ad-hoc analysis</td><td>Production transformations</td></tr><tr><td>Manual CTAS</td><td>Scheduled &amp; incremental CTAS</td></tr><tr><td>One-time queries</td><td>Continuous data pipelines</td></tr></tbody></table></figure>



<p><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f449.png" alt="👉" class="wp-smiley" style="height: 1em; max-height: 1em;" /> <strong>Data Distiller uses Query Service under the hoo</strong>d</p>



<h2 class="wp-block-heading"></h2>



<p></p><p>The post <a href="https://mosesdinakaran.in/adobe-experience-platform-query-service-brief-documentation/">Adobe Experience Platform – Query Service  & Data Distiller</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mosesdinakaran.in/adobe-experience-platform-query-service-brief-documentation/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AEP Data Collection</title>
		<link>https://mosesdinakaran.in/aep-data-collection/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aep-data-collection</link>
					<comments>https://mosesdinakaran.in/aep-data-collection/#respond</comments>
		
		<dc:creator><![CDATA[mosesdinakaran@gmail.com]]></dc:creator>
		<pubDate>Wed, 04 Feb 2026 07:49:03 +0000</pubDate>
				<category><![CDATA[AEP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://mosesdinakaran.in/?p=2503</guid>

					<description><![CDATA[<p>Adobe Experience Platform Data Collection Event Forwarding lets you process and route data at Adobe Edge, instead of only on the client (website or mobile app). Key benefit:Event Forwarding enables server-side, flexible, and secure data routing, reducing client-side complexity and allowing real-time integrations beyond Adobe’s ecosystem.</p>
<p>The post <a href="https://mosesdinakaran.in/aep-data-collection/">AEP Data Collection</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>Adobe Experience Platform Data Collection Event Forwarding</strong> lets you process and route data <em>at Adobe Edge</em>, instead of only on the client (website or mobile app).</p>



<ul class="wp-block-list">
<li>Data is first collected on the <strong>client side</strong> (website or mobile app).</li>



<li>That data is sent to <strong>Adobe Edge</strong>, which is the entry point into Adobe’s ecosystem.</li>



<li>Traditionally, Edge sends data to <strong>Adobe tools</strong> like AEP, Analytics, Audience Manager, or Target.</li>



<li>With <strong>Event Forwarding</strong>, you can now:
<ul class="wp-block-list">
<li><strong>Listen to incoming events at the Edge</strong></li>



<li><strong>Apply rules and data elements</strong> (similar to client-side properties)</li>



<li><strong>Forward data to Adobe destinations or external systems</strong> via webhooks (e.g., data lakes, decisioning engines, third-party apps)</li>
</ul>
</li>
</ul>



<p><strong>Key benefit:</strong><br>Event Forwarding enables <strong>server-side, flexible, and secure data routing</strong>, reducing client-side complexity and allowing real-time integrations beyond Adobe’s ecosystem.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="682" src="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-1024x682.png" alt="" class="wp-image-2504" srcset="https://mosesdinakaran.in/wp-content/uploads/2026/02/image-1024x682.png 1024w, https://mosesdinakaran.in/wp-content/uploads/2026/02/image-300x200.png 300w, https://mosesdinakaran.in/wp-content/uploads/2026/02/image-768x511.png 768w, https://mosesdinakaran.in/wp-content/uploads/2026/02/image.png 1468w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p><p>The post <a href="https://mosesdinakaran.in/aep-data-collection/">AEP Data Collection</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mosesdinakaran.in/aep-data-collection/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Real-Time Customer Profile</title>
		<link>https://mosesdinakaran.in/real-time-customer-profile/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=real-time-customer-profile</link>
					<comments>https://mosesdinakaran.in/real-time-customer-profile/#respond</comments>
		
		<dc:creator><![CDATA[mosesdinakaran@gmail.com]]></dc:creator>
		<pubDate>Mon, 26 Jan 2026 03:18:50 +0000</pubDate>
				<category><![CDATA[AEP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://mosesdinakaran.in/?p=2496</guid>

					<description><![CDATA[]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="536" src="https://mosesdinakaran.in/wp-content/uploads/2026/01/image-1024x536.png" alt="" class="wp-image-2497" srcset="https://mosesdinakaran.in/wp-content/uploads/2026/01/image-1024x536.png 1024w, https://mosesdinakaran.in/wp-content/uploads/2026/01/image-300x157.png 300w, https://mosesdinakaran.in/wp-content/uploads/2026/01/image-768x402.png 768w, https://mosesdinakaran.in/wp-content/uploads/2026/01/image-1536x803.png 1536w, https://mosesdinakaran.in/wp-content/uploads/2026/01/image.png 1719w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="570" src="https://mosesdinakaran.in/wp-content/uploads/2026/01/image-1-1024x570.png" alt="" class="wp-image-2500" srcset="https://mosesdinakaran.in/wp-content/uploads/2026/01/image-1-1024x570.png 1024w, https://mosesdinakaran.in/wp-content/uploads/2026/01/image-1-300x167.png 300w, https://mosesdinakaran.in/wp-content/uploads/2026/01/image-1-768x427.png 768w, https://mosesdinakaran.in/wp-content/uploads/2026/01/image-1-1536x854.png 1536w, https://mosesdinakaran.in/wp-content/uploads/2026/01/image-1.png 1771w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure><p>The post <a href="https://mosesdinakaran.in/real-time-customer-profile/">Real-Time Customer Profile</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mosesdinakaran.in/real-time-customer-profile/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AEP : Adobe Analytics</title>
		<link>https://mosesdinakaran.in/aep-adobe-analytics/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aep-adobe-analytics</link>
					<comments>https://mosesdinakaran.in/aep-adobe-analytics/#respond</comments>
		
		<dc:creator><![CDATA[mosesdinakaran@gmail.com]]></dc:creator>
		<pubDate>Sun, 04 Jan 2026 15:12:52 +0000</pubDate>
				<category><![CDATA[AEP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://mosesdinakaran.in/?p=2491</guid>

					<description><![CDATA[<p>The Two Main Disciplines: 2. The Four Types of Business Analytics:This is a maturity model for how organizations use data: 3. Adobe Analytics' Role:Adobe Analytics is the platform that enables this entire workflow. Conclusion: Analytics is the practice of turning data into insights and actions. Business Analytics provides the strategic framework (the four types), and [&#8230;]</p>
<p>The post <a href="https://mosesdinakaran.in/aep-adobe-analytics/">AEP : Adobe Analytics</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></description>
										<content:encoded><![CDATA[<p><strong>The Two Main Disciplines:</strong></p>



<ul class="wp-block-list">
<li><strong>Business Analytics</strong>: Focuses on using data (including Big Data) to understand strategic risks and opportunities. It is a key part of Business Intelligence (BI). <strong>This is where the "four types" framework is applied.</strong></li>



<li><strong>Data Analytics</strong>: A broader, more technical field concerned with the foundational work of sorting, storing, cleansing, and transforming massive datasets (the work of data scientists).</li>
</ul>



<p><strong>2. The Four Types of Business Analytics:</strong><br>This is a maturity model for how organizations use data:</p>



<ul class="wp-block-list">
<li><strong>Descriptive</strong> ("What happened?"): Uses historical data to identify trends.</li>



<li><strong>Diagnostic</strong> ("Why did it happen?"): Finds root causes and correlations behind outcomes.</li>



<li><strong>Predictive</strong> ("What might happen?"): Uses historical data and ML/AI to forecast future probabilities (e.g., customer churn).</li>



<li><strong>Prescriptive</strong> ("What should we do?"): An advanced form that uses ML/AI to recommend specific actions to achieve optimal outcomes (e.g., improving retail margins).</li>
</ul>



<p><strong>3. Adobe Analytics' Role:</strong><br>Adobe Analytics is the platform that enables this entire workflow.</p>



<ul class="wp-block-list">
<li>It <strong>collects data</strong> from multi-channel customer journeys (web, mobile, CRM, offline, etc.).</li>



<li>It provides the <strong>tools for analysis</strong> (like Analysis Workspace) where marketers perform descriptive and diagnostic analysis to "tell stories" with data.</li>



<li>It generates <strong>actionable outputs</strong> (segments, predictive scores) that feed into predictive and prescriptive actions, such as personalization in Adobe Target or advanced attribution modeling.</li>
</ul>



<p><strong>Conclusion</strong>: Analytics is the practice of turning data into insights and actions. Business Analytics provides the strategic framework (the four types), and platforms like Adobe Analytics provide the technical capability to execute that framework from data collection to prescriptive action.</p><p>The post <a href="https://mosesdinakaran.in/aep-adobe-analytics/">AEP : Adobe Analytics</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mosesdinakaran.in/aep-adobe-analytics/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AEP : Identity and identity graphs </title>
		<link>https://mosesdinakaran.in/aep-identity-and-identity-graphs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aep-identity-and-identity-graphs</link>
					<comments>https://mosesdinakaran.in/aep-identity-and-identity-graphs/#respond</comments>
		
		<dc:creator><![CDATA[mosesdinakaran@gmail.com]]></dc:creator>
		<pubDate>Mon, 29 Dec 2025 08:25:33 +0000</pubDate>
				<category><![CDATA[AEP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://mosesdinakaran.in/?p=2487</guid>

					<description><![CDATA[<p>Adobe Experience Platform's&#160;Identity Service, which helps you connect your customer's scattered data to build a unified view of them. Think of it as solving a puzzle where each piece is a separate clue about a customer from different places (website, app, in-store). The Identity Service finds how these pieces fit together by linking different IDs [&#8230;]</p>
<p>The post <a href="https://mosesdinakaran.in/aep-identity-and-identity-graphs/">AEP : Identity and identity graphs </a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></description>
										<content:encoded><![CDATA[<p>Adobe Experience Platform's&nbsp;<strong>Identity Service</strong>, which helps you connect your customer's scattered data to build a unified view of them.</p>



<p>Think of it as solving a puzzle where each piece is a separate clue about a customer from different places (website, app, in-store). The Identity Service finds how these pieces fit together by linking different IDs (like email, CRM ID, device ID) that all belong to the same person. This linking creates a map of relationships called an&nbsp;<strong>Identity Graph</strong>.</p>



<p>Here’s how it works in three key steps:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Step</th><th>What It Does</th><th>Simple Analogy</th></tr></thead><tbody><tr><td><strong>1. Identity Collection</strong></td><td>You label fields like "email" or "customer ID" as&nbsp;<strong>identity fields</strong>&nbsp;in your data. When data is imported, the system spots these labels.</td><td>You tag different puzzle pieces with the same color if they belong to the same customer.</td></tr><tr><td><strong>2. Identity Graph</strong></td><td>The system uses&nbsp;<strong>deterministic rules</strong>&nbsp;to link IDs found together (e.g., when a website visitor logs in, linking their anonymous ID to their account ID). It builds a private "graph" or map of all these connections for each person.</td><td>You physically connect the matching puzzle pieces, building a complete picture.</td></tr><tr><td><strong>3. Identity Service API</strong></td><td>Developers can use this API to work with the identity graphs in their own apps, just like the Adobe Platform interface does.</td><td>You can now show the completed puzzle picture on different screens or use it in different ways.</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Why This Matters</h3>



<p>This service solves the common problem of data being stuck in separate "silos" (like CRM, website, app data). By linking identities, you can create a&nbsp;<strong>Real-time Customer Profile</strong>, which is a single, complete view of each customer. This unified view allows you to personalize their experience seamlessly across all your brand's touchpoints.</p>



<p>Imagine you're a detective trying to solve the mystery of "Who is Customer X?"</p>



<p>You have clues scattered in different notebooks: one notebook has a customer's&nbsp;<strong>email address</strong>&nbsp;from your online store, another has their&nbsp;<strong>phone number</strong>&nbsp;from a support call, and a third has their&nbsp;<strong>loyalty card ID</strong>&nbsp;from in-store purchases.</p>



<p>Your job is to figure out that&nbsp;<code>alice@email.com</code>,&nbsp;<code>(555) 123-4567</code>, and&nbsp;<code>LoyaltyMember#88241</code>&nbsp;are all the same person—<strong>Alice</strong>. Adobe Experience Platform's Identity Service is your high-tech system for doing exactly that.</p>



<p>Here’s how it works, broken down into three simple steps with examples:</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f3f7.png" alt="🏷" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 1: Label the Clues (Label Data as Identities)</h3>



<p>This is where you tell the system,&nbsp;<em>"Hey, this piece of information is a unique clue to someone's identity."</em></p>



<ul class="wp-block-list">
<li><strong>Example</strong>: In your "Online Store" notebook (dataset), you mark the <strong>Email</strong> field as an "Identity." In your "Loyalty Program" notebook, you mark the <strong>Loyalty Card Number</strong> as an "Identity."</li>



<li><strong>The Key Choice - Namespace</strong>: A namespace is just the <strong>type of clue</strong>. Is it an Email? A Phone Number? A CRM ID? You pick the right type so the system knows how to handle it.</li>



<li><strong>The Special Clue - Primary Identity</strong>: You pick <strong>one main clue</strong> per notebook that is the most reliable. For your "CRM System" notebook, the best, most consistent clue might be the <code>crm_id</code>. This becomes the <strong>primary key</strong> to find that person's main profile.</li>
</ul>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Important</strong>: Just like a real detective, you must work with your legal/privacy team. Decide which clues you are allowed to collect and connect, respecting customer privacy.</p>
</blockquote>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4e5.png" alt="📥" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 2: Combine the Notebooks (Ingest Identity Data)</h3>



<p>Now, you feed all your notebooks (datasets) into the detective's system (Adobe Experience Platform).</p>



<ul class="wp-block-list">
<li><strong>Example</strong>: You upload the data from your Online Store, your CRM, and your Loyalty Program. Because you already labeled the clues (Email in one, Loyalty ID in another), the system gets to work.</li>



<li><strong>The Magic (Private Graph)</strong>: The system sees that <code>alice@email.com</code> (from an online order) is linked to <code>LoyaltyMember#88241</code> (from a store purchase) because they appeared together on a single receipt. It creates a hidden, connected web—a <strong>private identity graph</strong>—showing these are the same person. Alice's profile is no longer three separate fragments; it's starting to unify.</li>
</ul>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Step 3: Check Your Work (Verify the Data)</h3>



<p>Finally, you check the system's case files to confirm the connections were made.</p>



<ul class="wp-block-list">
<li><strong>Example</strong>: You go to the <strong>Identities</strong> page in Adobe, look up <code>alice@email.com</code>, and the system shows you all the other connected IDs (phone, loyalty ID) that are now stitched to her single customer profile. You've successfully solved the mystery!</li>
</ul>



<h3 class="wp-block-heading">Real-World Analogy: The Hospital System</h3>



<p>Think of a modern hospital with different departments:</p>



<ul class="wp-block-list">
<li>The <strong>Emergency Room</strong> knows you by your Driver's License.</li>



<li>The <strong>Lab</strong> knows you by your Lab Order ID.</li>



<li>The <strong>Billing Department</strong> knows you by your Account Number.</li>
</ul>



<p>A good hospital system&nbsp;<strong>labels</strong>&nbsp;these IDs,&nbsp;<strong>ingests</strong>&nbsp;records from all departments, and uses an&nbsp;<strong>Identity Graph</strong>&nbsp;to link them all to&nbsp;<strong>you</strong>, the single patient. This way, any doctor can see your complete history, no matter which department you visited first.</p>



<h3 class="wp-block-heading">Summary in One Sentence:</h3>



<p>You&nbsp;<strong>tell the system which data points are customer IDs</strong>&nbsp;(label),&nbsp;<strong>send in your customer data</strong>&nbsp;(ingest), and&nbsp;<strong>check that the system correctly linked everything</strong>&nbsp;(verify) to build a complete, single view of each customer.</p>



<h2 class="wp-block-heading"><strong>Identity Graph Viewer</strong></h2>



<p><strong>Identity Graph Viewer</strong>&nbsp;in Adobe Experience Platform. It's a tool designed for&nbsp;<strong>data engineers</strong>&nbsp;to inspect and debug how customer identities are connected, or "stitched" together.</p>



<p>Think of it as a "debugging window" that makes the invisible process of identity stitching visible and easy to understand. Before this tool, the process was essentially a "black box" for engineers, making it hard to validate if data was ingested correctly or to find errors in profile unification.</p>



<p>Here are the tool's key features:</p>



<ul class="wp-block-list">
<li><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f50d.png" alt="🔍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Search &amp; Explore</strong>: You can search for a specific identity (like an email or CRM ID) and see a graphical map of all its linked identities.</li>



<li><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f441.png" alt="👁" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Visual Graph View</strong>: The main display is a visual graph where each circle (node) is an identity (e.g., email, phone, device ID) and the connecting lines show how they are linked.</li>



<li><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f527.png" alt="🔧" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Debug with Details</strong>: Clicking on any identity node or connection line reveals detailed metadata. This includes which datasets created the link, batch IDs, and timestamps, helping you trace the source of any data or stitching issue.</li>



<li><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4ca.png" alt="📊" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Data Source Timeline</strong>: A separate tab shows a timeline of all data sources ingested, allowing you to see exactly when and how new data contributed to building or changing the graph.</li>
</ul>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How It Solves Real Problems</h3>



<p>The tool is especially useful for two critical scenarios:</p>



<ol start="1" class="wp-block-list">
<li><strong>Validation</strong>: After ingesting new data, you can check if identities are stitching together as expected.</li>



<li><strong>Debugging</strong>: If you suspect an error—such as two unrelated customer profiles being incorrectly linked—you can use the visual graph to spot these "collapsed" clusters and investigate the specific data batches that caused the connection.</li>
</ol>



<p></p><p>The post <a href="https://mosesdinakaran.in/aep-identity-and-identity-graphs/">AEP : Identity and identity graphs </a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mosesdinakaran.in/aep-identity-and-identity-graphs/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>AEP - Schema building blocks</title>
		<link>https://mosesdinakaran.in/aep-schema-building-blocks/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=aep-schema-building-blocks</link>
					<comments>https://mosesdinakaran.in/aep-schema-building-blocks/#respond</comments>
		
		<dc:creator><![CDATA[mosesdinakaran@gmail.com]]></dc:creator>
		<pubDate>Mon, 29 Dec 2025 07:01:27 +0000</pubDate>
				<category><![CDATA[AEP]]></category>
		<category><![CDATA[Tutorials]]></category>
		<guid isPermaLink="false">https://mosesdinakaran.in/?p=2482</guid>

					<description><![CDATA[<p>An XDM schema is constructed from four main building blocks, which determine its structure, purpose, and the type of data it will contain. You can think of these as a hierarchy, from the most general to the most specific, working together to model your customer data. Here's an overview of these components, starting from the [&#8230;]</p>
<p>The post <a href="https://mosesdinakaran.in/aep-schema-building-blocks/">AEP - Schema building blocks</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></description>
										<content:encoded><![CDATA[<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="884" height="442" src="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-7.png" alt="" class="wp-image-2483" srcset="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-7.png 884w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-7-300x150.png 300w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-7-768x384.png 768w" sizes="auto, (max-width: 884px) 100vw, 884px" /></figure>



<p></p>



<p>An XDM schema is constructed from four main building blocks, which determine its structure, purpose, and the type of data it will contain. You can think of these as a hierarchy, from the most general to the most specific, working together to model your customer data.</p>



<p>Here's an overview of these components, starting from the top of the schema:</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Building Block</th><th>Purpose &amp; Function</th></tr></thead><tbody><tr><td><strong>1. Behavior</strong></td><td>Defines the fundamental&nbsp;<strong>type</strong>&nbsp;of data the schema handles. There are two types:&nbsp;<strong>Record</strong>&nbsp;(for describing&nbsp;<em>entities</em>, like a person) and&nbsp;<strong>Time-series</strong>&nbsp;(for describing&nbsp;<em>events that happened</em>, like a website click).</td></tr><tr><td><strong>2. Class</strong></td><td><strong>Required</strong>&nbsp;for every schema. Defines what the schema&nbsp;<em>represents</em>&nbsp;(e.g., a person, a product, a website event). Each class has a specific&nbsp;<strong>Behavior</strong>&nbsp;(Record or Time-series) and comes with a set of essential, built-in fields for that category of data.</td></tr><tr><td><strong>3. Field Groups</strong></td><td>The primary mechanism for adding&nbsp;<strong>most fields</strong>&nbsp;to a schema. These are reusable collections of fields and data types that model a specific concept (like "personal contact details"). They are tied to a specific&nbsp;<strong>Class</strong>.</td></tr><tr><td><strong>4. Data Types &amp; Fields</strong></td><td><strong>Data Types</strong>&nbsp;are logical groupings of multiple&nbsp;<strong>fields</strong>&nbsp;(e.g., "email address," which includes the address, its type, and status).&nbsp;<strong>Fields</strong>&nbsp;are the most granular elements that hold individual pieces of data.</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4d0.png" alt="📐" class="wp-smiley" style="height: 1em; max-height: 1em;" /> How These Blocks Work Together</h3>



<p><strong>Schema = Class + Field Groups</strong>. You can think of building a schema this way:</p>



<ol start="1" class="wp-block-list">
<li><strong>Choose a Class</strong>: First, select a class (e.g., "XDM Individual Profile" with <strong>Record</strong> behavior, or "XDM ExperienceEvent" with <strong>Time-series</strong> behavior). This sets the schema's core purpose and provides essential base fields.</li>



<li><strong>Add Field Groups</strong>: Then, add relevant field groups to include all the specific data points you need. For example, add a "Demographic Details" field group to a profile class.</li>



<li><strong>Fields and Data Types</strong>: Within the chosen class and field groups, you will find all the necessary <strong>data types</strong> and individual <strong>fields</strong>. You can also create custom data types and field groups.</li>
</ol>



<h2 class="wp-block-heading"><strong>Key Standard Classes Explained</strong></h2>



<p>These two classes handle 90% of customer data use cases:</p>



<h3 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4c7.png" alt="📇" class="wp-smiley" style="height: 1em; max-height: 1em;" /> XDM Individual Profile (Record Behavior)</strong></h3>



<p>Think of this as a&nbsp;<strong>digital dossier</strong>&nbsp;or&nbsp;<strong>customer ID card</strong>.</p>



<ul class="wp-block-list">
<li><strong>For:</strong> Data about <em>who</em> a customer is</li>



<li><strong>Data Pattern:</strong> <strong>Singular &amp; updatable</strong> (one profile per customer that changes over time)</li>



<li><strong>Examples:</strong>
<ul class="wp-block-list">
<li>Name, birthday, loyalty tier</li>



<li>Contact info (email, phone)</li>



<li>Lifetime value, segment memberships</li>
</ul>
</li>



<li><strong>Analogy:</strong> A <strong>customer database row</strong> that gets updated</li>
</ul>



<h3 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/23f1.png" alt="⏱" class="wp-smiley" style="height: 1em; max-height: 1em;" /> XDM ExperienceEvent (Time-series Behavior)</strong></h3>



<p>Think of this as a&nbsp;<strong>detailed activity log</strong>&nbsp;or&nbsp;<strong>customer diary</strong>.</p>



<ul class="wp-block-list">
<li><strong>For:</strong> Data about <em>what</em> a customer does</li>



<li><strong>Data Pattern:</strong> <strong>Multiple &amp; immutable</strong> (many events per customer, added over time)</li>



<li><strong>Examples:</strong>
<ul class="wp-block-list">
<li>Website page view (timestamp, page URL)</li>



<li>"Add to cart" action (product, quantity)</li>



<li>Purchase transaction (amount, items, payment method)</li>



<li>Email open, call center interaction</li>
</ul>
</li>



<li><strong>Analogy:</strong> A <strong>stream of timestamped events</strong> that can't be changed, only added to</li>
</ul>



<h2 class="wp-block-heading"><strong>Real-World Example: A Coffee Shop App</strong></h2>



<p>Let's see how these work together for "CoffeeCo's" loyalty app:</p>



<p><strong>Profile Schema (XDM Individual Profile)</strong></p>



<ul class="wp-block-list">
<li><strong>Class:</strong> <code>XDM Individual Profile</code></li>



<li><strong>Field Groups:</strong>
<ul class="wp-block-list">
<li><code>Demographic Details</code> → Name, birth date</li>



<li><code>Personal Contact Details</code> → Email, mobile number</li>



<li><code>Loyalty Details</code> → Member ID, points balance, tier (Gold)</li>
</ul>
</li>
</ul>



<p><strong>Event Schemas (XDM ExperienceEvent)</strong></p>



<ul class="wp-block-list">
<li><strong>Class:</strong> <code>XDM ExperienceEvent</code></li>



<li><strong>Field Groups (varies by event):</strong>
<ul class="wp-block-list">
<li><code>App Interaction</code> → Opened app, viewed menu</li>



<li><code>Commerce Details</code> → Ordered latte ($5.50), used 50 points</li>



<li><code>Location Details</code> → Visited "CoffeeCo Downtown" store</li>
</ul>
</li>
</ul>



<p><strong>The Magic:</strong>&nbsp;The platform&nbsp;<strong>automatically links</strong>&nbsp;all events to the correct profile using a shared identifier (like email or loyalty ID), building a&nbsp;<strong>complete customer journey</strong>.</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong>Quick-Reference Cheat Sheet</strong></h2>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th></th><th><strong>XDM Individual Profile</strong></th><th><strong>XDM ExperienceEvent</strong></th></tr></thead><tbody><tr><td><strong>Purpose</strong></td><td>The&nbsp;<strong>WHO</strong>&nbsp;(Customer Identity)</td><td>The&nbsp;<strong>WHAT/WHEN</strong>&nbsp;(Customer Actions)</td></tr><tr><td><strong>Behavior</strong></td><td><strong>Record</strong></td><td><strong>Time-series</strong></td></tr><tr><td><strong>Data Type</strong></td><td><strong>Entity Data</strong>&nbsp;(Snapshot)</td><td><strong>Event Data</strong>&nbsp;(Stream)</td></tr><tr><td><strong>Example</strong></td><td>Customer's email, loyalty tier</td><td>Purchase at 2:30 PM, page view</td></tr><tr><td><strong>Updates</strong></td><td><strong>Editable</strong>&nbsp;(change phone number)</td><td><strong>Append-only</strong>&nbsp;(can't change past events)</td></tr><tr><td><strong>Analogy</strong></td><td><strong>Digital ID Card</strong></td><td><strong>Activity Log/Timeline</strong></td></tr></tbody></table></figure>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading"><strong><img src="https://s.w.org/images/core/emoji/16.0.1/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Remember This</strong></h2>



<ol start="1" class="wp-block-list">
<li><strong>Start with your question:</strong> Need to track <em>attributes</em>? Use <strong>Profile</strong>. Need to track <em>actions</em>? Use <strong>ExperienceEvent</strong>.</li>



<li><strong>They work together:</strong> Profiles are built <em>from</em> events. A profile without events is just a static record.</li>



<li><strong>Use field groups:</strong> Don't build from scratch—use Adobe's pre-built field groups whenever possible.</li>



<li><strong>Think in timelines:</strong> A complete customer view = <strong>Profile</strong> (who they are) + <strong>ExperienceEvents</strong> (what they've done over time).</li>
</ol>



<p>This structure allows Adobe Experience Platform to unify data from all sources (web, app, store, call center) into a single, actionable customer profile for personalization and analytics.</p><p>The post <a href="https://mosesdinakaran.in/aep-schema-building-blocks/">AEP - Schema building blocks</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mosesdinakaran.in/aep-schema-building-blocks/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Adobe Experience Platform (AEP)</title>
		<link>https://mosesdinakaran.in/adobe-experience-platform-aep/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adobe-experience-platform-aep</link>
					<comments>https://mosesdinakaran.in/adobe-experience-platform-aep/#respond</comments>
		
		<dc:creator><![CDATA[mosesdinakaran@gmail.com]]></dc:creator>
		<pubDate>Thu, 18 Dec 2025 09:31:13 +0000</pubDate>
				<category><![CDATA[AEP]]></category>
		<guid isPermaLink="false">https://mosesdinakaran.in/?p=2463</guid>

					<description><![CDATA[<p>Core Architecture of Adobe Experience Platform Key Platform Services Native Applications Built on AEP AEP Architecture Diagram Ref : https://experienceleague.adobe.com/en/docs/blueprints-learn/architecture/architecture-overview/platform-applications</p>
<p>The post <a href="https://mosesdinakaran.in/adobe-experience-platform-aep/">Adobe Experience Platform (AEP)</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></description>
										<content:encoded><![CDATA[<ul class="wp-block-list">
<li>Modern marketing faces extreme complexity, with <strong>thousands of disconnected tools</strong> creating data silos, duplicated customer profiles, and fragmented customer experiences.</li>



<li>Simply storing all data in a <strong>data lake is not sufficient</strong> for marketing, because value is realized only when data can be <strong>activated in real time</strong> to engage customers.</li>



<li><strong>Real-time speed is critical</strong>: personalization must happen instantly, not minutes later, as customers spend only seconds on digital channels.</li>



<li><strong>Adobe Experience Platform (AEP)</strong> acts as a <strong>central intelligence layer</strong>, similar to a <em>motherboard</em>, connecting, managing, and orchestrating customer data across the organization.</li>



<li>AEP does <strong>not replace existing data lakes</strong>. Instead, it sits <strong>on top of them</strong>, harmonizing data and enabling real-time activation with strong <strong>end-to-end data governance</strong> and trust.</li>
</ul>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="499" src="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-1-1024x499.png" alt="" class="wp-image-2468" srcset="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-1-1024x499.png 1024w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-1-300x146.png 300w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-1-768x374.png 768w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-1.png 1285w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<iframe loading="lazy" title="Adobe Experience Platform Explained - A Visual Story" width="1140" height="641" src="https://www.youtube.com/embed/aIHqlooJaPo?start=11&feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Core Architecture of Adobe Experience Platform</h2>



<ul class="wp-block-list">
<li>Built on a <strong>scalable cloud infrastructure</strong>, optimized for <strong>speed and flexibility</strong>, using streaming technologies, edge networks, Kafka pipelines, and NoSQL databases.</li>



<li>Uses a common, open data language called <strong>Experience Data Model (XDM)</strong>, enabling seamless communication across systems and teams.</li>



<li>Provides <strong>open connectors</strong> to:
<ul class="wp-block-list">
<li>Ingest data from multiple sources (web, mobile, CRM, POS, call centers, warehouses, etc.)</li>



<li>Activate data back into marketing and engagement systems.</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Key Platform Services</h2>



<ul class="wp-block-list">
<li><strong>Identity Service</strong>: Stitches data from multiple systems into a <strong>360° customer profile</strong>.</li>



<li><strong>Segmentation Service</strong>: Creates dynamic audiences using drag-and-drop tools.</li>



<li><strong>Data Governance Service</strong>: Ensures compliance, consent, and trusted data usage.</li>



<li><strong>Intelligence Services</strong>: Provides AI/ML capabilities such as propensity scoring, look-alike modeling, and predictive insights.</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h2 class="wp-block-heading">Native Applications Built on AEP</h2>



<ol class="wp-block-list">
<li><strong>Real-Time Customer Data Platform (CDP)</strong>
<ul class="wp-block-list">
<li>Builds unified customer profiles</li>



<li>Creates actionable, dynamic audiences</li>



<li>Activates personalization across channels in real time</li>
</ul>
</li>



<li><strong>Adobe Journey Optimizer</strong>
<ul class="wp-block-list">
<li>Enables real-time, one-to-one, omnichannel customer journeys</li>



<li>Uses visual journey orchestration and automated messaging</li>
</ul>
</li>



<li><strong>Customer Journey Analytics</strong>
<ul class="wp-block-list">
<li>Analyzes customer behavior across offline and online channels</li>



<li>Helps marketers understand journeys, trends, and optimize experiences</li>
</ul>
</li>



<li><strong>Adobe Mix Modeler</strong>
<ul class="wp-block-list">
<li>Uses AI-powered forecasting and multi-channel optimization</li>



<li>Measures marketing effectiveness and maximizes ROI on budget spend</li>
</ul>
</li>
</ol>



<figure class="wp-block-image size-full is-resized"><img loading="lazy" decoding="async" width="862" height="695" src="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-4.png" alt="" class="wp-image-2476" style="width:589px;height:auto" srcset="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-4.png 862w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-4-300x242.png 300w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-4-768x619.png 768w" sizes="auto, (max-width: 862px) 100vw, 862px" /></figure>



<p></p>



<h2 class="wp-block-heading">AEP Architecture Diagram</h2>



<p>Ref : https://experienceleague.adobe.com/en/docs/blueprints-learn/architecture/architecture-overview/platform-applications</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="641" src="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-5-1024x641.png" alt="" class="wp-image-2478" srcset="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-5-1024x641.png 1024w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-5-300x188.png 300w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-5-768x481.png 768w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-5-1536x962.png 1536w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-5.png 1619w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<p></p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="714" src="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-6-1024x714.png" alt="" class="wp-image-2479" srcset="https://mosesdinakaran.in/wp-content/uploads/2025/12/image-6-1024x714.png 1024w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-6-300x209.png 300w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-6-768x536.png 768w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-6-1536x1072.png 1536w, https://mosesdinakaran.in/wp-content/uploads/2025/12/image-6.png 1938w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure><p>The post <a href="https://mosesdinakaran.in/adobe-experience-platform-aep/">Adobe Experience Platform (AEP)</a> first appeared on <a href="https://mosesdinakaran.in">Moses Dinakaran</a>.</p>]]></content:encoded>
					
					<wfw:commentRss>https://mosesdinakaran.in/adobe-experience-platform-aep/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
