1

I've encountered a very weird issue which I was hoping to get some advice on. I've implemented a custom facet in Experience Profile - Sitecore 9.1 which works fine. On my environment there's no problem at all. However after it was deployed to test, for the part of the contacts (added before and after my changes) standard First Name field is not present in the Experience Profile. It's not consistent: sometimes the first name is back for a specific contact but most of the times it's not there. At the same time all of the contacts have their first name visible in List Manager.

I've tried rebuilding the xDB search index, that didn't help.

Here's what it looks like in Experience profile: experience profile: first name missing

Here's the List Manager: list manager: same contact has first name visible

Update: Here’s more details on the facet I added: I needed it to reflect a specific choice that user makes when they fill out the form i.e. chooses a puppy in the puppy voting contest.

Here’s the config I used to have it working & displayed in the profile:

  <sitecore>
    <dataAdapterManager defaultProvider="xconnect">
      <providers>
        <add name="xconnect" type="Sitecore.Analytics.XConnect.DataAccess.XConnectDataAdapterProvider, Sitecore.Analytics.XConnect" fallbackProvider="mongo">
          <facets hint="raw:AddFacet">
            <facet facetKey="ChosenPuppy" />
          </facets>
        </add>
      </providers>
    </dataAdapterManager>

    <xconnect>
      <runtime type="Sitecore.XConnect.Client.Configuration.RuntimeModelConfiguration,Sitecore.XConnect.Client.Configuration">
        <schemas hint="list:AddModelConfiguration">
          <schema name="PuppyFacetModel" type="Sitecore.XConnect.Client.Configuration.StaticModelConfiguration,Sitecore.XConnect.Client.Configuration" patch:after="schema[@name='collectionmodel']">
            <param desc="modeltype">AcmeCorporation.Feature.TestFeature.Models.ChosenPuppyFacet.PuppyFacetModel, AcmeCorporation.Feature.TestFeature</param>
          </schema>
        </schemas>
      </runtime>
    </xconnect>
  </sitecore>


  public class PuppyFacet: Facet
  {
      public const string FacetName = "ChosenPuppy";

      public const string FacetFriendlyName = "Chosen Puppy";

      public string ChosenPuppy { get; set; }
  }

Here’s a json file deployed to:

  • xconnect instance roost path\App_Data\Models
  • xconnect instance root path\App_Data\jobs\continuous\IndexWorker\App_data\Models

https://gist.github.com/epetrashen/3ff4a920496ddffda2c2528aa9064bda (sorry for the link, I could not get the json to display in the proper formatting if I paste it and try to show as code)

I use EPEXpress tab to display the facet content in Contact Card. I also added it to the .csv export using the way described here: Export all information related to Contacts using List Manager

5
  • I don't think that this is an xDB issue. But I'm not sure what it is. List Manager gets First and Last Name from the Personal Facet on the Contact.. so it would appear to be there. What custom facet did you add, why, and did you modify the Experience Profile any? Commented Nov 20, 2020 at 14:26
  • @PeteNavarra Yes, the [ContactFacets] table in the database is populated properly, so I was thought maybe there might be a difference in the way data is delivered from there for List Manager view and Contact Card view. I've updated my question to reflect more on the facet I've added.
    – Elena P
    Commented Nov 20, 2020 at 18:00
  • I wonder if it's a version/bug/compatibility issue with EPEXpress tab. xDB looks correct, and your facet looks correct. Commented Nov 20, 2020 at 18:01
  • thank you, that's a fair point that I haven't really considered. I guess I'll have to try to do it with SPEAK instead and see if it works better
    – Elena P
    Commented Nov 20, 2020 at 18:16
  • 1
    Godspeed on a SPEAK customization journey. You might check in with the authors of EPEXpress Tab and make sure that there isn't already a known issue around it. Commented Nov 20, 2020 at 18:35

2 Answers 2

1

In this specific scenario, it appears that your custom Contact Facet is correctly applied and that xDB is correctly capturing and storing the Personal facet, as expected.

Things to ensure that it's working, which you have tested, include:

  1. Opening up List Manager and seeing that contacts show First and Last Name.
  2. Experience Profile can read the name evidenced by the Title on Experience Profile.

It would appear, that your problem might involve the third-party code of EPEXpress Tab which does make changes to the Experience Profile in order to work. It's possible that there is a known issue with that module that you'll need to reach out to the developers on.

Jeff Darchuk is the author of the EPExpress Tab which can be found here: https://github.com/JeffDarchuk/EPExpressTab

1

The problem turned out to be in the .cshtml file I've used to display the tab content in Experience Profile - and it didn't even get under my radar at all, Sergey from Sitecore Support pointed this out to me. I wanted to keep content in my tab the same style as "Details" tab so I copied some markup from Details and it looked like this:

<div data-sc-id="FirstNameBorder" class="sc-border sc_Border_505 data-sc-registered">
   <span data-sc-id="FirstNameLabel" class="sc-text sc_Text_436 data-sc-registered">@Model.PuppyLabel</span>
   <span data-sc-id="FirstNameValue" class="sc-text sc_Text_439 data-sc-registered">@Model.PuppyName</span>
</div>

(there are styles attached specifically to FirstNameBorder, FirstNameLabel etc)

So FirstNameBorder was rendered twice and there were conflicts because of this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.