"Unable to find menu item with id" after first redeploy

I had project on Cuba V6 Then migrated it to V7 Everything worked perfectly. I didn’t change this code the only thing I did is probably changed JDK from 8 to 11 (though running compiled code on JRE8) and updated Cuba plugin for IDEA to the latest nightly . Then at some point (yeah I can fortunately go back in my git history but it’s not critical and you maybe are able to point me straight to the cause) when I deploy app and start it for the first time I get:

17:49:39.827 INFO  c.h.cuba.gui.config.WindowConfig        - WindowConfig initialized in 59 ms
17:49:41.041 ERROR com.haulmont.cuba.web.log.AppLog        - Exception in com.haulmont.cuba.web.AppUI: 
java.lang.IllegalArgumentException: Unable to find menu item with id: cabinet
	at com.haulmont.cuba.web.gui.components.mainwindow.WebAppMenu.getMenuItemNN(WebAppMenu.java:196) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.dtc.callbook.web.screens.ExtAppMainWindow.init(ExtAppMainWindow.java:84) ~[app-web-0.2-SNAPSHOT.jar:na]
	at com.haulmont.cuba.gui.components.AbstractWindow.init(AbstractWindow.java:96) ~[cuba-gui-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.bali.events.EventHub.publish(EventHub.java:170) ~[cuba-global-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.gui.screen.Screen.fireEvent(Screen.java:128) ~[cuba-gui-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.gui.screen.UiControllerUtils.fireEvent(UiControllerUtils.java:58) ~[cuba-gui-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.web.sys.WebScreens.createScreen(WebScreens.java:242) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.web.sys.WebScreens.create(WebScreens.java:165) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.gui.Screens.create(Screens.java:70) ~[cuba-gui-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.web.sys.navigation.navigationhandler.RootNavigationHandler.doHandle(RootNavigationHandler.java:84) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.web.sys.navigation.ScreenNavigator.handleScreenNavigation(ScreenNavigator.java:53) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.web.AppUI.processRequest(AppUI.java:650) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.web.AppUI.processExternalLink(AppUI.java:608) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.web.AppUI.init(AppUI.java:346) ~[cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.vaadin.ui.UI.doInit(UI.java:738) ~[vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
	at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:209) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
	at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:67) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
	at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
	at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1577) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
	at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:425) [vaadin-server-8.6.4-12-cuba.jar:8.6.4-12-cuba]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.serviceAppRequest(CubaApplicationServlet.java:329) [cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at com.haulmont.cuba.web.sys.CubaApplicationServlet.service(CubaApplicationServlet.java:215) [cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:741) [servlet-api.jar:na]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) [tomcat-websocket.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73) [spring-web-5.1.6.RELEASE.jar:5.1.6.RELEASE]
	at com.haulmont.cuba.web.sys.CubaHttpFilter.doFilter(CubaHttpFilter.java:93) [cuba-web-7.1-SNAPSHOT.jar:7.1-SNAPSHOT]
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) [catalina.jar:9.0.14]
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) [catalina.jar:9.0.14]
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [catalina.jar:9.0.14]
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [catalina.jar:9.0.14]
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) [catalina.jar:9.0.14]
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) [catalina.jar:9.0.14]
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) [catalina.jar:9.0.14]
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668) [catalina.jar:9.0.14]
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) [catalina.jar:9.0.14]
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) [catalina.jar:9.0.14]
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) [tomcat-coyote.jar:9.0.14]
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-coyote.jar:9.0.14]
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:834) [tomcat-coyote.jar:9.0.14]
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417) [tomcat-coyote.jar:9.0.14]
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-coyote.jar:9.0.14]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_181]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_181]
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-util.jar:9.0.14]
	at java.lang.Thread.run(Thread.java:748) [na:1.8.0_181]

Though I have:
\modules\web\src\com\dtc\callbook\web\screens\ExtAppMainWindow.java :

package com.dtc.callbook.web.screens;

public class ExtAppMainWindow extends AppMainWindow {
   //...

    @Override
    public void ready() {
        super.ready();
        openWindow("callbookScreen", OpenType.NEW_TAB);
    }

    @Override
    public void init(Map<String, Object> params) {
        super.init(params);
        //..
        AppMenu.MenuItem item = createMenuItem("admin-menu", null, null);
        AppMenu.MenuItem subItem;
        // HERE is ExtAppMainWindow.java:84
        item = mainMenu.getMenuItemNN("cabinet");
        if (currentMember != null) {
            item.setCommand(menuItem -> {
                AppBeans.get(WindowManagerProvider.class).get().openEditor(wc.getWindowInfo("cabinet"), currentMember, OpenType.NEW_TAB);
            });
        } else {
            item.setVisible(false);
        }
      //..
    }

    private AppMenu.MenuItem createMenuItem(String id, @Nullable String icon, @Nullable Consumer<AppMenu.MenuItem> command) {
        return mainMenu.createMenuItem(id, messages.getMessage("", "menu-config." + id), icon, command);

    }

}

C:\D\CallBookV7_planner\modules\web\src\com\dtc\callbook\web-menu.xml :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<menu-config xmlns="http://schemas.haulmont.com/cuba/menu.xsd">
    <menu id="application-callbook"
          insertBefore="administration">
        <item screen="callbook$Ministry.browse"/>
    </menu>
    <item icon="BOOK"
          insertBefore="administration"
          screen="callbookScreen">
        <param name="mode"
               value="Default"/>
    </item>
    <item id="cabinet"
          icon="USER"
          insertBefore="administration"/>
    <menu id="application-planner"
          insertBefore="administration">
        <!--...-->
    </menu>
</menu-config>

C:\D\CallBookV7_planner\modules\web\src\com\dtc\callbook\web\screens\ext-mainwindow.xml :

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<window xmlns="http://schemas.haulmont.com/cuba/window.xsd"
        class="com.dtc.callbook.web.screens.ExtAppMainWindow"
        extends="/com/haulmont/cuba/web/app/mainwindow/mainwindow.xml"
        messagesPack="com.dtc.callbook.web.screens">
    <dialogMode height="600"
                width="800"/>
    <layout/>
</window>

And what’s the most interesting - everything works as expected!

I believe it may be connected to multithreaded execution maybe…

I still don’t know why. Could you help?