<?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>Tech Opener &#187; development</title>
	<atom:link href="http://techopener.com/blog/category/development/feed/" rel="self" type="application/rss+xml" />
	<link>http://techopener.com/blog</link>
	<description>Lets share more</description>
	<lastBuildDate>Sun, 02 May 2010 23:36:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
<atom:link rel="hub" href="http://pubsubhubbub.appspot.com"/><atom:link rel="hub" href="http://superfeedr.com/hubbub"/><cloud domain='techopener.com' port='80' path='/blog/?rsscloud=notify' registerProcedure='' protocol='http-post' />
		<item>
		<title>Redmine plugin for windows authentication</title>
		<link>http://techopener.com/blog/2010/05/redmine-plugin-for-windows-authentication/</link>
		<comments>http://techopener.com/blog/2010/05/redmine-plugin-for-windows-authentication/#comments</comments>
		<pubDate>Sun, 02 May 2010 23:36:16 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/?p=284</guid>
		<description><![CDATA[Redmine.org is an open source project management application. It is simple to setup and works great. It supports LDAP authentication out of the box. We recently setup Redmine for a project to run behind IIS using fastcgi and wanted to &#8230; <a href="http://techopener.com/blog/2010/05/redmine-plugin-for-windows-authentication/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Redmine.org is an open source project management application.  It is simple to setup and works great.  It supports LDAP authentication out of the box.  We recently setup Redmine for a project to run behind IIS using fastcgi and wanted to automatically login using windows authentication.  We didn&#8217;t see a option for this, so I created a simple plugin that can be used to add this functionality.</p>
<p>http://github.com/nanek/redmine_windowsauth</p>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2010/05/redmine-plugin-for-windows-authentication/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Foursquare on Windows Mobile</title>
		<link>http://techopener.com/blog/2009/12/foursquare-on-windows-mobile/</link>
		<comments>http://techopener.com/blog/2009/12/foursquare-on-windows-mobile/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 02:47:50 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[foursquare]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/?p=266</guid>
		<description><![CDATA[Foursquare does not have a windows mobile version of their application, so I thought it would be a great opportunity to try and build an app. Things that are working fairly well: Foursquare API access. JSON.NET is used to parse &#8230; <a href="http://techopener.com/blog/2009/12/foursquare-on-windows-mobile/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a title="Foursquare" href="http://foursquare.com" target="_blank">Foursquare </a>does not have a windows mobile version of their application, so I thought it would be a great opportunity to try and build an app.</p>
<p>Things that are working fairly well:</p>
<ul>
<li>Foursquare API access.</li>
<li>JSON.NET is used to parse the JSON responses.</li>
<li>sqlite is used for caching http responses.</li>
<li>OAuth is used for authentication to foursquare.</li>
<li>GPS lookup.</li>
</ul>
<p>Things that don&#8217;t work and have proved difficult to implement:</p>
<ul>
<li>Responsiveness.  At times the app stops responding and overall feels too slow for normal use.</li>
<li>Cell ID lookup.  This is important as GPS often does not work indoors.  It appears access to this API may be protected on most phones.</li>
<li>Good looking user interface.  Plus dealing with different phone resolutions, orientations, and sizes makes it a little more complicated.</li>
</ul>
<p>Things that would be interesting to implement but require a solid base application:</p>
<ul>
<li>Map integration</li>
<li>Integration with other API&#8217;s such as Yelp</li>
</ul>
<p>You can find the source at <a href="http://foursquare.codeplex.com" target="_blank">http://foursquare.codeplex.com</a> along with a CAB for installation on your phone if you want to try it out.  Look under the planned download section.  It works ok on my HTC Touch Pro.  If you are interested in contributing to this effort, let me know.  I&#8217;m debating spending more time on making this work better or building a HTML5 based mobile web application.</p>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2009/12/foursquare-on-windows-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>5 Great Microsoft .NET Developer Blogs</title>
		<link>http://techopener.com/blog/2009/10/5-great-microsoft-net-developer-blogs/</link>
		<comments>http://techopener.com/blog/2009/10/5-great-microsoft-net-developer-blogs/#comments</comments>
		<pubDate>Mon, 19 Oct 2009 12:42:32 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[blogs]]></category>
		<category><![CDATA[developer]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/?p=245</guid>
		<description><![CDATA[Scott Hanselman http://www.hanselman.com/ Dan Wahlin http://weblogs.asp.net/dwahlin/ The Morning Brew http://blog.cwa.me.uk/ Jon Galloway http://weblogs.asp.net/jgalloway/ Scott Gu http://weblogs.asp.net/scottgu/ I&#8217;m sure I missed a bunch.  What do you recommend?]]></description>
			<content:encoded><![CDATA[<p>Scott Hanselman <a href="http://www.hanselman.com/" target="_blank">http://www.hanselman.com/</a><br />
Dan Wahlin <a href="http://weblogs.asp.net/dwahlin/" target="_blank">http://weblogs.asp.net/dwahlin/</a><br />
The Morning Brew <a href="http://blog.cwa.me.uk/" target="_blank">http://blog.cwa.me.uk/</a><br />
Jon Galloway <a href="http://weblogs.asp.net/jgalloway/" target="_blank">http://weblogs.asp.net/jgalloway/</a><br />
Scott Gu <a href="http://weblogs.asp.net/scottgu/" target="_blank">http://weblogs.asp.net/scottgu/</a></p>
<p>I&#8217;m sure I missed a bunch.  What do you recommend?</p>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2009/10/5-great-microsoft-net-developer-blogs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Security Tools for .NET Development</title>
		<link>http://techopener.com/blog/2009/10/security-tools-for-net-development/</link>
		<comments>http://techopener.com/blog/2009/10/security-tools-for-net-development/#comments</comments>
		<pubDate>Tue, 13 Oct 2009 13:06:06 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/?p=209</guid>
		<description><![CDATA[Security is a programmer&#8217;s responsibility.  Your project manager or client is not going to ask for security, but it is a basic implied requirement for any software project.  A good place to start is to look at the top ten &#8230; <a href="http://techopener.com/blog/2009/10/security-tools-for-net-development/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Security is a programmer&#8217;s responsibility.  Your project manager or client is not going to ask for security, but it is a basic implied requirement for any software project.  A good place to start is to look at the <a title="Top Ten Vulnerabilities" href="http://www.owasp.org/index.php/Top_10_2007" target="_blank">top ten common vulnerabilities</a>.  Think about how many of these might affect your current project.  Odds are if you have not consciously though about security, then your application is likely vulnerable.</p>
<p>Since I recently started writing a lot more .NET based applications I have come across two useful tools for assisting in providing application security.  Even if you are careful to validate all application inputs, it is still useful to validate your work using these tools.</p>
<p><a title="Anti-XSS Library" href="http://www.microsoft.com/downloads/details.aspx?familyid=051EE83C-5CCF-48ED-8463-02F56A6BFC09&amp;displaylang=en" target="_blank">Anti-XSS</a> &#8211; a library that can help sanitize inputs to help protect from cross site scripting attacks.<br />
<a title="CAT.NET" href="http://www.microsoft.com/downloads/details.aspx?FamilyId=0178e2ef-9da8-445e-9348-c93f24cc9f9d&amp;displaylang=en" target="_blank"> CAT.NET</a> &#8211; a Visual Studio plugin that will do code analysis to help identity cross site scripting and SQL injection vulnerabilities.</p>
<p>It is a good idea to set up security scans has part of your project build steps with a <a title="Continuous Integration Server" href="http://techopener.com/blog/2009/10/continuous-integration-with-hudson/" target="_blank">continuous integration server</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2009/10/security-tools-for-net-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Continuous Integration with Hudson</title>
		<link>http://techopener.com/blog/2009/10/continuous-integration-with-hudson/</link>
		<comments>http://techopener.com/blog/2009/10/continuous-integration-with-hudson/#comments</comments>
		<pubDate>Fri, 09 Oct 2009 12:10:00 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[continuous integration]]></category>
		<category><![CDATA[hudson]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/?p=208</guid>
		<description><![CDATA[Recently I came across Hudson, an open source Continuous Integration server.   I often hear about cruise control, however it always seemed like it would be difficult to get setup. A Continuous Integration server can help you automate tasks in &#8230; <a href="http://techopener.com/blog/2009/10/continuous-integration-with-hudson/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently I came across <a title="Hudson" href="https://hudson.dev.java.net/" target="_blank">Hudson</a>, an open source <a title="Continuous Integration" href="http://en.wikipedia.org/wiki/Continuous_integration" target="_blank">Continuous Integration</a> server.   I often hear about cruise control, however it always seemed like it would be difficult to get setup.</p>
<p>A Continuous Integration server can help you automate tasks in your development life cycle.  It will checkout a project from your source code repository, build it, and run any number of additional tasks that you can configure.  For example, it can run unit tests that you have written for your project.  Another example would be to configure <a title="StyleCop" href="http://code.msdn.microsoft.com/sourceanalysis" target="_blank">StyleCop </a>or FxCop to analyze your source code against various rules.  All of these tasks are completed on a build server automatically and any issues are delivered through the UI, email, or RSS.  This instant feedback loop will make you and your team members spot any issues sooner and make you a better programmer.</p>
<p>Some things that make Hudson in particular stand out:</p>
<ul>
<li>It can build <a href="http://redsolo.blogspot.com/2008/04/guide-to-building-net-projects-using.html" target="_blank">.NET</a> and Java applications.</li>
<li>To get started you just run the jar, or deploy to tomcat.  No db or other configuration to install.  It can even install itself as its own service.</li>
<li>Lots of plugins.  Plugins that you can install from within the application just like WordPress.</li>
<li>User interface is simple and clean.</li>
<li>It just works.</li>
</ul>
<p>Bottom line, take 10 minutes and check it out.  Let me know if this is not the best Continuous Integration server for Java and .NET.</p>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2009/10/continuous-integration-with-hudson/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Maintenance and Support (Enterprise vs Open Source)</title>
		<link>http://techopener.com/blog/2009/06/maintenance-and-support-enterprise-vs-open-source/</link>
		<comments>http://techopener.com/blog/2009/06/maintenance-and-support-enterprise-vs-open-source/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 02:05:47 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/?p=188</guid>
		<description><![CDATA[One the common concerns in using open source software at some companies is having formal maintenance and support contracts.  The crazy thing is that most enterprise software products come with really bad maintenance and support at high prices. Take for &#8230; <a href="http://techopener.com/blog/2009/06/maintenance-and-support-enterprise-vs-open-source/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>One the common concerns in using open source software at some companies is having formal maintenance and support contracts.  The crazy thing is that most enterprise software products come with really bad maintenance and support at high prices.</p>
<p>Take for example Premier support offered by most enterprise software vendors that include claims of 4 hour response times and the like.  If your goal is having someone on the phone, then sure this works ok.  However if you actually want your problem solved, then get ready for a surprise.  Most of the time you are going to have to pull some pretty intense efforts to prove the issue is the vendors problem.  In most of these situations you end up doing all of the leg work which often includes writing the fix or workaround.  In many cases, the vendor boils down to becoming a place for you to file bugs along with their solutions so that you dont have to deal with in the next release.</p>
<p>Upgrades.  Oh don&#8217;t get me started.  Enterprise software vendors never sell licenses on how easy it is to install or upgrade their software.  In fact, sometimes I wonder if they don&#8217;t intentionally make this process difficult in order to require customers to buy more hours from consulting services.</p>
<p>Lastly, the enterprise product knowledge bases often require you to use the vendors website using customer logins.  This limits who has access and makes searching and contributing to this content difficult if not impossible.</p>
<p>Open Source on the other hand has to have great maintenance and support processes in order to gain any traction and acquire a user base.  WordPress is a great example.  The installation and upgrade process is as simple as it gets.  Searching for any problems or issues is as simple as searching the web.</p>
<p>Like many things in the world, the logical choice is not the first choice due to tradition and fear.  Just keep in mind times are changing, walls are falling, and open source will set you free.</p>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2009/06/maintenance-and-support-enterprise-vs-open-source/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Windows Azure presentation</title>
		<link>http://techopener.com/blog/2009/03/windows-azure-presentation/</link>
		<comments>http://techopener.com/blog/2009/03/windows-azure-presentation/#comments</comments>
		<pubDate>Fri, 20 Mar 2009 21:58:04 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/?p=162</guid>
		<description><![CDATA[Yesterday I went to the Mid-Atlantic Cloud Computing user group in Reston, VA.  It&#8217;s a newly formed group that plans to meet once a month.  The topic of the evening was Windows Azure, in which Scott Zimmerman from Microsoft gave &#8230; <a href="http://techopener.com/blog/2009/03/windows-azure-presentation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Yesterday I went to the <a href="http://www.azureusergroup.com/group/midatlanticcloudcomputingusergroupmcc">Mid-Atlantic Cloud Computing user group</a> in Reston, VA.  It&#8217;s a newly formed group that plans to meet once a month.  The topic of the evening was Windows Azure, in which Scott Zimmerman from Microsoft gave a great overview of their online suite of products with a focus on the Compute and Storage capabilities of Windows Azure.  I wont go into the topic right now as the <a title="Presentation" href="http://blogs.msdn.com/zxue/archive/2009/03/20/mid-atlantic-cloud-computing-ug-presentation.aspx" target="_blank">presentation</a> is available, but below are a few interesting notes:</p>
<ul>
<li>$500 million dollars invested for each data center</li>
<li>Half of all Exchange/SharePoint/Dynamic CRM revenue is expected to come from online service in the next 5 years</li>
<li>Everything is replicated at least 3 times</li>
<li>Currently runs .NET and C++.  Java/Ruby other languages coming soon</li>
<li>Visual Studio works with all of the services but is not required, everything is exposed through REST and SOAP</li>
<li>BizTalk Server 2009 can be used to help manage connections to the cloud</li>
<li>Declarative Fabric controller handles the deployment and configuration automatically</li>
<li>Community Tech Preview is currently free.  Service will be live by the end of 2009 with pricing plans</li>
</ul>
<p>Other Cloud Computing links of interest:</p>
<p><a href="http://www.cloudcamp.com/">http://www.cloudcamp.com/</a><br />
<a href="http://cloudcomputingexpo.com/">http://cloudcomputingexpo.com/</a><br />
<a href="http://videos.visitmix.com/mix09">http://videos.visitmix.com/mix09</a> has videos on all of the sessions including some on the Microsoft Azure platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2009/03/windows-azure-presentation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Table Sorting with JQuery</title>
		<link>http://techopener.com/blog/2009/01/table-sorting-with-jquery/</link>
		<comments>http://techopener.com/blog/2009/01/table-sorting-with-jquery/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 23:57:06 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/2009/01/table-sorter/</guid>
		<description><![CDATA[A very common request for HTML tables is making them sortable.  The requirement came up the other day and I used JQuery and the JQuery Plugin tablesorter.  JQuery is a excellent lightweight javascript library that is useful for all things &#8230; <a href="http://techopener.com/blog/2009/01/table-sorting-with-jquery/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A very common request for HTML tables is making them sortable.  The requirement came up the other day and I used <a title="JQuery" href="http://jquery.com" target="_blank">JQuery</a> and the <a title="Tablesorter" href="http://tablesorter.com" target="_blank">JQuery Plugin tablesorter</a>.  JQuery is a excellent lightweight javascript library that is useful for all things javascript.  It also allows its large developer community to develop plugins such as the tablesorter plugin.  To use this in your web application, insert the lines below and you are all set.  It does not get much easier than that, plus it is really fast, has customization options, and just plain works.</p>
<pre class="javascript">&lt;script type="text/javascript" src="/path/to/jquery-latest.js"&gt;&lt;/script&gt;
&lt;script type="text/javascript" src="/path/to/jquery.tablesorter.js"&gt;&lt;/script&gt;</pre>
<pre class="javascript">
<pre class="brush: javascript">$(document).ready(function()
    {
        $(&quot;#myTable&quot;).tablesorter();
    }
);</pre>
</pre>
<p>One requirement is that the HTML table must use the THEAD and TBODY tags.  A .NET GridView does not include these tags by default, but they can be added easily enough with the following:</p>
<pre class="brush: c#">
if (this.gridView.Rows.Count &gt; 0)
{
gridView.UseAccessibleHeader = true;
gridView.HeaderRow.TableSection = TableRowSection.TableHeader;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2009/01/table-sorting-with-jquery/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stackoverflow will answer all your programming questions</title>
		<link>http://techopener.com/blog/2009/01/stackoverflow-will-answer-all-your-programming-questions/</link>
		<comments>http://techopener.com/blog/2009/01/stackoverflow-will-answer-all-your-programming-questions/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 23:36:17 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[answers]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/?p=92</guid>
		<description><![CDATA[Lately I have been doing more .NET development and ultimately at some point you get stuck, forget how to do something, or wonder what the best practices for something is.  You immediately run a few google searches and get back &#8230; <a href="http://techopener.com/blog/2009/01/stackoverflow-will-answer-all-your-programming-questions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-124" title="stackoverflow" src="http://techopener.com/blog/wp-content/uploads/2009/01/stackoverflow.png" alt="stackoverflow" width="461" height="310" /></p>
<p>Lately I have been doing more .NET development and ultimately at some point you get stuck, forget how to do something, or wonder what the best practices for something is.  You immediately run a few google searches and get back some articles on a bunch of weird answer sites.  Recently a new site for asking questions started with a really good and unique design.  If you have not ran across it already, I highly recommend taking a look.  <a title="Stackoverflow" href="http://stackoverflow.com" target="_blank">StackOverflow.com</a> is a mix between wikis, blogs, forums, and digg for programming questions and answers.  Even though it is fairly new, it already has a great community and lots of content.  Many languages and topics are covered even though the community, founders, and the site itself are primarily .NET based.</p>
<p>They also run a great <a title="StackOverflow Blog" href="http://blog.stackoverflow.com" target="_blank">blog and podcast</a> where they talk about the site and how they developed it.  They are off to a great start, and they are looking to start a similar site oriented towards <a title="IT Administrators" href="http://blog.stackoverflow.com/2009/01/coming-in-march-it-stack-overflow/" target="_blank">IT Centric</a> version soon.  These guys get it.</p>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2009/01/stackoverflow-will-answer-all-your-programming-questions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to migrate users in Oracle Webcenter Interaction</title>
		<link>http://techopener.com/blog/2009/01/how-to-migrate-users-in-oracle-webcenter-interaction/</link>
		<comments>http://techopener.com/blog/2009/01/how-to-migrate-users-in-oracle-webcenter-interaction/#comments</comments>
		<pubDate>Fri, 16 Jan 2009 03:11:55 +0000</pubDate>
		<dc:creator>kenan</dc:creator>
				<category><![CDATA[development]]></category>
		<category><![CDATA[webcenter]]></category>

		<guid isPermaLink="false">http://techopener.com/blog/?p=94</guid>
		<description><![CDATA[Webcenter Interation provides great tools for importing users from external user directories.  Depending on your user directory and configuration you set a unique identifier to use that is often not the username.  I have ran across a few senarios in &#8230; <a href="http://techopener.com/blog/2009/01/how-to-migrate-users-in-oracle-webcenter-interaction/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Webcenter Interation provides great tools for importing users from external user directories.  Depending on your user directory and configuration you set a unique identifier to use that is often not the username.  I have ran across a few senarios in which you want to switch to a different user directory without losing any user settings or preferences.  </p>
<p>Most commonly, you might have a production Active Directory server that a production portal syncs with and a development server that syncs with a development Active Directory server.  Now lets say you migrate your production portal database to your development environment.  There are a number of items you have to fix for it to operate in this new environment.  Take a look at <a title="ALUI Administration Tool for Environment Refresh: String Replacing for URLS" href="http://fsanglier.blogspot.com/2008/01/alui-administration-tool-for.html" target="_blank">ALUI Administration Tool for Environment Refresh: String Replacing for URLS</a> for more information regarding syncing environments.  For the purpose of this post, we are just concerned about the users and keeping their settings, preferences and security throughout the portal.</p>
<p>In our case, a users Active Directory ObjectGUID is their unique identifier and by definition this is different in each Active Directory server (unless they are in the same domain of course).  So if we just sync with the development Active Directory server, the portal would delete all of the users and then recreate them even though the usernames are the same.  Below are some steps I have successfully used in the past to avoid deleting these users by migrating them to the new authentication source.  Your results may vary, and I do not offer any guarantees so certainly test this procedure thoroughly if you find yourself in a similar situation.</p>
<ul>
<li>Backup the database before starting incase something goes wrong.</li>
<li>Lets assume the existing authentication source id = 201</li>
<li>Create a temporary authentication source used for migration.  Lets assume its id = 202. </li>
<li>Configure both of these authentication source to point to the development Active Directory server.</li>
<li>Run the sync job only for auth source 202.</li>
<li>Run the following SQL script which generates another SQL script that will update the settings of users of the 201 auth source in the PTUSERS table to match those of the 202 auth source.</li>
</ul>
<pre class="brush: sql">SELECT &#039;UPDATE PTUSERS SET AUTHUNIQUENAME=&#039;&#039;&#039; + AUTHUNIQUENAME
+ &#039;&#039;&#039;, DESCRIPTION=&#039;&#039;&#039; + DESCRIPTION
+ &#039;&#039;&#039;, AUTHUSERNAME=&#039;&#039;&#039; + AUTHUSERNAME
+ &#039;&#039;&#039; WHERE MAPPINGAUTHNAME=&#039;&#039;&#039; + MAPPINGAUTHNAME
 &#039;&#039;&#039; AND AUTHSOURCEID=201;&#039;
FROM PTUSERS
WHERE AUTHSOURCEID=202;</pre>
<ul>
<li>Verify the script that it generates escapes any apostrophe characters and then run it.</li>
<li>Run the following SQL script which generates another SQL script that will update the settings of groups of the 201 auth source in the PTUSERGROUPS table to match those of the 202 auth source. </li>
</ul>
<pre class="brush: sql">SELECT &#039;UPDATE PTUSERGROUPS SET AUTHUNIQUENAME=&#039;&#039;&#039; + AUTHUNIQUENAME
+ &#039;&#039;&#039;, DESCRIPTION=&#039;&#039;&#039; + DESCRIPTION
+ &#039;&#039;&#039;, SYNCHGROUPNAME=&#039;&#039;&#039; + SYNCHGROUPNAME
+ &#039;&#039;&#039; WHERE MAPPINGAUTHNAME=&#039;&#039;&#039; + MAPPINGAUTHNAME
+ &#039;&#039;&#039; AND AUTHSOURCEID=201;&#039; 
FROM PTUSERGROUPS
WHERE AUTHSOURCEID=202;</pre>
<ul>
<li>Verify the script that it generates escapes any apostrophe characters and then run it.</li>
<li>Delete the 202 auth source.</li>
<li>Run the 201 auth source sync job.</li>
<li>Verify that users you expected not to be deleted, were not deleted.</li>
</ul>
<p>The PTUSERS table contains some CRC fields, which are based upon all of the fields in a PTUSER record.  The easiest way to update these CRC values for a user, is to save the user using the portal UI or API.  In the past I have written a script that loops through each user in the authentication source and saves them, thus updating the CRC fields, however I can not find it.  I will leave this part as an exercise for the reader.  Just keep in mind that you will need this before the user will be able to authenticate properly.  Although it does seem like the .NET portal relies on the CRC values more so than the Java portal version.</p>
<p>As a side note, I am using the <a title="SyntaxHighlighter Plus" href="http://wordpress.org/extend/plugins/syntaxhighlighter-plus/" target="_blank">SyntaxHighlighter Plus</a> wordpress plugin to provide the syntax highlighting.</p>
]]></content:encoded>
			<wfw:commentRss>http://techopener.com/blog/2009/01/how-to-migrate-users-in-oracle-webcenter-interaction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
