AX 2012 R2: Model upgrade check list does not disappear
Subject
This post discusses a scenario when the ModelStore gets updated after applying KB hot fix. However the checklist keeps coming after it is fully completed and there is no way to make it disappear permanently.
Audience
Dynamics AX 2012 (FP, R2 R3) X++ Developers, Technical consultants, Functional consultants, and advanced users.Background
Hot fix implementations are a regular task for developers and technical personnel alike. After any hot fix, a checklist is presented to the user mainly to recompile the whole application and synchronize. The checklist depends on the type of upgrade and can be of the following type
Problem
Sometimes however, hot fix implementation fails which can have any reason. In our scenario we faced a similar situation where we had to undo the hot fix. We simply restored the model store database. However the model upgrade checklist would keep coming.Checklist Framework
There is a solution provided by the framework. It is the menu item provided in the Checklist section. The full navigation is: /System administration/Area page/Setup/Checklists/Prevent startup of checklists
What it does ?
Points to Action menu item: SysCheckList_InitNoUpdate
Which then calls the SysCheckList class with the base enum: SysCheckListType and SetDB as selected value.
The main method for this base enum value provided runs the following
case SysCheckListType::SetDB : SysCheckList::initNoUpdate(true); return; //mark upgrade and setup as finished
This method fires the SysSetupLog::saveEx() and SysSetupPartitionLog::saveEx() methods which updates the SysSetupLog and SysSetuppartitionLog tables with values representing the completed status for each type of checklist. These methods are called for each checklist type. This is achieved by sending the name of the class specialized for each checklist type to the save methods. Hence for each type, a complete record is maintained in the database. This gives the hint that this table is read at the client startup to evaluate if any checklist remains to be updated. See image below
SysCheckList::initNoUpdate() method body |
A failed attempt
I marked all such records as completed. Nothing happened. Checklist kept coming. There is definitely more to the doings of the mentioned method which I would have missed in my update query.
The focus of this post is not to understand the SysCheckList class and its internals, neither was it my focus when trying to get rid of the checklist. So... I googled :D
The focus of this post is not to understand the SysCheckList class and its internals, neither was it my focus when trying to get rid of the checklist. So... I googled :D
Solution
SysCheckList_Update::finalizeMinorUpgrade();
The link shared in the following section provided the solution to this problem. This is why for every such problem, we should try to searching for relevant API provided in the framework.
This method actually does similar things discussed above along with deleting unwanted records from SysSetupLog table and updating the ReleaseUpdateConfiguration table. However, it does it fully and bring results.
This method actually does similar things discussed above along with deleting unwanted records from SysSetupLog table and updating the ReleaseUpdateConfiguration table. However, it does it fully and bring results.
Links
- http://dynamicsuser.net/forums/p/76421/421256.aspx