6

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 ...


6

Sadly, my solution was too ambitious for the Sitecore predicate engine. The solution was to re-write the condition to a bare-bones implementation where a Facet it retrieved by strong-typed class. public class ExmReminderEmailDateCondition : ICondition, IMappableRuleEntity, IContactSearchQueryFactory { public Expression<Func<Contact, bool>> ...


4

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<...


3

Yes, you can. However, it's not documented (as far as I know), so it will require some digging. Conditions for the segment builder use the analytic index (either Lucene or SOLR) to filter the data. So a requirement of a custom condition is that the data you are using to filter, exists in the index. Here is a piece of example code that let's you create a ...


2

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 ...


2

As Mark said, uploading rules is not a feature. You might instead want to look at the functionality that is available out-of-the-box for GeoIP rules. Do you need a rule for every single zip code? That is a lot of content to manage and unlikely what is expected by the authors. I would suggest determining what your different banner variations are and what see ...


1

No. Nor would it be a good idea to have 1000s of individual personalisation conditions set up on any one of your renderings of your site. While the Rules Engine is reasonably performant, I doubt it scales nicely in this scenario, You should instead be looking at a custom action. One you code yourself. That will hold the CSV data and assign the data source ...


1

Update 1: example of an expression. One additional challenge there is that you need to get the type of the facet so that you can feed it into the GetContactPredicate call: private static Expression<Func<Contact, bool>> GetContactPredicate(Type facetType, string facetKey, string propertyName, object value) { var contact = ...


1

What you need is an "or"-based expression that has a separate condition for every search term: using Sitecore.ContentSearch.Linq.Utilities; // ... IEnumerable<string> keywords = new string[] { "my", "value" }; Expression<Func<IndexedContact, bool>> keywordsPredicate = keywords.Aggregate( PredicateBuilder.False<...


1

Disclaimer: I've never actually tried this myself. But looking at the code you're using, there are two base conditions for the conditions you're dealing with. And based on your own statement; it works when you use one of these - you just want to get rid of having to define an operator for your condition. public abstract class TypedQueryableOperatorCondition&...


Only top voted, non community-wiki answers of a minimum length are eligible