<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Armedia Blog &#187; Data Migration</title>
	<atom:link href="http://www.armedia.com/blog/category/data_migration/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.armedia.com/blog</link>
	<description></description>
	<lastBuildDate>Thu, 02 Feb 2012 15:53:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=</generator>
		<item>
		<title>Modifying SharePoint Document Content Types and Libraries Using the Client Model</title>
		<link>http://www.armedia.com/blog/2011/09/modifying-sharepoint-document-content-types-and-libraries-using-the-client-model/</link>
		<comments>http://www.armedia.com/blog/2011/09/modifying-sharepoint-document-content-types-and-libraries-using-the-client-model/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 20:09:07 +0000</pubDate>
		<dc:creator>Tim Lisko</dc:creator>
				<category><![CDATA[Data Migration]]></category>
		<category><![CDATA[eRoom]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Visual Studio 2010 - C#]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data migration]]></category>
		<category><![CDATA[Microsoft Visual Studio]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=1860</guid>
		<description><![CDATA[In a current eRoom to SharePoint migration project I wanted to preserve the &#8220;Date Created&#8221;, &#8220;Date Modified&#8221;, &#8220;Edited By&#8221;, and &#8220;Created By&#8221; fields in the eRoom documents. To do this I created a custom content type (in SharePoint 2010) based on the standard &#8220;Document&#8221; content type with four new fields to accept the migrated information. [...]]]></description>
			<content:encoded><![CDATA[<p>In a current eRoom to SharePoint migration project I wanted to preserve the &#8220;Date Created&#8221;, &#8220;Date Modified&#8221;, &#8220;Edited By&#8221;, and &#8220;Created By&#8221; fields in the eRoom documents. To do this I created a custom content type (in SharePoint 2010) based on the standard &#8220;Document&#8221; content type with four new fields to accept the migrated information. I also created a library template that uses this content type as well as the standard &#8220;Document&#8221; content type. I&#8217;ll explain why later in this article.</p>
<p>Once the documents are migrated I need to update the migrated list/library items. What I don&#8217;t want is to keep one set of &#8220;preserved&#8221; fields and another set of SharePoint fields. The SharePoint fields, as you probably guessed, set the author and editor as the individual doing the migration (or impersonated member) and the created and modified dates being the date of migration.</p>
<p>Updating list items is a pretty easy thing to do in SharePoint&#8217;s Client Object Model. The following code accomplishes this task.</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #0600FF; font-weight: bold;">foreach</span> <span style="color: #008000;">&#40;</span>SP<span style="color: #008000;">.</span><span style="color: #0000FF;">ListItem</span> item <span style="color: #0600FF; font-weight: bold;">in</span> lstItems<span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
<span style="color: #008080; font-style: italic;">//skip items not assigned to the migratedDoc document type</span><br />
<span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>item<span style="color: #008000;">.</span><span style="color: #0000FF;">ContentType</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">==</span> migType<span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
row <span style="color: #008000;">=</span> listItems_dtbl<span style="color: #008000;">.</span><span style="color: #0000FF;">NewRow</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
row<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;List&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> list<span style="color: #008000;">.</span><span style="color: #0000FF;">Title</span><span style="color: #008000;">;</span><br />
title <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>Convert<span style="color: #008000;">.</span><span style="color: #0000FF;">IsDBNull</span><span style="color: #008000;">&#40;</span>item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;Title&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">?</span> item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;Title&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">:</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #0600FF; font-weight: bold;">if</span> <span style="color: #008000;">&#40;</span>title <span style="color: #008000;">==</span> <span style="color: #666666;">&quot;&quot;</span> <span style="color: #008000;">&amp;&amp;</span> item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;FileLeafRef&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">!=</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span>   <span style="color: #008080; font-style: italic;">//set title if one does not exist</span><br />
title <span style="color: #008000;">=</span> item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;FileLeafRef&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
title <span style="color: #008000;">=</span> title<span style="color: #008000;">.</span><span style="color: #0000FF;">Replace</span><span style="color: #008000;">&#40;</span>item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;File_x0020_Type&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
sEditor <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>Convert<span style="color: #008000;">.</span><span style="color: #0000FF;">IsDBNull</span><span style="color: #008000;">&#40;</span>item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eEditor&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">?</span> item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eEditor&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">:</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
sAuthor <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #008000;">!</span>Convert<span style="color: #008000;">.</span><span style="color: #0000FF;">IsDBNull</span><span style="color: #008000;">&#40;</span>item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eAuthor&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">?</span> item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eAuthor&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">ToString</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">:</span> <span style="color: #666666;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<br />
<span style="color: #0600FF; font-weight: bold;">try</span><br />
<span style="color: #008000;">&#123;</span><br />
editor <span style="color: #008000;">=</span> ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">Web</span><span style="color: #008000;">.</span><span style="color: #0000FF;">EnsureUser</span><span style="color: #008000;">&#40;</span>sEditor<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteQuery</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<span style="color: #0600FF; font-weight: bold;">catch</span><br />
<span style="color: #008000;">&#123;</span><br />
editor <span style="color: #008000;">=</span> ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">Web</span><span style="color: #008000;">.</span><span style="color: #0000FF;">EnsureUser</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;tlisko&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<span style="color: #0600FF; font-weight: bold;">try</span><br />
<span style="color: #008000;">&#123;</span><br />
author <span style="color: #008000;">=</span> ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">Web</span><span style="color: #008000;">.</span><span style="color: #0000FF;">EnsureUser</span><span style="color: #008000;">&#40;</span>sAuthor<span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteQuery</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<span style="color: #0600FF; font-weight: bold;">catch</span><br />
<span style="color: #008000;">&#123;</span><br />
author <span style="color: #008000;">=</span> ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">Web</span><span style="color: #008000;">.</span><span style="color: #0000FF;">EnsureUser</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;tlisko&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;Editor&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> editor<span style="color: #008000;">;</span><br />
item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;Author&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> author<span style="color: #008000;">;</span><br />
item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;Modified&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eModified&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span><br />
item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;Created&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eCreated&quot;</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">;</span><br />
<br />
<span style="color: #008080; font-style: italic;">//remove values</span><br />
item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eEditor&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eAuthor&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eCreated&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;eModified&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> <span style="color: #0600FF; font-weight: bold;">null</span><span style="color: #008000;">;</span><br />
<br />
item<span style="color: #008000;">&#91;</span><span style="color: #666666;">&quot;ContentTypeId&quot;</span><span style="color: #008000;">&#93;</span> <span style="color: #008000;">=</span> docType<span style="color: #008000;">.</span><span style="color: #0000FF;">Id</span><span style="color: #008000;">;</span><br />
item<span style="color: #008000;">.</span><span style="color: #0000FF;">Update</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span><br />
<span style="color: #0600FF; font-weight: bold;">try</span><br />
<span style="color: #008000;">&#123;</span><br />
ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteQuery</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p>&#8220;ctx&#8221; is my ClientContext, though that is probably self-evident. You may also note that I only process items whose content type is my custom content type &#8220;migratedDoc&#8221; which is instantiated as &#8220;migType.&#8221; Only the migrated documents will have this content type.</p>
<p>eRoom documents do not have Titles, so I set a title based on the file name. You can leave Title blank &#8211; it isn&#8217;t a required field. Continuing through the code you will notice that I check that the names of the editor and author exist in the LDAP (ctx.Web.EnsureUser(sAuthor)). The update of the list/library item will fail if you try to use an editor or author that doesn&#8217;t exist.</p>
<p>I don&#8217;t really want to have a custom document library &#8211; the SharePoint default document library is just fine. So to get the result I want I need to reassign all the migrated items to the standard &#8220;Document&#8221; type. List items content types have a Name property. Unfortunately you can&#8217;t change it &#8211; it is read only. What you can change is the ContentTypeId and changing that value changes the content type of the list item. In the code above &#8220;docType&#8221; is local instance of the &#8220;Document&#8221; content type.</p>
<p>I said at the beginning of this article that I would explain why I wanted to keep the &#8220;Document&#8221; content type in addition to the creating a custom content type. The reason is that you can&#8217;t assign a list item to a content type if that content type isn&#8217;t in the list. That&#8217;s also why you can&#8217;t move a document from one SharePoint library to another unless its content type is in the target library as well.</p>
<p>Next I want to remove my custom content type from the list altogether. But to do that, I have to make sure that all those extra fields that are in the custom content type are set to null &#8211; which I do before changing the content type. The order of resetting these fields and reassigning the content type doesn&#8217;t matter. What does matter is that if these extra fields are not set to null, you will be unable to remove the content type from the list.</p>
<p>After processing all the list items I can now remove the custom content type from the list. Easy, two lines of code:</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">migType<span style="color: #008000;">.</span><span style="color: #0000FF;">DeleteObject</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteQuery</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></div></div>
<p>But that still doesn&#8217;t remove the custom fields from the list. More code is needed.  Incorporating the delete of the custom content type you have this.</p>
<div class="codecolorer-container csharp default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="csharp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">migType<span style="color: #008000;">.</span><span style="color: #0000FF;">DeleteObject</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
list<span style="color: #008000;">.</span><span style="color: #0000FF;">Fields</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetByTitle</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;eCreated&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DeleteObject</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
list<span style="color: #008000;">.</span><span style="color: #0000FF;">Fields</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetByTitle</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;eModified&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DeleteObject</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
list<span style="color: #008000;">.</span><span style="color: #0000FF;">Fields</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetByTitle</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;eAuthor&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DeleteObject</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
list<span style="color: #008000;">.</span><span style="color: #0000FF;">Fields</span><span style="color: #008000;">.</span><span style="color: #0000FF;">GetByTitle</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;eEditor&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">.</span><span style="color: #0000FF;">DeleteObject</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span><br />
ctx<span style="color: #008000;">.</span><span style="color: #0000FF;">ExecuteQuery</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></div></div>
<p>And that&#8217;s it! The library looks like the default document library with only the &#8220;Document&#8221; content type as desired.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/09/modifying-sharepoint-document-content-types-and-libraries-using-the-client-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>I&#039;m in eRoom, Get Me Out of Here!</title>
		<link>http://www.armedia.com/blog/2011/07/im-in-eroom-get-me-out-of-here/</link>
		<comments>http://www.armedia.com/blog/2011/07/im-in-eroom-get-me-out-of-here/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 18:26:21 +0000</pubDate>
		<dc:creator>cstephenson</dc:creator>
				<category><![CDATA[Data Migration]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[eRoom]]></category>
		<category><![CDATA[Information Rights Management]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[EMC]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[Extract]]></category>
		<category><![CDATA[Load]]></category>
		<category><![CDATA[Miration]]></category>
		<category><![CDATA[Transform]]></category>
		<category><![CDATA[Visual Basic]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=448</guid>
		<description><![CDATA[[turns up amplifier, cranks up volume to 11, puts Huey Lewis and the News vinyl on record player....] I start up Visual Studio 6.0 and settle down to some nostalgic programming with Visual Basic (VB) 6.  Ah, college memories come flooding back and strangely not many related to actual study.  I feel like I have [...]]]></description>
			<content:encoded><![CDATA[<p>[<em>turns up amplifier, cranks up volume to 11, puts <a title="Huey Lewis and the News" href="http://www.hueylewis.com/">Huey Lewis and the News</a> vinyl on record player....</em>]<br />
I start up <a title="Visual Studio 6.0" href="http://msdn.microsoft.com/en-us/library/ms950417.aspx">Visual Studio 6.0</a> and settle down to some nostalgic programming with <a title="Visual Basic 6.0" href="http://msdn.microsoft.com/en-us/vbasic/ms788229">Visual Basic </a>(VB) 6.  Ah, college memories come flooding back and strangely not many related to actual study.  I feel like I have stepped back in time &#8211; the processor has worked its speed up to 88 mph and now I am back using VB6.  I also remember learning <a title="Delphi" href="http://delphi.about.com/cs/azindex/a/dhistory_2.htm">Delphi</a> Version 1.0 so that I could *help* a friend do their final year project. Good times.</p>
<p><span id="more-448"></span>A long time ago I posted this <a title="So long, farewell, auf wiedersehen, eRoom" href="http://www.armedia.com/blog/?p=420">blog</a>.  I had not realized it was over a year ago, but I will continue on with more information around the Export.  I chose to use VB6 as it was the easiest way to start working against eRoom&#8217;s API&#8217;s.  John and I discussed whether we should attempt to migrate against the <a title="EMC eRoom" href="http://www.emc.com/products/detail/software2/eroom.htm">eRoom</a> database tables or use its API&#8217;s.  It was decided to go down the path of using the API&#8217;s which should provide more flexibility going forward.  Though I do still like the idea of migrating from the database directly.</p>
<p>The design of the export piece is fairly simplistic.  Start at the top of the eRoom structure and walk each branch outputting all associated metadata into a well formed XML document.  The goal was to have as much data as required to recreate it all again in another eRoom instance.  [Note, we have not actually written a Load module for going into eRoom.]</p>
<p>For the most part, in the code, every object can be treated as an IERUItem.  This helps with creating helper functions as we can simply pass this object type about.  The next important step is to determine the properties that are part of IERUItem by which you can further derive information.  By doing this you open up a host of new goodies to delve into.</p>
<p>For example is this item a container.  To find out check the property isContainer (which is missing from API help document).  A container is a way of grouping other objects together.  Kind of like a folder.  If a room is being exported, first the groups and members are put into the XML, followed by properties relating immediately to the room, then a container element is identified.  The Exporter takes a depth first approach, so a list of all items in the container are identified and the process continues.</p>
<p>One thing to note, a visual debugger is your friend.  The API documentation is good up to a point.  Then you realize that some object properties were left out of the documentation or property values may not be quite what you expected them to be, like properties may not be instantiated if they are not relevant to the object.  Once the gaps are filled in it becomes quite intuitive working through eRoom structures.</p>
<p>Currently, the user can export all of the communities or facilities, or selected rooms.  The design thought running behind this was to be in the position of exporting rooms to the repository of choice.  In other words, if marketing and legal have all their content within the same facility but would like them to be in separate repositories, this can be accommodated.  Actually it can be accommodated in a couple of  ways.  At the export setup, you can export specific rooms to be designated for specific repositories.  All of the necessary metedata will still be exported (i.e. users, groups, etc.) with each room.  The result is multiple export.xml files.  Then at ingestion time, the user would ingest each export.xml and associate it with the appropriate repository.  The other method would be to export all rooms and handle the repository association at ingestion time.</p>
<p>Some thoughts around improving the Exporter Tool is around further investigation into the eRoom XML Query interface.  This opens up more options for different programming languages and different thoughts around the overall export.  Of course, it could open up more gotcha&#8217;s as well <img src='http://www.armedia.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />   The next exciting installment around eRoom migration will be around the transformation tool.  Now that we have all this wonderful XML, what do we do with it?  This is were things really start to get interesting as what will the eRoom XML output be transformed into?</p>
<p>So who else has been looking at their eRoom environment wondering when and how they are going to migrate away from their legacy system?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2011/07/im-in-eroom-get-me-out-of-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>So long, farewell, auf Wiedersehen, eRoom</title>
		<link>http://www.armedia.com/blog/2010/06/so-long-farewell-auf-wiedersehen-eroom/</link>
		<comments>http://www.armedia.com/blog/2010/06/so-long-farewell-auf-wiedersehen-eroom/#comments</comments>
		<pubDate>Fri, 11 Jun 2010 20:23:41 +0000</pubDate>
		<dc:creator>cstephenson</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Data Migration]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[XML]]></category>
		<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[Centerstage]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Collaboration]]></category>
		<category><![CDATA[EMC]]></category>
		<category><![CDATA[eRoom]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[Migrate]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[transformation]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=420</guid>
		<description><![CDATA[A simple goal – “export, transform, load” – the destination is a matter of choice. EMC eRoom is going away.  It has been marked as End of Life (EOL) so what next?  EMC Documentum have 2 options: EMC Documentum Collaboration Services; EMC Documentum Centerstage.  Armedia’s immediate goal is to support Collaboration Services, then Centerstage but [...]]]></description>
			<content:encoded><![CDATA[<p>A simple goal – “<a href="http://en.wikipedia.org/wiki/Extract,_transform,_load" target="_blank">export, transform, load</a>” – the destination is a matter of choice.</p>
<p><a href="http://www.emc.com/products/family/eroom-family.htm">EMC eRoom</a> is going away.  It has been marked as End of Life (<a href="http://en.wikipedia.org/wiki/End-of-life_%28product%29">EOL</a>) so what next? <a href="http://www.emc.com/domains/documentum/index.htm"> EMC Documentum</a> have 2 options: EMC Documentum Collaboration Services; <a href="http://www.emc.com/products/detail/software/centerstage.htm">EMC Documentum Centerstage</a>.  Armedia’s immediate goal is to support Collaboration Services, then Centerstage but why stop there?  Why limit a client’s choice.</p>
<p>Armedia&#8217;s eRoom migration story is in 3 acts (and yes, I have been listening to some test pieces that I used to play in my <a href="http://www.downshirebrass.com/">brass banding</a> days &#8211; check out <a href="http://www.philipsparke.com/year_of_the_dragon%20BB.htm">Year of the Dragon</a> by <a href="http://www.philipsparke.com/">Philip Sparke</a>).</p>
<p><span style="text-decoration: underline;">Act I – The Export</span></p>
<p>Getting the content out of eRoom into an understandable format.  Of course, its not just the content, there is  a large quantity of metadata in eRoom as well.  Act I – The Export deals solely with interrogating eRoom and generating a document detailing everything about eRoom.  From communities to Files.  From eRoom Setup to databases – we mean everything.  The result: a well-formed XML document</p>
<p><span style="text-decoration: underline;">Act II – The Transformation</span></p>
<p>As with any classic performance, after the captivating opening, Act II deals with getting to know the characters.  In this case, the transformation gets to know the XML document and gains a deep understanding of the objects held within.  The transformation is responsible for also generating a secondary XML document. This is formed to support the ingestion to a new Content Management System (<a href="http://en.wikipedia.org/wiki/Content_management_system">CMS</a>) and / or Collaboration System.  Currently the supported transformation is for EMC Documentum Collaboration Services.  This can easily be extended due to the flexible architecture of this utility and is simply a case of transforming XML.</p>
<p><span style="text-decoration: underline;">Act III – The Load</span></p>
<p>The closing act is the build up to the dramatic climax which leaves the audience going “WOW!”.  eRoom Migration aims to achieve the same “WOW!”.  Now that the XML has been transformed you can sit back and let the load run automatically.  That’s it.  By using the ingestion engine of <a href="http://www.armedia.com/products/suite/">Caliente!</a> loading all the content and metadata is simple.  Just let eRoom Migration take care of everything for you.  The only thing it does not do is say “WOW!” – we leave that to you.</p>
<p>Over the next few weeks I plan to talk in more detail about the approach taken and dig deeper into the 3 different pieces of the migration effort.  For those eRoom users, what do you see yourselves using in the near future?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2010/06/so-long-farewell-auf-wiedersehen-eroom/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Migrating CAD Drawings into Documentum</title>
		<link>http://www.armedia.com/blog/2009/12/migrating-cad-drawings-into-documentum/</link>
		<comments>http://www.armedia.com/blog/2009/12/migrating-cad-drawings-into-documentum/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 20:10:10 +0000</pubDate>
		<dc:creator>rrana</dc:creator>
				<category><![CDATA[Data Migration]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[CAD]]></category>
		<category><![CDATA[CADtop]]></category>
		<category><![CDATA[Content Management]]></category>
		<category><![CDATA[dfc]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=237</guid>
		<description><![CDATA[Anyone who has ever attempted a data migration knows that there is no such thing as &#8216;a smooth transfer of power&#8217;, as it were. From learning both the legacy system and the new system, business processes, data clean-up, data mapping, deciding between existing tools and creating new ones, there is a lot to keep track [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone who has ever attempted a data migration knows that there is no such thing as &#8216;a smooth transfer of power&#8217;, as it were. From learning both the legacy system and the new system, business processes, data clean-up, data mapping, deciding between existing tools and creating new ones, there is a lot to keep track of to ensure that what you have at the end matches what you started with.</p>
<p>Migrating CAD engineering drawings poses its own set of unique challenges. AutoCAD and MicroStation drawings can internally have references to other drawing files that exist within the content management system (or file system). When moving these files over to a new system, care must be taken to ensure these references are maintained.</p>
<p>Sword <a href="http://www.cadtop.net/" target="_blank">CADtop</a> is a tool that provides users access to CAD drawings that are stored in a Documentum repository directly from within AutoCAD or MicroStation. It gives the user the ability to check in/out drawings, browse, search, view documents and attach reference drawings that exist in the docbase. CADtop maintains reference information by updating the links within the drawing and storing this information in a registered table.</p>
<p>CADtop also provides an import tool that can be used to migrate documents into the Documentum system. It handles importing of documents of multiple types, such as .pdfs, .docs, .tifs, etc. along with the drawing formats, .dwg and .dgn. It is a very simple to use command line tool, but it has its limitations. It can only handle importing up to around 5000 files at a time. However, this can be overcome by creating a batch script to automate the copying of sets of files to a temporary directory and running the import tool.</p>
<p>The import tool uses an XML configuration file to determine the object type, folder path to import from and cabinet/folder to import to. However, those are the only properties you can set. The import tool has no way to attach meta-data from a database to content files being imported. A way around this is to make sure each file has a unique name, then import the files, then using a DFC script, update the properties of all the objects in the docbase from an XML file (for example). This works well as long as all the filenames are unique in the first place, or not drawings with references. If filenames are not unique, then you would have to rename the files, which means the filenames will no longer match the drawing’s internal reference links.</p>
<p>The import tool provides you with a switch that lets you run it in attach reference mode. This allows you to pass an Excel file which consists of a table of parent object IDs, child object IDs and reference filenames, so that you can resolve references within drawing files after they’ve been imported into the docbase. Thereby allowing you to use a tool such as <a href="http://armedia.com/products/suite/">Caliente</a> (Shameless Plug™) to import the drawings into Documentum and update the properties. Then create the Excel file with all the references and run the CADtop import tool to attach them.</p>
<p>The end result will be that when you open one of these drawings through AutoCAD, CADtop will automatically pull out all the references from the Documentum repository and display them, just as in the legacy system.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2009/12/migrating-cad-drawings-into-documentum/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Content Collection, Migration, and Delivery</title>
		<link>http://www.armedia.com/blog/2009/06/content-collection-migration-and-delivery/</link>
		<comments>http://www.armedia.com/blog/2009/06/content-collection-migration-and-delivery/#comments</comments>
		<pubDate>Fri, 19 Jun 2009 22:17:42 +0000</pubDate>
		<dc:creator>kevans</dc:creator>
				<category><![CDATA[Alfresco]]></category>
		<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[Case Management]]></category>
		<category><![CDATA[Content Authoring]]></category>
		<category><![CDATA[Content Server]]></category>
		<category><![CDATA[Data Migration]]></category>
		<category><![CDATA[Documentum]]></category>
		<category><![CDATA[eDiscovery]]></category>
		<category><![CDATA[Electronic Health Records]]></category>
		<category><![CDATA[Enterprise Content Management]]></category>
		<category><![CDATA[Mobility]]></category>
		<category><![CDATA[Performance Monitoring]]></category>
		<category><![CDATA[Records Management]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Solutions]]></category>
		<category><![CDATA[Web Content Management]]></category>

		<guid isPermaLink="false">http://www.armedia.com/blog/?p=192</guid>
		<description><![CDATA[There are well over 35 proprietary document management systems, an astronomical number of homegrown document management systems, and billions of sources for information to come from.  As technology changes, new and better features are added to current systems, new products are coming out, and software systems frequently have to be upgraded.  As companies merge, workflows [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="font-size: small;"><span style="font-family: Calibri;">There are well over 35 proprietary document management systems, an astronomical number of homegrown document management systems, and billions of sources for information to come from.<span style="mso-spacerun: yes;">  </span>As technology changes, new and better features are added to current systems, new products are coming out, and software systems frequently have to be upgraded.<span style="mso-spacerun: yes;">  </span>As companies merge, workflows that were once adequate, no longer cover the bases for the growing needs of the “new” organization.<span style="mso-spacerun: yes;">  </span>What happens when companies merge and they were using two different document management systems?<span style="mso-spacerun: yes;">  </span>Which one takes over?<span style="mso-spacerun: yes;">  </span>Or do they continue to use both?<span style="mso-spacerun: yes;">  </span>As organizations grow, merge, and split, the number of input sources and output destinations dramatically increase.<span style="mso-spacerun: yes;">  </span>How do we integrate these new information pathways , along with new applications that are introduced, keeping you in the same locked in status? </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="font-size: small;"><span style="font-family: Calibri;">It’s simple.<span style="mso-spacerun: yes;">  </span>The new Content I/O Suite.<span style="mso-spacerun: yes;">  </span>Armedia’s Content I/O Suite allows users to collect information from all of those billions of sources, migrate it to the centralized repository in the company, and then, if needed, deliver that information to the different web portals that may need to view the information later.<span style="mso-spacerun: yes;">  </span>In fact, it can even send the information to multiple repositories all from the same interface.<span style="mso-spacerun: yes;">  </span>So what if Human Resources uses Documentum, and Accounting uses Laserfiche, and some departments have their own collaborative eRoom set up, but you just merged with another company who uses SharePoint and FileNet.<span style="mso-spacerun: yes;">  </span>What if one user could capture the information coming in from the website, or through email, or through regular snail mail, and deliver it into the appropriate system, without that one user ever having to be trained in each of those systems?<span style="mso-spacerun: yes;">  </span>Sounds too good to be true, doesn’t it?<span style="mso-spacerun: yes;">  </span>Check it out at <a href="http://armedia.com/products/suite/">http://armedia.com/products/suite/</a>. </span></span></p>
<p class="MsoNormal" style="margin: 0in 0in 10pt;"><span style="font-size: small;"><span style="font-family: Calibri;">-Kristin Evans</span></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.armedia.com/blog/2009/06/content-collection-migration-and-delivery/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

