I found these steps below are very effective to clear up weird issues after code/data migration or when users start experiencing wacky behaviors
STEP 1: Run the job below
public server static void FlushAll(Args _args) { Args args; // Leave the "args" as null will skip the info messages normally shown when using menu items. SysFlushAOD::main(args); SysFlushData::main(args); SysFlushDictionary::main(args); }
STEP 2: Delete user cache
Method 1:
- STOP AOS
- Log on to TS where all users use to connect to AX
- Search of *.AUC files and delete all these files
- Restart AOS
Method 2:
- Run this job on TS where all users use to connect to AX.
static void ClearAucFileForUsers(Args _args) { System.Array files; int fileCount; int i; str nextFile; str path = "C:\\Users"; str Finalpath; str pattern = "*.auc"; container listOfFiles; int DirCount; System.Array Directories; int j; str nextDir; container listOfDir; FileIOPermission dirPermission, filePermission; InteropPermission interopPermission; Set permissionSet; new InteropPermission(InteropKind::ClrInterop).assert(); listOfDir = conNull(); listOfFiles = connull(); Directories = System.IO.Directory::GetDirectories(path); if(Directories) { DirCount = Directories.get_Length(); for(j=0; j < DirCount; j++) { nextDir = Directories.GetValue(j); Finalpath = nextDir + "\\AppData\\Local"; listOfDir += Finalpath; } } j=0; DirCount = conLen(listOfDir); while( j < conLen(listOfDir)) { j++; Finalpath = conPeek(listOfDir,j); try { files = System.IO.Directory::GetFiles(Finalpath, pattern); } catch { continue; } if (files) { fileCount = files.get_Length(); for(i=0; i < fileCount; i++) { nextFile = files.GetValue(i); System.IO.File::Delete(nextFile); info(nextFile); } } } CodeAccessPermission::revertAssert(); }
- Stop and Restart AOS
STEP 3: Delete SysLastValue
static void DeleteAllLastValue(Args _args) { SysLastValue syslastValue; ttsBegin; delete_from syslastValue; ttsCommit; }