There are incomplete migration steps. The site can be in unstable state. Please navigate to front-end site and complete remaining migration steps, then restart Commerce Manager site. If you see this message on the front-end site, it means no Catalog Content models (decorated with the CatalogContentType attribute) were found. Add a Catalog Content type, or set the appSetting 'episerver:SkipCatalogContentModelCheck' to true to bypass this check. Warning! Bypassing this check in the Commerce Manager site or other application which does not have the content model types available could lead to data loss!
this should not a problem as your site is already running. this is only for new site/just upgraded site
if you open the browser console, can you see any error in the network tab ?
OK, so to try to get a fresh start I've done the following. Restored a version of our CMS-database to before Commerce was installed, also reverted the Commerce-database to an empty one. I then install Commerce and the follwing log messages stand out a bit:
Value cannot be null. Parameter name: contentType.Base. Implement IContentTypeBaseProvider and provide a ContentTypeBase for the content type 'RootContent' or its base type.","Properties":{"State":"Value cannot be null. Parameter name: contentType.Base. Implement IContentTypeBaseProvider and provide a ContentTypeBase for the content type 'RootContent' or its base type.
Not sure if that has anything to do with this?
Also the following error is logged again but as you say, maybe that is just at the first start after an upgrade that this is shown?
There are incomplete migration steps.
Trying to open the catalog I see this error (404 Not found) in the browser console:
Object { message: "Unable to load /EPiServer/shell/Stores/context/?uri=epi.cms.contentdata%3A%2F%2F%2F-1073741823__CatalogContent status: 404", stack: "_317@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:78148\n_4f2@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:133806\n_4fe@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:134085\nEventListener.handleEvent*_4f8@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:134369\nxhr@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:135460\ndojo/_base/xhr/</dojo.xhr@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:124996\n_sendRequest@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/epi/shell/widgets.js:2:345594\nepi/shell/request/Extender/</xhr/<@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/epi/shell/widgets.js:2:345194\ndojo/_base/lang/</hitch/<@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:30941\n_2f2@https://cmsurl.se/EPiServer/Shell/12.21.0/Cl…", response: {…}, status: 404, responseText: '\r\n\r\n<!DOCTYPE html>\r\n<html lang="en">\r\n<head>\r\n <title>Resource Not Found</title>\r\n <meta charset="utf-8">\r\n <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\r\n <meta name="viewport" content="width=device-width, initial-scale=1">\r\n <link type="image/x-icon" rel="shortcut icon" href="/Util/images/favicon.ico" />\r\n <link type="text/css" rel="stylesheet" href="/Util/styles/errorpage.css" />\r\n</head>\r\n<body class="epi-workspace">\r\n <div class="error-wrapper">\r\n <div class="friendly-error">\r\n <h1 class="fiendly-error-header">Resource Not Found</h1>\r\n <p class="fiendly-error-content">Unfortunately, the resource you’re looking for couldn’t be found or does not exist anymore.</p>\r\n </div>\r\n </div>\r\n</body>\r\n</html>\r\n', xhr: XMLHttpRequest }
message: "Unable to load /EPiServer/shell/Stores/context/?uri=epi.cms.contentdata%3A%2F%2F%2F-1073741823__CatalogContent status: 404"
response: Object { url: "/EPiServer/shell/Stores/context/?uri=epi.cms.contentdata%3A%2F%2F%2F-1073741823__CatalogContent", status: 404, text: '\r\n\r\n<!DOCTYPE html>\r\n<html lang="en">\r\n<head>\r\n <title>Resource Not Found</title>\r\n <meta charset="utf-8">\r\n <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\r\n <meta name="viewport" content="width=device-width, initial-scale=1">\r\n <link type="image/x-icon" rel="shortcut icon" href="/Util/images/favicon.ico" />\r\n <link type="text/css" rel="stylesheet" href="/Util/styles/errorpage.css" />\r\n</head>\r\n<body class="epi-workspace">\r\n <div class="error-wrapper">\r\n <div class="friendly-error">\r\n <h1 class="fiendly-error-header">Resource Not Found</h1>\r\n <p class="fiendly-error-content">Unfortunately, the resource you’re looking for couldn’t be found or does not exist anymore.</p>\r\n </div>\r\n </div>\r\n</body>\r\n</html>\r\n', … }
responseText: '\r\n\r\n<!DOCTYPE html>\r\n<html lang="en">\r\n<head>\r\n <title>Resource Not Found</title>\r\n <meta charset="utf-8">\r\n <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\r\n <meta name="viewport" content="width=device-width, initial-scale=1">\r\n <link type="image/x-icon" rel="shortcut icon" href="/Util/images/favicon.ico" />\r\n <link type="text/css" rel="stylesheet" href="/Util/styles/errorpage.css" />\r\n</head>\r\n<body class="epi-workspace">\r\n <div class="error-wrapper">\r\n <div class="friendly-error">\r\n <h1 class="fiendly-error-header">Resource Not Found</h1>\r\n <p class="fiendly-error-content">Unfortunately, the resource you’re looking for couldn’t be found or does not exist anymore.</p>\r\n </div>\r\n </div>\r\n</body>\r\n</html>\r\n'
stack: "_317@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:78148\n_4f2@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:133806\n_4fe@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:134085\nEventListener.handleEvent*_4f8@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:134369\nxhr@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:135460\ndojo/_base/xhr/</dojo.xhr@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:124996\n_sendRequest@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/epi/shell/widgets.js:2:345594\nepi/shell/request/Extender/</xhr/<@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/epi/shell/widgets.js:2:345194\ndojo/_base/lang/</hitch/<@https://cmsurl.se/EPiServer/Shell/12.21.0/ClientResources/dojo/dojo.js:15:30941\n_2f2@https://cmsurl.se/EPiServer/Shell/12.21.0/Cl…"
status: 404
xhr: XMLHttpRequest { readyState: 4, timeout: 0, withCredentials: false, … }
<prototype>: Object { name: "RequestError", constructor: _317(_318), stack: "" }
epi.js:2:44507
Where is this root catalog supposed to be created? You mentioned a migration step in this thread: https://world.optimizely.com/forum/developer-forum/Commerce/Thread-Container/2018/7/getting-error-when-loading-commerce-catalog/.
I guess this is where the action should happen? But doesn't for some reason
RootContent is a virtual content, it's created on fly, never saved to database. Have you tried to run this code
if (_contentLoader.TryGet(_referenceConverter.GetRootLink(), out IContent content))
{
var securableContent = (IContentSecurable)content;
var defaultAccessControlList = (IContentSecurityDescriptor)securableContent.GetContentSecurityDescriptor().CreateWritableClone();
defaultAccessControlList.AddEntry(new AccessControlEntry(Security.RoleNames.CommerceAdmins, AccessLevel.FullAccess, SecurityEntityType.Role));
defaultAccessControlList.AddEntry(new AccessControlEntry(EveryoneRole.RoleName, AccessLevel.Read, SecurityEntityType.Role));
_contentSecurityRepository.Save(content.ContentLink, defaultAccessControlList, SecuritySaveType.Replace);
}
OK, good to know! I wasn't sure about if I could trust executing code that was mentioned back in 2018 (https://world.optimizely.com/forum/developer-forum/Commerce/Thread-Container/2018/7/getting-error-when-loading-commerce-catalog/) but now I've tried adding the code to an InitializationModule and now I can see the Root catalog 😀
Also dug a little deeper into why this could have happened.
To start with I looked up the migration step in EPiServer.Commerce.Internal.Migration.dll where this migration code is located and saw that the code was actually the same now as in 2018 (and I guess even earlier than that) so that made me feel safe about executing it now 😎
Also saw the view VW_EPiServer.Commerce.Internal.Migration.MigrationStepInfo mentioned here https://world.optimizely.com/forum/developer-forum/Commerce/Thread-Container/2016/11/add-imigrationstep-for-existing-working-site/ and if I look in the lines in that view I can see that the migration step SetRootAccessControlEntriesStep actually has already been run more than three years ago 🤯 I must, at some point that I've forgotten about now, have installed commerce also in our production environment and then reverted that installation since we didn't plan to start the ecommerce work at that point in time.
The question now is if there are other migration steps that I should run again, or if I should just keep my fingers crossed and hope for the best? I guess we'll find out eventually anyway...
Is there any chance that we will face problems along the road based on other migrations that "should be run again"? Here's a list of the once mentioned in the view in SQL Server:
I understand that the information about the migration steps that have been run are stored in the table tblBigTable with StoreName = 'EPiServer.Commerce.Internal.Migration.MigrationStepInfo', could it cause other issues if I remove those lines, forcing the migrations to be run again?
Hello,
We're in the process of installing Commerce into an already existing CMS-site and come across this problem when trying to open the Commerce Catalog.
A popup shows up showing the following error message:
The same issue has been mentioned in https://world.optimizely.com/forum/developer-forum/Commerce/Thread-Container/2018/7/getting-error-when-loading-commerce-catalog/ and I've tried to fix the issue in the way that's mentioned there, making sure that my account is part of a group called Administrators (having to disable Azure AD login for the moment) and run migrations (https://localhost:xxxxx/EPiServer/Commerce/Migrate/index?autoMigrate=true), but without any change or progress.
I've seen an error message like this in the logs previously:
There are incomplete migration steps. The site can be in unstable state. Please navigate to front-end site and complete remaining migration steps, then restart Commerce Manager site. If you see this message on the front-end site, it means no Catalog Content models (decorated with the CatalogContentType attribute) were found. Add a Catalog Content type, or set the appSetting 'episerver:SkipCatalogContentModelCheck' to true to bypass this check. Warning! Bypassing this check in the Commerce Manager site or other application which does not have the content model types available could lead to data loss!
But adding a class that is decorated with the CatalogContentType-attribute makes no difference.
I also saw this message one out of three times when starting the site:
Not sure about if that can be connected?
Any help would be greatly appreciated.
/Martin