Can't use Modern Shell

We started our attempt at an upgrade on May 22 (from 10 to 2023). Been working with support for over two months now trying to get Kinetic to work.
We’ve fixed numerous issues but still have one holding us back from moving forward. So forth, support and our team have had no luck so thought I would reach out here and see if anyone has faced something similar.

I can log into Kinetic or Classic, but cannot log into modern. The other IT guy can login fine. Doesn’t matter which workstation. If I attempt to login from his, it fails. If he logs in from mine, it’s fine. I have a couple accounts: a normal one and a “dummy” one with practically no permissions that I use for testing things. If I log in with my main account, I get this error:

Server Side Exception

Data at the root level is invalid. Line 1, position 1.

Exception caught in: Epicor.ServiceModel

Error Detail
============
Description: Data at the root level is invalid. Line 1, position 1.

Correlation ID:  ff2d9761-b1ca-498e-ba2f-854edd3a4f06

Client Stack Trace
==================
   at Ice.Cloud.ProxyBase`1.CallWithCommunicationFailureRetry(String methodName, ProxyValuesIn valuesIn, ProxyValuesOut valuesOut, RestRpcValueSerializer serializer)
   at Ice.Cloud.ProxyBase`1.CallWithMultistepBpmHandling(String methodName, ProxyValuesIn valuesIn, ProxyValuesOut valuesOut, Boolean useSparseCopy)
   at Ice.Cloud.ProxyBase`1.Call(String methodName, ProxyValuesIn valuesIn, ProxyValuesOut valuesOut, Boolean useSparseCopy)
   at Ice.Proxy.BO.ShellLayoutImpl.GetUserOptionsForUser(String homePageType, String subType, String layoutId)
   at IceShell.Apps.Layout.UserOptionsDataManager.<LoadUserOptions>b__20_0(ShellLayoutImpl bo)
   at IceShell.Apps.Layout.ShellLayoutBOWrapper.CallBOMethod[TReturn](Func`2 actionToRun)
   at IceShell.Apps.Layout.UserOptionsDataManager.LoadUserOptions(Session session)
   at IceShell.SessionManager.LoadShellUserSettings()
   at IceShell.SessionManager.loadUserSettings(String userID, Boolean changeUserEvent)
   at IceShell.SessionManager.InitializeInitialSession(Session initialSession)
   at IceShell.SessionManager.<.ctor>b__32_1(Object _, SessionChangedEventArgs e)
   at Ice.Lib.UI.SessionCache.OnInitialSessionChangedEvent(SessionChangedEventArgs e)
   at Ice.Lib.UI.SessionCache.SetInitialSession(Session session)
   at Ice.Lib.UI.SessionCache.set_CurrentSession(Session value)
   at IceShell.SplashScreenApp.logon_LogonEnded(Object sender, EventArgs e)
   at IceShell.Apps.LogonDialog.OnLogonEnded(Object sender, EventArgs e)
   at IceShell.Apps.LogonDialog.StopLogon()
   at IceShell.Apps.LogonDialog.DoWorkLogon()
   at IceShell.Apps.LogonDialog.btnOK_ButtonClick(Object sender, InputEventArgs e)
   at IceShell.ImageButton.Click(InputEventArgs e)
   at IceShell.ImageButton.OnAccessKeyPressed(Object sender, AccessKeyPressedEventArgs e)
   at System.Windows.Input.AccessKeyPressedEventArgs.InvokeEventHandler(Delegate genericHandler, Object genericTarget)
   at System.Windows.RoutedEventArgs.InvokeHandler(Delegate handler, Object target)
   at System.Windows.RoutedEventHandlerInfo.InvokeHandler(Object target, RoutedEventArgs routedEventArgs)
   at System.Windows.EventRoute.InvokeHandlersImpl(Object source, RoutedEventArgs args, Boolean reRaised)
   at System.Windows.UIElement.RaiseEventImpl(DependencyObject sender, RoutedEventArgs args)
   at System.Windows.UIElement.RaiseEvent(RoutedEventArgs e)
   at System.Windows.Input.AccessKeyManager.GetInfoForElement(IInputElement element, String key)
   at System.Windows.Input.AccessKeyManager.GetTargetsForScope(Object scope, String key, IInputElement sender, AccessKeyInformation senderInfo)
   at System.Windows.Input.AccessKeyManager.GetTargetsForSender(IInputElement sender, String key)
   at System.Windows.Input.AccessKeyManager.ProcessKeyForSender(Object sender, String key, Boolean existsElsewhere, Boolean userInitiated)
   at System.Windows.Input.AccessKeyManager.OnKeyDown(KeyEventArgs e)
   at System.Windows.Input.AccessKeyManager.PostProcessInput(Object sender, ProcessInputEventArgs e)
   at System.Windows.Input.InputManager.RaiseProcessInputEventHandlers(ProcessInputEventHandler postProcessInput, ProcessInputEventArgs processInputEventArgs)
   at System.Windows.Input.InputManager.ProcessStagingArea()
   at System.Windows.Input.InputManager.ProcessInput(InputEventArgs input)
   at System.Windows.Input.InputProviderSite.ReportInput(InputReport inputReport)
   at System.Windows.Interop.HwndKeyboardInputProvider.ReportInput(IntPtr hwnd, InputMode mode, Int32 timestamp, RawKeyboardActions actions, Int32 scanCode, Boolean isExtendedKey, Boolean isSystemKey, Int32 virtualKey)
   at System.Windows.Interop.HwndKeyboardInputProvider.ProcessKeyAction(MSG& msg, Boolean& handled)
   at System.Windows.Interop.HwndSource.CriticalTranslateAccelerator(MSG& msg, ModifierKeys modifiers)
   at System.Windows.Interop.HwndSource.TranslateAcceleratorCore(MSG& msg, ModifierKeys modifiers)
   at System.Windows.Interop.HwndSource.System.Windows.Interop.IKeyboardInputSink.TranslateAccelerator(MSG& msg, ModifierKeys modifiers)
   at System.Windows.Forms.Integration.ElementHost.ProcessCmdKey(Message& msg, Keys keyData)
   at IceShell.Apps.Controls.WinformsControlHost.ProcessCmdKey(Message& msg, Keys keyData)
   at System.Windows.Forms.Control.PreProcessMessage(Message& msg)
   at System.Windows.Forms.Control.PreProcessControlMessageInternal(Control target, Message& msg)
   at System.Windows.Forms.Application.ThreadContext.PreTranslateMessage(MSG& msg)

You can OK through it, and the login launcher stays up but nothing happens. If I use my “dummy” account, I get no error. It opens the main page and immediately closes (before you can even see anything on the home page)

I also tried creating a new user. I get the same response as my main user (error then closes).
If I log in with the working user (the other IT guy) then switch to one of my accounts, I get no error but Epicor immediately closes.

All personalizations have been removed (both through the conventional channels, and through SQL (at the direction of Epicor support using their SQL query).

When comparing the user that works and my user, pretty much everything is the same (personal details are different).

Any thoughts or ideas?

It’s been a while since I’ve used the modern shell, but I feel like I’ve seen this error when the “Recents” widget gets messed up.

That being said–the rest of what you mentioned doesn’t jive to well with that theory, primarily around the part where you mentioned creating a new user and having that same issue, SO…

I have also seen inexplicable Epicor issues that have been solved by creating a new Windows profile. Something happened to the original (don’t ask me what, I have no idea) and creating a new one fixed it.

Do with all that what you will.

Thank you very much for the reply, Hannah.
The Windows profile is not a bad thought, however, without changing which Windows user I am using, I can log in using one set of Epicor credentials, but not the other. I 100% could be wrong, but I would think that since I’m using the same Windows user and it works for one set of Epicor credentials and not the other set of Epicor credentials (still the same Windows user), that it probably isn’t going to be a Windows issue but doesn’t hurt to try it. If it fixes it, I’ll post back.

Tried using two other Windows profiles with the same results.

If you have not already tried, I would delete your ShellLayoutPersonal record.

3 Likes

Is there an easy way to do this? I tried creating a UBAQ but it doesn’t appear to want to work as the only BO I can find is for ShellLayout and not ShellLayoutPersonal.

I do think there is some merit to this as the users who are not working do have a different value in this field from the one that is working.

Should be in the Purge Personalizations screen.

I only had GlobalOptions and MainMenuHistory for my user. I deleted both of them but it didn’t remove the line. I know it can be done super easily with SQL but I know that’s a big no no and if I do that, Epicor support will more than likely stop helping.

Ask them for a DataFix to remove it since it can’t be purged, It is still sql, but they sent it to you. Do you have a test or pilot that has the same issue? I would whack it there to see if it made a difference.

I asked them if I could run it. They asked me to upload another copy of my database (same one I’ve uploaded a few times now).

We are trying to upgrade to Kinetic and they’ve only been able to get one to work - so it’s technically a test database but the only one.

Try deleting the following Folders:

%appdata%\..\Local\Epicor
%appdata%\..\Roaming\Microsoft\CLR Security Config
%AllUsersProfile%\Epicor

Im not sure what version you are on but there was a time the ShellLayout was in a username .config file in one of those locations above. I recall if it was corrupt, you couldnt login.

Did not have the CLR Security Config in Roaming\Windows.

Deleted the other two. Plus side, I’m no longer getting the error. However, it’s still not opening the main menu. It closes the login prompt and then does nothing.

I’m really thinking that the shellhomepage has to be the culprit since the one user that works points to epicor.com and the rest that don’t work either have nothing there or point to tempuri.org (bing)

Now if I can just get support to stop dragging their feet.

So I was able to make a UBAQ to update this, just had to make a couple changes to what it was looking for for key fields. After doing that and changing the shellhomepage on the users that weren’t working to match the one that was, they now can log in. One of them still gave me an error about Data at the Root level but once I purged that users personalizations, it can log in as well.

One odd bit, in the query for the table, some of the changed fields still show as the old value. But they now work. Others that I changed show the new value and also work.

I don’t have the ShellLayoutPersonal table in 10 so I’m guessing this is created when you upgrade to Kinetic, but it apparently only fixed the one user and left the others with blanks or the tempuri.org address.

Currently waiting for support to tell me if they want me to go ahead and fix them all with the UBAQ or if they want to send a fix.

2 Likes

Just in case anyone needs the changes for that UBAQ to get it to work:

1 Like