Customer Insights – Journeys: Asset Library + Exit Conditions + Child-table Triggers
Praxisis D365 Wiki · Public reference · Client-specific details redacted
Source: Claude.ai chat (original: trigger-based-journey-contact-field-requirements__2c34bfa6.md)
Added: 2026-10-02
Summary
- The Asset Library has no folder structure — three organizing mechanisms, none hierarchical: Tags (manual + AI auto-tagging) · Type tabs (images / videos / documents) · Search + filter. Tags are the only scheme exposed in the email editor's picker.
- Journey exit gives three independent levers (OR'd, not composable): Exit when an event occurs (immediate trigger exit) · Exit by segment (immediate on segment match, latency = refresh cadence) · End date (no new entries; in-flight finish).
- Child-table triggers: a journey can start from a child record (via contact lookup) but once it starts, the entity travelling through is the Contact. Segments only exist for Contact / Lead / CI-Data profiles — so the exit segment must be contact-based. Exit trigger can be on any table that resolves to a contact.
Key takeaways
- Design a faceted tag taxonomy rather than freeform tags: Purpose (logo/hero/icon/photo/doc/ics) · Campaign-or-program · Language. Pair with a filename convention (e.g.
ORG_EN_Campaign_Hero_2026.png) so name search and tag filter both work. Prune AI auto-tagging noise (sky, smiling, outdoor) on upload — otherwise the deliberate taxonomy gets buried. - Library assets are solution-aware — can move dev → INT → PROD via solution without re-uploading and breaking URLs.
- Business-unit scoping on the unified library is the one genuine partitioning you get — keeps one team's library out of another's picker.
- Exit-by-segment ≠ Exclude-this-segment. Exclusion = entry criteria (stops people entering). Exit = yank out mid-flight. For CASL-style suppression on consent withdrawal, you generally need both — exclusion so they never enter + exit so anyone who withdraws mid-journey stops getting the rest.
- Latency: trigger exits are genuinely immediate. Segment membership evaluates on refresh cadence → someone can still receive the next message in the window before segment updates. If consent withdrawal must stop sends immediately, drive it off a trigger on the consent field change, not off a segment.
- Journey goals also use triggers but are measurement only — they don't exit anyone. If the same event should both count as success AND stop reminders, configure the same trigger in both exit AND goal.
- Child-record + repeat-entry trap: Contact A has 3 child records, repeat entry allowed → they're in the journey 3 times. An exit trigger firing once pulls them out of all 3 instances unless the trigger carries a
bindingIdidentifying the specific instance. For consent withdrawal that's correct behaviour. For per-record reminders ("your service appointment is in 3 days"), it's a bug — one cancellation kills the reminders for the other two appointments. - Narrow exit triggers with conditions — e.g. the OOB Event Registration Cancelled exit is narrowed with an event-reference condition so only the matching event cancels the journey. Whether you can dynamically compare the exit trigger's record id against the starting trigger's record id (rather than a fixed value) is version-dependent — build a throwaway journey in INT and confirm before committing.
- Boolean composition workaround: no AND/OR composer across triggers/segments. For OR across triggers: create one custom trigger raised from a Power Automate flow that encapsulates conditions. For AND: push the logic into the segment definition itself — dynamic segments can express arbitrary conditions internally.
- Bulk-load trap: triggers fire when a record is manually updated in Dataverse, not just when a customer does something. A KingswaySoft bulk update touching a child table or Contact table can mass-enter or mass-exit people from live journeys. Microsoft lists this as a known issue with no suppression toggle. Deactivate trigger-based journeys before any bulk load on tables those triggers watch.
Learnings / how to apply
- Codify the "exclusion segment + exit segment + consent-field trigger" triplet as the Praxisis CASL compliance pattern for CIJ consent withdrawal.
- Document the
bindingIdrequirement in the Sustain Operating Model's CIJ troubleshooting runbook — it explains an entire class of "customer complaint: they got cancelled too eagerly / not eagerly enough." - Pre-flight "deactivate trigger journeys before bulk load" as a mandatory step in any Praxisis data-import runbook — one of the quietest ways to generate 100,000 duplicate emails in a nonprofit tenant.
Need this applied to your own tenant?
Praxisis Sustain Self-Serve builds a private AI Wiki trained on your documents and tickets, with free Tier-2 support when the AI cannot answer. Book a 30-min overview.