Cybersecurity
DevOps Cloud (ADM)
IT Operations Cloud
By Tommy Mikkelsen
1. Purpose
2. System preparation
2.1 Loglevel
2.2 NickName creation
2.3 Live move
2.4 Communication
3. User Move Preparations
3.1 Validate
3.2 Resources
3.3 User Reduce amount of items
3.4 Archive
3.5 User Database cleanup
3.6 Admin reduce amount of items
3.7 Backup
3.8 Alias
4. Move
5. Monitoring
5.1 Admin Portion of the Move
5.2 Transferring the Inventory List
5.3 Transferring the Items and Finishing the Move Process
5.4 Source POA Log Reference
6. Errors
6.1 Detecting Errors in User Moves
6.2 Fixing User Move Problems
7. Appendix
7.1 User move flow
7.2 Useful TIDs
This document is intended as a guideline in how to move a user from one Post Office to another, since this is a procedure that fails a lot of times.
This document is based on TIDs, LogicSource and Cool Solution articles, that all contributed to the success of a User move, but since I found that no matter where I looked, I could not find a complete solution.....
This document is not my invention, but more a compilation of numerous sources !!!
This document was a work in progress for me, and as such, I have no clue as to where I picked up the different bits, and do also not doubt, that as soon as this document is published, people will start to add stuff that I also forgot
When all above is said, I decided that I, even though I could not give proper credit, it should be published anyway, since this document might be handy for all the GW Admins out there.
First of all, the system must be configured, so the move will be as transparent as possible for not only the user that is to be moved, but also for all other users in the system.
2.1 Loglevel
Make sure that all involved domains and post offices are running verbose logging.
2.2 NickName creation
In order for users to send emails to each other within the system, the users are using their addressbooks.
The System Addressbook will be updated instantly when issuing a User Move, but the clients will not refresh the addressbooks instantly. Also, personal addressbooks, like the frequent addressbook, will only be updated during the nightly addressbook user upkeep procedure, and users running in Cache mode, default to update the addressbooks every 7 days only.
Due to this, the system should be set, so when a user move is issued, a nickname would automatically be created at the source post office of the user. That way, other users will not fail in sending mails to the user, even if their addressbooks isn’t updated yet.
This is done from within ConsoleOne menu Tools/GroupWise System Operations/System Preferences.
2.3 Live move
Live move means, that after the move has been issued from ConsoleOne, the transfer of the items will go directly from POA to POA.
To use Live moves, the POA must be enabled for this:
Furthermore, one must make sure that there’s enough threads allocated to the moves…
The default is 20% for the move threads, and should be increased if moving a lot of data…. Take care doing this though, since setting it to high will cause a bad performance for the remaining users on the Post Office.
Also make sure that enough Message Handler threads are allocated. (Bump from the default of 24 to 30 during the move)
Changing the above settings, req. that the POA is unloaded and reloaded.
2.4 Communication
Since the post offices are communicating directly with each other, the redirection table of the post office must be checked to insure that it is correct.
This can be seen either on the POA screen, by pressing F10, Configuration Options, Show redirection tables
or by looking at the webpage of the POA like this:
3.1 Validate
Run a Validate Database operation on each domain that will be participating in the user move. Be sure to do this for the primary, source, and destination domains as shown in the figure below. This will clean up potentially bad data, especially in the user records and their client options records. This bad data could cause the move to fail.
3.2 Resources
The first thing that must be done, is to check if the user is the owner of a Resource.
If so, the resource must be reassigned to another user, since a user can’t own a resource that belongs to another post office. Failing to do so, would cause the move to fail.
3.3 User Reduce amount of items
Tell the user to delete items that they don’t need anymore from their mailbox, and remind them to also check the sent items folder.
3.4 Archive
If possible, the user should archive as much as possible. This can be dearchived after the move has been completed.
3.5 User Database cleanup
The Users database should now be checked for any problems and inconsistency.
This is done by running the following jobs, and wait for one to complete before issuing the next one…
Structure and index check
If the above job returns any errors, try and run the job again.
Do NOT continue with the move until all errors have been resolved
Contents check
Same as the other check……Make sure ALL errors are resolved before the move
Pay attention to the resultant logs from these GWChecks. The following error in the GWCheck log is of particular importance when moving users:
Problem 82- Inaccessible attachment file
If any problem 82s are present, you must correct them with the ATTCLIP option in GWCheck. Any item with a Problem 82 will cause at least one user's move to get stuck.
Duplicate folders
Notice in above check, that the messagedatabase is not checked.
Above job has to be run again and again, until no more duplicate folders are reported.
(Some times up to 10 times)
3.6 Admin reduce amount of items
As the GroupWise Administrator, you should now reduce the databases and amount of items to be transferred. This should be done according to the policies used in the company.
As a minimum, a Reduce only should be run.
3.7 Backup
Make a backup copy of the following files:
Wpdomain.db files from the following domains:
Primary, Source and Target domain.
The User database.
3.8 Alias
If the user has a Gateway Alias, remove this before starting the move.
(For GW7 and above, do not use any Alias for the GWIA, instead, use internet Addressing Override)
We are now ready to move the user. This is done by doing the following:
From within ConsoleOne, right-click on the target domain, and select connect.
Then find the user, right-click and select move.
Analyzing Moves in Progress
User moves take place in two phases. The first phase is the admin move. This phase takes care of moving the user's mailbox and ensures that all domains and post offices in the system are aware of the user's new location.
The second phase of the move is called the mailbox move or the item move. This phase takes care of moving the contents of the user's mailbox.
The following example analyzes a move of a small mailbox. The move was completed with no errors.
UserA was moved from post office "SourcePO" to post office "DestPO." Both of these post offices exist in the "dom1" domain.
The following log was taken from the destination POA and has been split up into sections and edited for clarity to show only move-related activity.
5.1 Admin Portion of the Move
15:28:15 281 ADM: Completed: Rename object in post office - User dom1.SourcePO.UserA (Administrator: (TREENAME) admin.acme, Domain: dom1)15:28:15 281 ADM: Completed: Update object in post office - Misc dom1.DestPO (Administrator: (TREENAME) admin.acme, Domain: dom1)15:28:15 281 ADM: Completed: Update object in post office - Misc dom1.DestPO (Administrator: (TREENAME) admin.acme, Domain: dom1)
15:28:18 27F Processing admin task: Update Settings 15:28:18 27F Successful merge of settings for UserA 15:28:18 27F Processed OK15:28:18 27F Processing a2b98392.00315:28:18 27F Processing admin task: Update Settings 15:28:18 27F Successful merge of settings for UserA 15:28:18 27F Processed OK
The first log entries shows that the POA received a request to rename dom1.SourcePO.UserA. The POA did so and processed two follow-up requests to update the new object that exists in DestPO. UserA will now receive any new mail at DestPO instead of SourcePO. Following this change, the new user database was created in the destination post office and the user's settings were copied into that database.
Note that the POA shows that it was user admin.acme.TREENAME that requested the change and that dom1 was the domain where ConsoleOne was connected when the move request was initiated.
5.2 Transferring the Inventory List
15:28:28 265 *** NEW PHYS. CONNECTION, Tbl Entry=0, Socket=9715:28:28 265 *** NEW APP CONNECTION, Tbl Entry=0, Check ID=111945216915:28:28 265 C/S Login dos ::GW Id=UserA :: 137.65.55.22015:28:28 265 Remote Request From: UserA15:28:28 265 (TRACKMOVE) BEGIN PHASE - 'MvDstUser_SendRetrievalList_Begin_Live': UserA (wd9) 15:28:28 265 (TRACKMOVE) (Move.) Receiving Inventory List: UserA (wd9) 15:28:28 265 (TRACKMOVE) Receiving and storing INVENTORY list - should only happen once: UserA (wd9) 15:28:28 265 Purge record 02CC 15:28:28 265 (TRACKMOVE) (Move.) Inventory List Received (28): UserA (wd9) 15:28:28 265 (TRACKMOVE) (Move.) Queue First Deferred Retry Message: UserA (wd9) 15:28:28 265 (TRACKMOVE) END PHASE - 'MvDstUser_SendRetrievalList_Begin_Live' (0 0x00000000): UserA (wd9) 15:28:28 265 *** APP DISCONNECTED, Tbl Entry=0, Check ID=111945216915:28:28 265 *** PHYSICAL PORT DISCONNECTED, Tbl Entry=0, Socket=97
Please note the following steps shown in this section:
5.3 Transferring the Items and Finishing the Move Process
15:28:38 27F (TRACKMOVE) BEGIN PHASE - 'MvDstUser_SendRetrievalList_LiveRetry': UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) Requesting User Data: UserA (wd9) 15:28:38 27F (TRACKMOVE) Attempting 'MvDstUser_SendRetrievalList': UserA (wd9) 15:28:38 27F (TRACKMOVE) Beginning 'MvAnyUser_LiveMoveLogin': UserA (wd9) 15:28:38 27F (TRACKMOVE) Attempting connection 'MvAnyUser_LiveMoveLogin' to 137.65.55.220:1681: UserA (wd9) 15:28:38 27F (TRACKMOVE) Establish Transfer LIVE: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) Remaining Inventory Count (28): UserA (wd9) 15:28:38 27F (TRACKMOVE) BEGIN LIVE 'MvDstUser_SendRetrievalList_LiveDispatch': UserA (wd9) 15:28:38 27F (TRACKMOVE) Continue LIVE 'MvDstUser_SendRetrievalList_LiveDispatch' (1 0x00000001): UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) Folder Received: UserA (wd9) . . .15:28:38 27F (TRACKMOVE) (Move.) Folder Received: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) Bag Record Received: UserA (wd9) . . .
15:28:38 27F (TRACKMOVE) (Move.) Bag Record Received: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) Category Record Received: UserA (wd9) . . .15:28:38 27F (TRACKMOVE) (Move.) Category Record Received: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) Item Received: UserA (wd9) . . .15:28:38 27F (TRACKMOVE) (Move.) Item Received: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) User Setting Received: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) User Setting Received: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) User Setting Received: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) Remaining Inventory Count: UserA (wd9) 15:28:38 27F (TRACKMOVE) END LIVE 'MvDstUser_SendRetrievalList_LiveDispatch' (0 0x00000000): UserA (wd9) 15:28:38 27F (TRACKMOVE) The INVENTORY list is now EMPTY: UserA (wd9) 15:28:38 27F (TRACKMOVE) Finished retrieval LIVE - will be purging SOURCE database: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) Transfer Complete. All Items Received: UserA (wd9) 15:28:38 27F (TRACKMOVE) (Move.) Sending Purge Notification: UserA (wd9) 15:28:38 27F (TRACKMOVE) Deleting INVENTORY list 15:28:38 27F (TRACKMOVE) END PHASE - 'MvDstUser_SendRetrievalList_LiveRetry' (0 0x00000000): UserA (wd9)
Please note the following steps shown in this section:
5.4 Source POA Log Reference
The log file for the source POA appears below as a reference. Note that it does not go into as much detail as the log for the destination POA. In general, it is preferable to watch the destination POA log when actively monitoring a user move. Notice that the activity on the source POA mirrors the activity shown above on the destination POA.
15:28:14 2BB ADM: Completed: Delete object from post office - Misc dom1.DestPO (Administrator: (GAWTREE) gwheeler.greg, Domain: dom1)15:28:14 2BB ADM: Completed: Delete object from post office - Misc dom1.DestPO (Administrator: (GAWTREE) gwheeler.greg, Domain: dom1)15:28:19 2BB ADM: Completed: Rename object in post office - User dom1.SourcePO.UserA (Administrator: (GAWTREE) gwheeler.greg, Domain: dom1)15:28:28 2B3 Processing 22b9839c.00115:28:28 2B3 Processing Admin Task: Rename 15:28:28 2B3 (TRACKMOVE) BEGIN PHASE - 'MvSrcUser_SendInventoryList_Begin': UserA (wd9) 15:28:28 2B3 (TRACKMOVE) (.Move) Initiating: UserA (wd9) 15:28:28 2B3 User UserA moved, terminating current session 15:28:28 2B3 (TRACKMOVE) (.Move) Queue First Deferred Retry Message: UserA (wd9) 15:28:28 2B3 (TRACKMOVE) Attempting 'MvSrcUser_SendInventoryList': UserA (wd9) 15:28:28 2B3 (TRACKMOVE) Beginning 'MvAnyUser_LiveMoveLogin': UserA (wd9) 15:28:28 2B3 (TRACKMOVE) Attempting connection 'MvAnyUser_LiveMoveLogin' to 137.65.55.220:1679: UserA (wd9) 15:28:28 2B3 (TRACKMOVE) (.Move) Sending Inventory List (28): UserA (wd9) 15:28:28 2B3 (TRACKMOVE) END PHASE - 'MvSrcUser_SendInventoryList_Begin' (0 0x00000000): UserA (wd9) 15:28:28 2B3 Admin Task Completed: OK15:28:38 29D *** NEW PHYS. CONNECTION, Tbl Entry=0, Socket=10515:28:38 29D *** NEW APP CONNECTION, Tbl Entry=1, Check ID=111945218015:28:38 29D C/S Login dos ::GW Id=UserA :: 137.65.55.22015:28:38 29D Remote Request From: UserA15:28:38 29D (TRACKMOVE) BEGIN PHASE - 'MvSrcUser_GetMovedUserBoxContent_Live': UserA (wd9) 15:28:38 29D (TRACKMOVE) (.Move) Request for User Data Received: UserA (wd9) 15:28:38 29D (TRACKMOVE) BEGIN LIVE 'MvSrcUser_GetMovedUserBoxContent_Live' (1 0x00000001): UserA (wd9) 15:28:38 29D (TRACKMOVE) (.Move) Folders Sent (12): UserA (wd9) 15:28:38 29D (TRACKMOVE) (.Move) Bag Records Sent (5): UserA (wd9) 15:28:38 29D (TRACKMOVE) (.Move) Category Records Sent (4): UserA (wd9) 15:28:38 29D (TRACKMOVE) (.Move) Items Sent (4): UserA (wd9) 15:28:38 29D (TRACKMOVE) (.Move) User Settings Sent (3): UserA (wd9) 15:28:38 29D (TRACKMOVE) (.Move) Remaining Inventory Count: UserA (wd9) 15:28:38 29D (TRACKMOVE) END LIVE 'MvSrcUser_GetMovedUserBoxContent_Live' (1 0x00000001): UserA (wd9) 15:28:38 29D (TRACKMOVE) END PHASE - 'MvSrcUser_GetMovedUserBoxContent_Live' (0 0x00000000): UserA (wd9) 15:28:38 29D Remote Request From: UserA15:28:38 29D (TRACKMOVE) BEGIN PHASE - 'MvSrcUser_DeleteMovedUser_Live': UserA (wd9) 15:28:38 29D (TRACKMOVE) Sending LIVE 'MvSrcUser_PurgeUser': UserA (wd9) 15:28:38 29D (TRACKMOVE) (.Move) Sending LOCAL Purge Notification: UserA (wd9) 15:28:38 29D (TRACKMOVE) Sending ACTION_DELETE_USER: UserA (wd9) 15:28:38 29D (TRACKMOVE) END PHASE - 'MvSrcUser_DeleteMovedUser_Live' (0 0x00000000): UserA (wd9) 15:28:38 29D *** APP DISCONNECTED, Tbl Entry=1, Check ID=111945218015:28:38 29D *** PHYSICAL PORT DISCONNECTED, Tbl Entry=0, Socket=10515:28:48 2B3 (TRACKMOVE) BEGIN PHASE - 'MvSrcUser_DeleteMovedUser_Batch': UserA (wd9) 15:28:48 2B3 (TRACKMOVE) (.Move) Purging User Data: UserA (wd9) 15:28:48 2B3 (TRACKMOVE) Attempting 'WpeDeleteUserExt': UserA (wd9) 15:28:48 2B3 Delete user/resource: UserA 15:28:48 2B3 Purge item record 15:28:48 2B3 Purge item record 15:28:48 2B3 Purge item record 15:28:48 2B3 Purge item record 15:28:48 2B3 (TRACKMOVE) Moved user deleted 'WpeDeleteUserExt' (0 0x00000000): UserA (wd9) 15:28:48 2B3 (TRACKMOVE) Completed 'WpeDeleteUserExt' (0 0x00000000): UserA (wd9) 15:28:48 2B3 (TRACKMOVE) Sending status MOVE_USER_FINISHED: UserA (wd9) 15:28:48 2B3 (TRACKMOVE) END PHASE - 'MvSrcUser_DeleteMovedUser_Batch' (0 0x00000000): UserA (wd9)
6.1 Detecting Errors in User Moves
There are three main ways to determine whether or not a user move has completed.
If you determine that an error has occurred in the user move, the first step is to determine what the problem was. Typically, the source POA will provide the best information as to the cause of the error. An easy way to separate the log entries that pertain to a particular move is to use the HTTP console of the POA. To do this,
6.2 Fixing User Move Problems
If you have a user move that appears to have not worked, these steps will help you sort things out.
7.1 User move flow
Move User
The Move User process is illustrated in the following flowcharts. With GroupWise 6, Novell enabled a routine with the Move User process that allows the source POA to connect directly with the target POA and complete the move process via TCP/IP, a "Live Move". With GroupWise 6.5, that feature can be controled through the admin, ConsoleOne, snap-ins.
7.2 Useful TID's
The following TID's might come handy, when doing a User move:
3020749 Queue Live Deferred Retry Message
3047279 Server too busy message during a priming of caching mailbox
3128933 Move User Guide (GroupWise 6.5, 6, 5.5)
3182760 Problem 96- Invalid duplicate field found
3246808 Unable to move user - DB08 non unique name
3438770 User move stuck in "Retry mailbox item retrieval" state
3998453 How to use GWAFE510 (Archive FID Editor) (In case the FID changes during the move)
10099453 Error on source POA 'WpeModifyItem' moving users
10097236 Unable to move user (D11B error)
10095890 C067 Data Store number is invalid
10092882 Moved Users are showing up in both Post Offices Membership Tab
10092661 Error: D70E Duplicate entry in that database
10089648 Source POA not sending mail to target post office
10087175 Users will not move (D919 on MTA)
10085451 Notify alarms don't work after moving a user to another post
10082832 GroupWise user is stuck in a Pending Move and can not be edited
10082823 Preparing for GroupWise moves
10070702 GWIA Access Rights not valid for user after a user move.
10065345 D115 after a GroupWise user was moved
10057711 Duplicate Entry (D70E) is reported when trying to move user
10022776 Known GroupWise Move Issues