9

It has been determined that List Manager in Sitecore 8.1 is not as efficient as it could be. Sitecore Support KB Reference Number 431777 assists with List Manager issues. With this installed, List Manager seems to function better, albeit still not as fast. Instead, the answer from Sitecore Support is that List Manager as a product is being overhauled and ...


7

We use code like this and it works fine. It is similar to yours however there are some differences: using (var client = SitecoreXConnectClientConfiguration.GetClient()) { try { var identifier = new IdentifiedContactReference(IdentifierSources.Email, email); var contact = client.Get(identifier, new ContactExpandOptions(...


6

For Sitecore 9.x, you need to go through the IDefinitionManager<IContactListDefinition> from Sitecore.Marketing.dll. As an example: string name = ItemUtil.ProposeValidItemName("name"); var listId = Guid.NewGuid(); string alias = ItemUtil.ProposeValidItemName(FormattableString.Invariant($"{name}-{listId}"));; //alias must be unique for each language ...


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

The code you are referencing is part of the process that details how List Manager, or the Marketing Operations of Sitecore, handles mapping imported CSV data to facets on a contact. At least that's the documentation link that you provided. The documentation link describes a generic scenario where the purpose of this mapping facet is to map the Personal and ...


5

If you are using EXM, then you can take advantage of Sitecore.Modules.EmailCampaign.ClientApi. Have a look at the the EXM ClientApi documentation for version 3.4 of EXM listManager.AssociateContacts is fairly low-level code, and contact.Tags.Set even more so. As the post you link to points out, it is risky to use these APIs directly and manipulating the ...


5

Just to clear up a common misconception. EXM uses List Manager to retrieve contact lists and contacts, but they are two different products/APIs. EXM is a module released separately, whereas List Manager is a component released as part of the Sitecore Experience Platform. So you don't want to look at the EXM API to do what you're asking, but rather the List ...


5

First of all, you should disable List Manager on the processing server. The search messages in logs are likely caused by the Sitecore.ListManagement.Analytics.UnlockContactListsAgent class. It looks for locked contact lists every 10 seconds (configured in the Sitecore.ListManagement.config file) and tries to unlock them as soon as the real (indexed) ...


5

There are 2 types of lists: Contact List and segmented list, each one has its own class to handle them. You need a reference to: Sitecore.ListManagement.ContentSearch.dll Contact List //Get the manager var listManager = Sitecore.Configuration.Factory.CreateObject("contactListManager", false) as ContactListManager; //Create a list ContactList list = new ...


5

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: using System; using ...


5

Use the following example to get contacts from contact list: Guid contactListId = Guid.NewGuid(); //Contact list Id int batchSize = 200; var expandOptions = new ContactExpandOptions(CollectionModel.FacetKeys.PersonalInformation); var segmentationEngine = ServiceLocator.ServiceProvider .GetService<ISegmentationEngine>(); var ...


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


4

Here is the code which allows to create a contact list programatically in Sitecore: private Guid CreateContactList() { ContactListModel entity = new ContactListModel(); Guid guid = Guid.NewGuid(); entity.Id = guid.ToString(); entity.Type = ListType.ContactList.ToString(); entity.Name = "My new contact list"; IRepository<...


4

Looks like your UAT is a Content Delivery Server and the List Manager is not disabled on it. Taken from the official Sitecore documentation (this one is for 8.2, but it hasn`t changed much from previous versions) Note You must completely disable List Manager and Path Analyzer on a content delivery server. So you will fix the error by removing the /...


4

I can tell you that List Manager has issues. There is a Hot Fix for List Manager that assists with many of these issues, but the one I'm thinking of is for EXM 3.3. I would be surprised if Sitecore support didn't have a hotfix for 3 4. I would log a Sitecore Ticket and ask if there is a fix for EXM 3.4 that is similar to hotfix EXM 3.3 135707. Reasons why ...


4

Sitecore 8.1 update 3 brought a change that allows custom Contact Data to be indexed. This means this Custom Contact data will be available to searched through the sitecore_analytics_index. This is implemented through a custom processor that extends the new contactindexable.loadfields pipeline. This allows data from custom xDB facets to be added to the ...


4

In the Media Library there is a “List Manager” folder present in the Vanilla installation of Sitecore 8.1 Update-3. You can plainly see it here: If this folder goes missing, or is not present, the CSV Upload Wizard will error out like described in the question. This situation occurred after an upgrade was completed in a stage environment, but then a ...


4

I'm taking a stab in the dark, but it sounds like this is an issue with the EventQueue getting too large. If as you say an event is generated in the EventQueue for every user being imported, then we're looking at 90,000 rows being generated for every import. These rows will only be removed when Sitecore's EventQueue CleanUp agent runs, and by default, this ...


4

I spent some time to have a look deeper at the List Management tool. Finally I didn't find a way how we can "inject" custom code to load "external" list of email address. But anyway, even if you find a way how to implement it, in my point of view, we have a few reasons why it is not a good idea: As you mentioned in the question, Sitecore List is not ...


4

The list of subscribed users is not stored on EXM.Master database . The users/contacts subscribtion is stored in xdb database, in the shards databases. To be more specific, this information is stored in ContactFacets table on ListSubscribtion facet This is not very well documented but you can find some information here: https://doc.sitecore.com/...


3

The AutoMap and AutoMapSource fields are used to configure automatic mapping of the contact identifiers: When configured, one does not have to select a File field manually in a dropdown. The auto-mapped field is hidden on UI and the value for that field is taken from another field marked as AutoMapSource. By default, 'Email address' is used as a source for ...


3

I have figured out this one. I am using SOLR contentSearch provider and SOLR 5.4.1 server. In my search.log file I found an error: 1880 14:10:54 ERROR Solr Error : ["org.apache.solr.search.SyntaxError: Cannot parse '((((contact.hasemail_b:(True) AND contact.isregisteredplayer_b:(True)) AND type_t:(contact)) AND (-(((contact.tags_sm:(ContactLists:{7785E04C-...


3

Here is a blog post describing what you need: Sitecore - proper way of adding contacts to contact lists . You should reference Sitecore.EmailCampaign.dll and use Sitecore.Modules.EmailCampaign.ClientApi.UpdateSubscriptions You need to fill email, firstname and lastname of your contact first. So your code can look like this: string managerRoot = ...


3

As I see, you already have enabled "All contacts (Entire database)".That is why your option disabled. You need to add segmentation for your list and set condition. After that you will see your contacts. This is standard behavior for lists.


3

Thanks to Pete Navarra, I was actually only searching one shard for the contact ID, for the user. In the end it was right where he thought it was. As a ListSubscriptions facet on the contact. To get it you can use this SQL // shard 0 SELECT TOP (1000) [ContactId] ,[FacetKey] ,[LastModified] ,[ConcurrencyToken] ,[FacetData] FROM [...


2

EXM uses a double opt-in process, so a contact will not be subscribed to a list before confirming subscription, see The EXM double opt-in process. In short: Contact subscribes to a list using the EXM ClientAPI An email which contains a link to confirm the subscription, is sent to the contact Contact clicks the link and is added to the list As the contact ...


2

Sitecore uses log4net as its logging component. You can change the logging levels for different parts of the Sitecore install. This is the default log settings found in the Sitecore.ContentSearch.config file: <log4net> <appender name="SearchLogFileAppender" type="log4net.Appender.SitecoreLogFileAppender, Sitecore.Logging"> <file value="...


2

Short Answer The out of the box solution is to ensure that the column names in your Excel CSV, match identically to the field names that they are being mapped to. As an example, one of the out-of-the-box fields is called First Name. If your CSV column heading has First Name, then the Import Wizard will automatically select that and match it to the field. ...


2

You are halfway there. If you have completed the customization of the Contact Facet, then you need to add Rule Definitions to the Segment Builder in Sitecore. There are a couple examples in Sitecore for Firstname and Surname that allow you to see how to create a Condition. Here's how I would do it: Add the Custom Contact Facet attribute to the Analytics ...


2

That's a know issue with Sitecore WFFM action Add Contact to Contact List. If you use EXM, you can use code below to override the default action. Remember that your contact should have First Name, Surname and Email set. If you don't use EXM, contact with Sitecore Support. They can provide you a support dll appropriate for your Sitecore and WFFM versions. ...


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