Hello, fellow Sitecorians!
What a wonderful day, it’s spring in the air(at least here in southern Sweden) 🙂
This is a short post about Sitecore Commerce 8.2.1 and an incredibly annoying bug. Suddenly the registration function stopped working.
I checked the logs and noticed this:
Exception: CommerceServer.Core.Runtime.Profiles.CommerceProfileSystemException Message: Failed to persist profile to underlying stores. Source: CommerceServer.Core.Runtime at CommerceServer.Core.Runtime.Profiles.Profile.Update() at Sitecore.Commerce.Connect.CommerceServer.Profiles.CommerceServerProfileProvider.GetUserProfile(String userName) at Sitecore.Commerce.Connect.CommerceServer.Profiles.CommerceServerProfileProvider.SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection) at Sitecore.Security.SwitchingProfileProvider.SetPropertyValues(SettingsContext context, SettingsPropertyValueCollection collection) at System.Configuration.SettingsBase.SaveCore() at System.Configuration.SettingsBase.Save() at System.Web.Profile.ProfileBase.SaveWithAssert() at System.Web.Profile.ProfileBase.Save() at Sitecore.Security.UserProfile.Save() at Sitecore.Security.SecurityUtil.SetUserDigestCredentials(User user, String credentials, String credentialsWithoutDomain) at Sitecore.Security.SitecoreMembershipProvider.CreateUser(String username, String password, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, Object providerUserKey, MembershipCreateStatus& status) at System.Web.Security.Membership.CreateUser(String username, String password, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, Object providerUserKey, MembershipCreateStatus& status) at System.Web.Security.Membership.CreateUser(String username, String password, String email) at Sitecore.Security.Accounts.User.Create(String userName, String password) at Sitecore.Commerce.Data.Customers.SitecoreUserRepository.Create(CommerceUser entity, String password) at Sitecore.Commerce.Pipelines.Customers.CreateUser.CreateUserInSitecore.CreateUser(CreateUserRequest request, CreateUserResult result) at (Object , Object[] ) at Sitecore.Pipelines.CorePipeline.Run(PipelineArgs args) at Sitecore.Pipelines.DefaultCorePipelineManager.Run(String pipelineName, PipelineArgs args, String pipelineDomain) at Sitecore.Commerce.Pipelines.PipelineService.RunPipeline[TArgs](String pipelineName, TArgs args) at Sitecore.Commerce.Services.ServiceProvider.RunPipeline[TRequest,TResult](String pipelineName, TRequest request) ... Nested Exception Exception: System.Runtime.InteropServices.COMException Message: Exception from HRESULT: 0x80040E2F Source: CommerceServer.Core.Interop at CommerceServer.Core.Interop.Profiles.IProfileObject2.Update() at CommerceServer.Core.Runtime.Profiles.Profile.Update()
So I googled and stumbled upon this:
Failed to persist profile to underlying stores in sitecore.stackexchange.com – https://sitecore.stackexchange.com/questions/12433/failed-to-persist-profile-to-underlying-stores
Exactly the same error BUT it had nothing to do with “Looks like your profile and/or encryption might not be set up properly“(the suggested answer).
I was going crazy, I could not find the reason!
But… after many hours I finally found the issue.
I looked into the table UserObject and there it was. Somehow, a user managed to register with all fields set to NULL, except for “u_external_id” and “u_user_id”.
That puppy managed to stop the registration function for the entire website!
After removing the “faulty” user, the registration began to work again.
That’s all for now folks 🙂