A lot of customers are using Content Manager 8 in connection with IBM Spectrum Protect, former IBM TSM SSAM, or other WORM Storage system to meet there compliance requirements. But in some cases you will have to migrate the content to a new storage system with or without WORM functionality. If the new system is not longer SSAM/Spectrum Protect there is out of the box no satisfying way to move the data. Sure you can use the Ressource Manager replication feature but you will need to keep the old Ressource Manager in you CM system till the end. So a better way to do is to migrate the data with the CM8 RM migration feature. If you configure the subsequent migration of you already stored data as it is described in the technote “Adding migration rules to an existing migration policy” you will face the issue that the CM8 systemadministration client wont let you change the order of you migration policy because the retention volume must be last instance in such a migration policy.
But in this article I will guide you how to how to get around that. In the following chapters I will describe how to move the data from SSAM to a new NAS storage volume. But it is the same way for all other storage volumes you can attach to CM8.
Another big advantage of this method is, that you will have no downtime during the content migration. And you end user will be not affected of this procedure. The migration is a backround task and will not effect you daily business.
At first you will need to add the new storage volume to you CM system. So check if the storage class of you required storage system is already configured in CM8. If not add it.

Based on the device create a new storage volume.

Create a new storage group, migration policy and workstation collection.
![Storage Group Properties
Stor age systems
- CMDATAGROUP
CMDATAGROUP
Assign I or more storage systems to this storage group
Volume
Z] CMDATA
D DATA
D JOURNAL
D MAIL
Storage Class
ASLE
FIXED
Status
Assigned
Assigned
Assigned
Assigned](http://justecm.de/wp-content/uploads/2020/06/image-29.png)

Now you can modify you existing itemtypes with the new collection so that all new content is directly written to the new storage system. If you did that the first part is done.
Now we need to configure the migration of the already archived content. For that we need to analyze the configuration of the current archiving setup. At add the new created volume to the existing storage group of the SSAM data. In my case it was the “MAILGROUP”. This is a mandatory step because without adding this to the storage group you wont be able to create the migration jobs later.

![Computergenerierter Alternativtext:
Storage Group Properties
Stor age systems
MAILGROUP
MAILGROUP
Assign I or more storage systems to this storage group
Volume
Z] CMDATA
D DATA
D JOURNAL
Z] MAIL
Storage Class
ASLE
CMDATA
Status
Assigned
Assigned
Assigned
Assigned](http://justecm.de/wp-content/uploads/2020/06/image-31.png)
After this you will need to modify the existing migration policy of the SSAM workstation collection. And here you will see that the sysadmin client wont let you change the order. Because a retention volume like SSAM is must be the last instance.

So if we want to do this we need to change this directly in the Ressource Manager database. At first I like to check the defined collections in the RMCOLLECTIONS table.

As you can see we have 4 collections and we will face on the MAIL.CLLCT001. Next I want to know how much items are stored in each collection. You can select this in the RMOBJECTS table.


So for the MAIL.CLLCT001 collection we have here 24.518.258 objects stored they will need to be migrated. The next step is to identify the sotrage class ID that are used for these object. You can select this also in the RMOBJECTs and RMSTORAGECLASS tables


So we see that all data was stored on the FIXED and DR550 class. So we need to move the content from storage class ID 3 “DR550” to storage class ID 4 “CMDATA”. The next point is to identify the volume IDs from the RMVOLUMES table because we need this information later on.

Now we have all necessary information to modify the existing migration policy. Lets select the configured migration policies from RMMGTCLASS table. We need to focus on ID 3 MAIL.

Now check the RMMGTTRANSITION table for the MAIL data.

The MGP_SINCEENTER describe the length of stay on the volume and “-1” means forever. So at first we need to change it from forever to e.g. 1 day.

If you now take a look in the migration policy in the sysadmin client you will see this.

In the next step we need to add the “CMDATA” storage class to the migration policy.

So we added “CMDATA” with sequence number 2 and with SINCEENTER -1. The result in the sysadmin client is this.

And this is the final setup before we can start the migration. Keep in my that the sysadmin client wont let you configure this! You will need to manage it in the database.
So now you can create the migration tasks at it was described in the technote I provided before. You will need to add all the migrationjobs to the RMMIGRATIONTASKS table. Use the following SQL statement and modify it to your needs.
INSERT INTO RMMIGRATIONTASKS (LIBRARYID, ITEMID, VERSION, COLLECTIONID, CRNTVOLUMEID, COLLECTIONNAME, CRNTTRANSITION, NEXTTRANSITION, ACTIONDATE) SELECT OBJ_LIBRARYID, OBJ_ITEMID, OBJ_VERSION, OBJ_COLLECTIONID, OBJ_VOLUMEID, RTRIM(COL_COLLNAME), MGP_SEQUENCENUM-1, MGP_SEQUENCENUM, ’08/09/2018′ FROM RMOBJECTS objs, RMCOLLECTIONS colls, RMMGTTRANSITION mgtt WHERE objs.OBJ_MGTCLASSID=mgtt.MGP_MGTCLASSID AND objs.OBJ_STGCLASSID=mgtt. MGP_STGCLASSID AND objs.OBJ_COLLECTIONID=colls.COL_COLLID AND colls.COL_MGTCLASSID=mgtt.MGP_MGTCLASSID AND objs.OBJ_STATUS IN (‘A’,’B’) AND mgtt.MGP_SINCEENTER<>-1 AND objs.OBJ_ACTIONDATE=’12/31/9999′ AND objs.OBJ_COLLECTIONID=3 AND objs.OBJ_STGCLASSID=3
In my case the RMMIGRATIONTASKS table was filled with the amount of objects I have on the DR550 volume.

After the RM migrator moved the data and processed all the jobs from the RMMIGRATIONTASK table I doublechecked the storage class ID in the RMOBJECTS table.

Now all the objects reside on the new storage class “CMDATA”.
At the end I will give you also some TSM settings tips, because in some cases the TSM settings are not suitable for mass migration. Connect to the SSAM instance with “dsmadmc” and query the options of the SSAM.

Here in this case we increased the MaxSessions to 50 for the SSAM instance.
==> setopt maxsession 50
We also changed the maximum number of mount points for the node that is used by ICMRM.

update node <NODENAME> maxnummp=50
And last but not least we also changed the TSM_MAX_POOLED_CONNECTIONS parameter to 20 for the ICMRM.

Now you have migrated your content from an WORM storage to another storage system with CM8 on-board features.
If you have any questions, do not hesitate to contact me.
Over and out :-).
It’s a shame you don’t have a donate button! I’d without a doubt donate to this excellent blog! I suppose for now i’ll settle for book-marking and adding your RSS feed to my Google account. I look forward to brand new updates and will share this blog with my Facebook group. Talk soon!
Definitely, what a fantastic blog and revealing posts, I will bookmark your blog.Best Regards!
Greetings! This is my first visit to your blog! We are a team of volunteers and starting a new project in a community in the same niche. Your blog provided us valuable information to work on. You have done a marvellous job!
Hi there! This post could not be written any better! Reading this post reminds me of my old room mate! He always kept talking about this. I will forward this article to him. Fairly certain he will have a good read. Many thanks for sharing!