Thanks for the comprehensive bug report. Sitecore have published a hotfix for Sitecore 9.0 Update 1 which fixes this issue.
The decompiled code is hard to read but the issue stems from flag2 (as it appears here) being too strict. It has been adjusted to now simply check the Global Opt-out list for both Regular and Automated messages.
Please ensure this ...
I have combined Vlad's code and put it into dedicated 'ListManager' class and created a method that retrieves contacts from list by its id and it could take both ContactList and SegmentList. You need to registed this class in the IoC in order to resolve dependencies. Here is what I have. This is tested and working on Sitecore 9.0.1:
Use the following example to get contacts from contact list:
Guid contactListId = Guid.NewGuid(); //Contact list Id
int batchSize = 200;
var expandOptions =
var segmentationEngine = ServiceLocator.ServiceProvider
TypedQueryableOperatorCondition and TypedQueryableStringOperatorCondition are helpers, and are both using Sitecore.Rules.Conditions.WhenCondition<T> behind the scene, so you could implement your own condition based on this.
As an (untested) example:
public class CustomLatestVisitDateCondition<T> : WhenCondition<T>, IQueryableRule<...
There are a couple of different approaches, but first a bit of background information.
When a contact/interaction/facet is added/updated and submitted to xConnect (at the end of the session), a work item is created for the Marketing Automation engine. This work item will then be evaluated against any active Marketing Automation campaigns where the start/end ...
I hope you are following below points:
In Sitecore form, you have selected Update Contact Details before Trigger Goal. You can follow https://doc.sitecore.com/developers/91/sitecore-experience-management/en/walkthrough--creating-a-custom-submit-action-that-updates-contact-details.html this link. Update Contact Details submit action will create/update ...