<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><!-- generator="wordpress/2.3.1" --><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>ADITI Blogs</title>
	<link>http://aditiblogs.com/blog</link>
	<description>Think Product</description>
	<pubDate>Tue, 23 Feb 2010 18:28:59 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.3.1</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AditiBlogs" /><feedburner:info uri="aditiblogs" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Why SaaS won’t be the software panacea</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/5UJxJQFaJbE/</link>
		<comments>http://aditiblogs.com/blog/blog/2010/02/23/why-saas-won%e2%80%99t-be-the-software-panacea/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 18:28:59 +0000</pubDate>
		<dc:creator>Ravi Yadavalli</dc:creator>
		
		<category><![CDATA[Architecture &amp; Design]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2010/02/23/why-saas-won%e2%80%99t-be-the-software-panacea/</guid>
		<description><![CDATA[SaaS (Software as a Service) – refers to a model where a software provider provides an application to customer for use as a service, whenever wanted. Subscription to the service includes licensing, subscription, etc. 
Since the application is developed, hosted and maintained by the provider, the customer does not bear the direct cost of hosting [...]]]></description>
			<content:encoded><![CDATA[<p><font face="Calibri"><strong>SaaS (Software as a Service)</strong> – refers to a model where a software provider provides an application to customer for use as a service, whenever wanted. Subscription to the service includes licensing, subscription, etc. </font></p>
<p><font face="Calibri">Since the application is developed, hosted and maintained by the provider, the customer does not bear the direct cost of hosting and maintenance. Also, since the service is available over the internet, it makes it easy for access from different locations. The deployment and time to profit is also reduced for smaller companies.</font></p>
<p><font face="Calibri">SaaS is a good option for small, non-complex companies. These processes allow these small companies or startups to focus on the more complex business and personal processes rather than the routine. </font></p>
<p><font face="Calibri">However, there are a number of cases where this model would not work either for the provider or the customer.</font></p>
<p><font face="Calibri">Data speeds: The data transfer happens over the internet and not over the ethernet speeds that most people are used to. This is not helpful for cases where you need to use the service frequently and for time critical processes.</font></p>
<p><font face="Calibri">Data security: This is a specific concern for all customers since it is their data (and potentially thousands of their customers’ data) that is present at the servers of some third-party. In addition, the data transfer happens over the internet. There are significant gains being made in this area, however, with the advances in technology, the risk still remains high.</font></p>
<p><font face="Calibri">Stability: The provider might go bust. What should a customer do if their service provider closes shop? How does he go about retrieving his data? What should a provider do when a customer goes missing? This impacts his revenue stream.</font></p>
<p><font face="Calibri">Customization: This is not recommended for applications or services that require a high degree of customization. This is true in cases of applications such as manufacturing, business intelligence or ERP, any applications that are at the code of a company’s business practices and provide the differentiation from the market. If a customer needs to pay for the customization, he might as well get a traditional enterprise application build for himself. If the provider pays for this, it might not turn out to be cost effective for him.</font></p>
<p><font face="Calibri">Integration: If my software needs to integrate with other software, SaaS proves to be a difficult model to work with. Since parts of my solutions are not with me, the customer cannot change or ask for changes easily. Since the product (under the SaaS model) is a complex one being used by multiple customers; the provider cannot change it easily either. </font></p>
<p><font face="Calibri">Active (in-process) applications: SaaS works well when a user needs to make a few disconnected calls to the service to send or receive data. If he needs the application to be online (where a long connection is needed to make continuous data entry), the remote nature of the service and the data access over the internet makes this model prohibitive. </font></p>
<p><font face="Calibri">So where does this leave us now?</font></p>
<p><font face="Calibri">I believe the answer lies somewhere in the future – Cloud Computing and thin clients. </font></p>
<p><font face="Calibri">Cloud computing in general provides a useful computing power over the internet. Could computing generally encapsulate these three items– infrastructure as a service, platform as a service and software as a service. It is the first two parts that will help solve the issues with the third part.</font></p>
<p><font face="Calibri">Thin clients are gaining more traction, especially in the mobile world, as the future of application or software development. The idea is to have a thin client that knows how to connect to the server and display the data or results. This relies more on the use of services (custom enterprise applications or third-party services) over the internet.</font></p>
<p><font face="Calibri">Some of the earlier mentioned issues might still be around with the new development and delivery models, but with the increase in the power of the internet and the computer itself, we will soon look at a different list of pros and cons. </font></p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F&amp;title=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F&amp;title=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F&amp;t=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F&amp;title=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F&amp;title=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F&amp;title=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea&amp;source=ADITI+Blogs+Think+Product&amp;summary=SaaS%20%28Software%20as%20a%20Service%29%20%E2%80%93%20refers%20to%20a%20model%20where%20a%20software%20provider%20provides%20an%20application%20to%20customer%20for%20use%20as%20a%20service%2C%20whenever%20wanted.%20Subscription%20to%20the%20service%20includes%20licensing%2C%20subscription%2C%20etc.%20%0D%0A%0D%0ASince%20the%20application%20is%20de" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F&amp;title=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F&amp;t=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F&amp;title=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=Why%20SaaS%20won%E2%80%99t%20be%20the%20software%20panacea&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F02%2F23%2Fwhy-saas-won%25e2%2580%2599t-be-the-software-panacea%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/5UJxJQFaJbE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2010/02/23/why-saas-won%e2%80%99t-be-the-software-panacea/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2010/02/23/why-saas-won%e2%80%99t-be-the-software-panacea/</feedburner:origLink></item>
		<item>
		<title>Apple Safari gets Bing Search</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/Fn05uLQd720/</link>
		<comments>http://aditiblogs.com/blog/blog/2010/01/28/apple-safari-gets-bing-search/#comments</comments>
		<pubDate>Thu, 28 Jan 2010 06:42:48 +0000</pubDate>
		<dc:creator>Sreenivasa Rao Pilla</dc:creator>
		
		<category><![CDATA[Life at Aditi]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2010/01/28/apple-safari-gets-bing-search/</guid>
		<description><![CDATA[Historical move by both Apple and Microsoft to work together ripples the Online Mobile Search market. Google enjoyed the default search status so far with Safari browser. As the Google’s focus in Mobile is changed dramatically and came up with its own OS and mobile devices, it is fast becoming a serious competitor for iPhone [...]]]></description>
			<content:encoded><![CDATA[<p>Historical move by both Apple and Microsoft to work together ripples the Online Mobile Search market. Google enjoyed the default search status so far with Safari browser. As the Google’s focus in Mobile is changed dramatically and came up with its own OS and mobile devices, it is fast becoming a serious competitor for iPhone core business. Microsoft actively looking for all possible opportunities to win some ground in Mobile world trying to grab this and initiated discussions with Apple to make Bing as the default mobile search engine.</p>
<p>What this simply means is Microsoft Bing becomes the market leader in Mobile search. Stats say that Google enjoys 86% of mobile search whereas Bing is mere 11%. The key here is major chunk of Google search requests coming from iPhone. Microsoft already has Bing search iPhone app which has more futuristic search options such as location based with voice commands etc. On the other side, Google betting big on its Android platform and Google’s history clearly says the way they emerged as number one web search engine after disassociating their search engine with Yahoo. History repeats in Mobile?</p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F&amp;title=Apple%20Safari%20gets%20Bing%20Search" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F&amp;title=Apple%20Safari%20gets%20Bing%20Search" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F&amp;t=Apple%20Safari%20gets%20Bing%20Search" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F&amp;title=Apple%20Safari%20gets%20Bing%20Search" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F&amp;title=Apple%20Safari%20gets%20Bing%20Search" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F&amp;title=Apple%20Safari%20gets%20Bing%20Search&amp;source=ADITI+Blogs+Think+Product&amp;summary=Historical%20move%20by%20both%20Apple%20and%20Microsoft%20to%20work%20together%20ripples%20the%20Online%20Mobile%20Search%20market.%20Google%20enjoyed%20the%20default%20search%20status%20so%20far%20with%20Safari%20browser.%20As%20the%20Google%E2%80%99s%20focus%20in%20Mobile%20is%20changed%20dramatically%20and%20came%20up%20with%20its%20" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F&amp;title=Apple%20Safari%20gets%20Bing%20Search" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F&amp;t=Apple%20Safari%20gets%20Bing%20Search" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Apple%20Safari%20gets%20Bing%20Search&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F&amp;title=Apple%20Safari%20gets%20Bing%20Search" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=Apple%20Safari%20gets%20Bing%20Search&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F28%2Fapple-safari-gets-bing-search%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/Fn05uLQd720" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2010/01/28/apple-safari-gets-bing-search/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2010/01/28/apple-safari-gets-bing-search/</feedburner:origLink></item>
		<item>
		<title>Project Management – Planning is Agile</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/Rgv1OccMvcw/</link>
		<comments>http://aditiblogs.com/blog/blog/2010/01/08/project-management-%e2%80%93-planning-is-agile/#comments</comments>
		<pubDate>Fri, 08 Jan 2010 09:20:05 +0000</pubDate>
		<dc:creator>Shrinath Inamdar</dc:creator>
		
		<category><![CDATA[Project Management]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2010/01/08/project-management-%e2%80%93-planning-is-agile/</guid>
		<description><![CDATA[Project Management – Planning is Agile 
Software estimating and planning is all about determining an appropriate schedule or deadline. Planning happens in the initial phase of the project life cycle and once committed to a schedule and stated quality, one is bound to meet the agreed accepted criteria. ‘Not really’; it’s not just that, isn’t it? [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Project Management – Planning is Agile</strong> </p>
<p>Software estimating and planning is all about determining an appropriate schedule or deadline. Planning happens in the initial phase of the project life cycle and once committed to a schedule and stated quality, one is bound to meet the agreed accepted criteria. ‘Not really’; it’s not just that, isn’t it? So, what is planning? Can we state that “Planning is agile” and happens through-out project life cycle? Let’s find out various issues of planning and how we can ensure proper planning.</p>
<p>Planning is one such process group that is an ongoing activity. Planning plays an important role in various knowledge areas such as Scope planning, Human Resource planning, Cost planning, Quality planning, Communication planning, Risk Management planning, Risk Response planning.</p>
<p>The plan must be revisited whenever there is any changes or impact to any of the above mentioned knowledge areas. Other important areas when a plan must be revisited are:</p>
<ul>
<li>Change requests and Accepted changes</li>
<li>Missed Scenarios being identified</li>
<li>Requirements getting elaborated progressively</li>
<li>Change in either dependencies, assumptions, risks or mitigation plan</li>
</ul>
<p>Lets dive deeper:<br />
Planning process involves finding an optimal solution to the overall product development. In the initial phases of the project, we may feel x number of features can be developed in y months and we can deliver the product on a certain date say 15<sup>th</sup> Dec 2009. But as per Barry Boehm’s cone of uncertainty: <em>in the initial product definition phase, a project schedule estimate is typically as far off as 60% to 160%. After the requirements are clearly written; the estimate might be still be off by +/- 15%</em>.  Knowing this, we still make commitments such as the product will be released on a certain date. But this does not mean we do not commit on dates. Variance within accecatable range of +/- 10% is good; provided such impacts are known well-in-advance and informed. Often we miss informing this variance factor in advance to all necessary key stakeholders and hence creating unhappy clients.  </p>
<p>Let’s understand why it is important to inform all relevant stakeholders.<br />
Clients would have committed to their customers based on our commitment on release date. They would have planned user trainings, preparing marketing campaigns, arranging necessary logistics for go-live etc. Any changes to the release dates without prior notice will impact their plans and thus creating unhappiness and dissatisfaction. As PMs we are responsible to set right expectation.</p>
<p>A good planning process supports this by:</p>
<ul>
<li>Reducing risks or uncertainty</li>
<li>Supporting better decision making</li>
<li>Establishing trust and conveying right information</li>
</ul>
<p> As PMs , some mistakes that we make, or at least I have made are:</p>
<ul>
<li>Activity based planning…<br />
We go by <em>activity based planning</em> and thereby losing the focus on feature priority</p>
<ul>
<li>Once we are into activity based planning, we go by what is good logical flow w.r.t. development and ignore feature priority. This way we can easily lose focus.</li>
<li>If an activity was planned for 4 days and subsequently developer finishes it in 2 days. We take the stick and usually penalize the developer for giving padded estimates. Worst, we start assuming that the developer would complete tasks earlier than planned</li>
</ul>
</li>
<li>Assumptions, Risks or Uncertainties…<br />
Ignorance to assumptions, risks and dependencies often brings in late surprises that are not initially envisaged, and thus not estimated. This results in schedule slippage and in turn may call for dropping an important feature to meet the scheduled date.</li>
<li>Multitasking…<br />
We often expect our team to multi-task. While planning this, the resource usage goes quite close to 1.5 or 2 times. This is one of the planning activities that is often ignored. Multi-tasking means context switching and productivity loss of team members. There are occasions when one can be highly productive when multi-taking. For example: Execution of a back-end job to load 1 year of data in parallel with other development activities. Care needs to be taken to identify if multi-tasking is possible</li>
<li>Gold Plating…<br />
We all want to impress our clients and sometime choose to overdo by taking up <em>stretch goal features</em> or refactoring work into scope. When deep into design and development phase, we often hit roadblocks and identify areas that require refactoring. This can easily drift our initial vision and result in main feature being ignored. Instead of creating such tasks as in-scope features and we often tend to please our clients.  This type of work where one tries to please the client is called as gold plating.</li>
<li>Setting Expectation &amp; Prioritization…<br />
Between gold plating and business priority features, we often lack convincing the business owners on non-functional work. Such refactoring work which is technical in nature and as such does not add functional value; will not be given green signal. It is technical team and PM’s responsibility to provide necessary reasoning for bringing such work in scope. The time spent on rework when converted to dollars, the spent will be better understood. Such detailed analysis on dollar saving by refactoring work will be well understood and prioritized.</li>
<li>Missed Scenarios &amp; Impact Analysis…<br />
With requirements getting progressively elaborated and lack of understanding in the initial phase; we may face missed scenarios that are not initially estimated. Care needs to be taken to mitigate these risks and have plans to reduce the impact of such missed scenarios. Good plan usually has 5-10% contingency reserve and should take care of such misses. Careful categorization can help us identify all the <em>change requests along with their estimation</em>.</li>
</ul>
<p>All such accepted changes, missed scenarios, risks and its mitigation plan, gold plating tasks, implied need tasks (such as default performance factor, providing LP – launch plans, Code review time, unit testing and bug fixing time, integration &amp; bug fixing etc) must be updated in the plan. Few other important activities that are implicit and must be considered during planning are:</p>
<ul>
<li>Availability of resources along with their leave plans</li>
<li>No. of hours available (hours/day)
<ul>
<li>I usually take 6 to 6.5 hours/day. Remaining time is used up in understanding the sprint backlog item, its design, in identifying various low level scenarios, getting clarifications to all the impediments. Since, we cannot add contingency reserve (as 5days) as one of the line items in the plan (mpp); the hours/day needs to tackle this need. </li>
</ul>
</li>
<li>Getting business priority right for all the features
<ul>
<li>Listing all the sprint backlog items and its estimation</li>
<li>Identifying impacted area, dependencies and unknown area as line items</li>
</ul>
</li>
<li>Integration of Microsoft Project Plan 2007 works very well with TFS and assigns ID’s for all sprint backlog items.</li>
<li>Tracking of each sprint backlog items story wise or sprint burn down by person wise helps</li>
</ul>
<p>To avoid most of these common mistakes mentioned above, PM need to ensure consistency in watching risks, assumptions, dependencies, elaborated scenarios and changing the plan regularly. These days we rarely see waterfall projects to call out planning process as a one time activity. Plan changes all the time and hence is <em>Agile in nature</em>. The benefits of agile planning are multifold:</p>
<ul>
<li>Having early realization of business priority or value</li>
<li>Regular feedback to ensure quality and provide the right solution.</li>
<li>Early detection of risks</li>
<li>Collaboration – tools like TFS and SharePoint play a very important role</li>
</ul>
<p> Before this blog takes different direction, let me stop here. Please feel free to write your comments&#8230;</p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F&amp;title=Project%20Management%20%E2%80%93%20Planning%20is%20Agile" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F&amp;title=Project%20Management%20%E2%80%93%20Planning%20is%20Agile" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F&amp;t=Project%20Management%20%E2%80%93%20Planning%20is%20Agile" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F&amp;title=Project%20Management%20%E2%80%93%20Planning%20is%20Agile" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F&amp;title=Project%20Management%20%E2%80%93%20Planning%20is%20Agile" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F&amp;title=Project%20Management%20%E2%80%93%20Planning%20is%20Agile&amp;source=ADITI+Blogs+Think+Product&amp;summary=Project%20Management%20%E2%80%93%20Planning%20is%20Agile%C2%A0%0D%0A%0D%0ASoftware%20estimating%20and%20planning%20is%20all%20about%20determining%20an%20appropriate%20schedule%20or%20deadline.%20Planning%20happens%20in%20the%20initial%20phase%20of%20the%20project%20life%20cycle%20and%20once%20committed%20to%20a%20schedule%20and%20stated%20q" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F&amp;title=Project%20Management%20%E2%80%93%20Planning%20is%20Agile" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F&amp;t=Project%20Management%20%E2%80%93%20Planning%20is%20Agile" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Project%20Management%20%E2%80%93%20Planning%20is%20Agile&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F&amp;title=Project%20Management%20%E2%80%93%20Planning%20is%20Agile" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=Project%20Management%20%E2%80%93%20Planning%20is%20Agile&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2010%2F01%2F08%2Fproject-management-%25e2%2580%2593-planning-is-agile%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/Rgv1OccMvcw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2010/01/08/project-management-%e2%80%93-planning-is-agile/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2010/01/08/project-management-%e2%80%93-planning-is-agile/</feedburner:origLink></item>
		<item>
		<title>IM and Chat integration with CRM</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/d38ajUH64Sg/</link>
		<comments>http://aditiblogs.com/blog/blog/2009/07/23/im-and-chat-integration-with-crm/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 09:14:42 +0000</pubDate>
		<dc:creator>Deepak Kumar</dc:creator>
		
		<category><![CDATA[MOSS]]></category>

		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[Unified Communications]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2009/07/23/im-and-chat-integration-with-crm/</guid>
		<description><![CDATA[Do you use a CRM? We are guessing yes. Most likely that’s where your pipeline is maintained. 
Does the invaluable discussion around an opportunity or deal happen inside the CRM. I am guessing No.  That’s your chat / IM solution.
Here is a simple solution that can leverage both these applications to ensure 360 degree communication. [...]]]></description>
			<content:encoded><![CDATA[<p><font face="Verdana" size="2"><a href="http://aditiblogs.com/blog/files/2009/07/updated.png" onclick="" title="updated.png"></a><a href="http://aditiblogs.com/blog/files/2009/07/updatefromchat.png" onclick="" title="updatefromchat.png"></a><a href="http://aditiblogs.com/blog/files/2009/07/oppcrm.jpg" onclick="" title="oppcrm.jpg"></a>Do you use a CRM? We are guessing yes. Most likely that’s where your pipeline is maintained. </font></p>
<p><font face="Verdana" size="2">Does the invaluable discussion around an opportunity or deal happen inside the CRM. I am guessing No.  That’s your chat / IM solution.</font></p>
<p><font face="Verdana" size="2">Here is a simple solution that can leverage both these applications to ensure 360 degree communication. It can greatly enhance visibility and follow up of the pipeline opportunities and potentially increase the turnaround.</font></p>
<p><font face="Verdana" size="2">You can write a simple application to monitor your CRM system and push any interesting opportunity to the respective chat room or owner based on your business rules. This will ensure that any interesting information being captured in the CRM is surfaced on your primary communication system, maximizing the opportunity for collaboration.</font></p>
<p><font face="Verdana" size="2">In the example below I have an FX opportunity that&#8217;s just been created in the system and is worth more than a million dollars. As soon as it is saved in the CRM system, I get an alert in my chat window.</font></p>
<p><font face="Verdana" size="2"><a href="http://aditiblogs.com/blog/files/2009/07/incomingalert.jpg" onclick="" title="incomingalert.jpg"><img src="http://aditiblogs.com/blog/files/2009/07/incomingalert.jpg" alt="incomingalert.jpg" /></a> </font></p>
<p><font face="Verdana" size="2">The link in the alert here provides single click access to the relevant opportunity for anyone interested in it.</font></p>
<p><font face="Verdana" size="2"><a href="http://aditiblogs.com/blog/files/2009/07/updated.png" onclick="" title="updated.png"></a><a href="http://aditiblogs.com/blog/files/2009/07/updatefromchat.png" onclick="" title="updatefromchat.png"></a><a href="http://aditiblogs.com/blog/files/2009/07/oppcrm.jpg" onclick="" title="oppcrm.jpg"><img src="http://aditiblogs.com/blog/files/2009/07/oppcrm.jpg" alt="oppcrm.jpg" /></a> </font></p>
<p><font face="Verdana" size="2">As a corollary scenario, you would also want the valuable information generated while collaborating on such opportunities to get captured in your CRM system along with the context. This again can be achieved using a very simple Bot that lets you send Notes and update properties of specific objects in your CRM system. </font></p>
<p><font face="Verdana" size="2">In the illustration below, for a lost opportunity alert, user sends an update as free text from within the chat client which will automatically be added in the CRM system as an activity for the owner of the opportunity.</font></p>
<p> <a href="http://aditiblogs.com/blog/files/2009/07/updated.png" onclick="" title="updated.png"></a><a href="http://aditiblogs.com/blog/files/2009/07/updatefromchat.png" onclick="" title="updatefromchat.png"><img src="http://aditiblogs.com/blog/files/2009/07/updatefromchat.png" alt="updatefromchat.png" /></a></p>
<p><font face="Verdana" size="2">Here is how the text message from chat will appear in the Opportunity. Notice the highlighted activity.</font></p>
<p><font face="Verdana" size="2"><a href="http://aditiblogs.com/blog/files/2009/07/updated.png" onclick="" title="updated.png"><img src="http://aditiblogs.com/blog/files/2009/07/updated.png" alt="updated.png" /></a> </font></p>
<p><font face="Verdana" size="2">So, this is a very basic integration example. However, the concept can be used to achieve far more sophisticated results and to automate workflows that can substantially improve your productivity.</font></p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F&amp;title=IM%20and%20Chat%20integration%20with%20CRM" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F&amp;title=IM%20and%20Chat%20integration%20with%20CRM" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F&amp;t=IM%20and%20Chat%20integration%20with%20CRM" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F&amp;title=IM%20and%20Chat%20integration%20with%20CRM" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F&amp;title=IM%20and%20Chat%20integration%20with%20CRM" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F&amp;title=IM%20and%20Chat%20integration%20with%20CRM&amp;source=ADITI+Blogs+Think+Product&amp;summary=Do%20you%20use%20a%20CRM%3F%20We%20are%20guessing%20yes.%20Most%20likely%20that%E2%80%99s%20where%20your%20pipeline%20is%20maintained.%20%0D%0A%0D%0ADoes%20the%20invaluable%20discussion%20around%20an%20opportunity%20or%20deal%20happen%20inside%20the%20CRM.%20I%20am%20guessing%20No.%C2%A0%20That%E2%80%99s%20your%20chat%20%2F%20IM%20solution.%0D%0A%0D%0AHere%20is%20a%20" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F&amp;title=IM%20and%20Chat%20integration%20with%20CRM" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F&amp;t=IM%20and%20Chat%20integration%20with%20CRM" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=IM%20and%20Chat%20integration%20with%20CRM&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F&amp;title=IM%20and%20Chat%20integration%20with%20CRM" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=IM%20and%20Chat%20integration%20with%20CRM&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F07%2F23%2Fim-and-chat-integration-with-crm%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/d38ajUH64Sg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2009/07/23/im-and-chat-integration-with-crm/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2009/07/23/im-and-chat-integration-with-crm/</feedburner:origLink></item>
		<item>
		<title>Parallel Programming in C# 4.0 using Visual Studio 2010</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/Yq5ba45c4qE/</link>
		<comments>http://aditiblogs.com/blog/blog/2009/06/07/parallel-programming-in-c-40-using-visual-studio-2010/#comments</comments>
		<pubDate>Sun, 07 Jun 2009 17:20:05 +0000</pubDate>
		<dc:creator>Logu Krishnan</dc:creator>
		
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2009/06/07/parallel-programming-in-c-40-using-visual-studio-2010/</guid>
		<description><![CDATA[
 
Downloaded Visual Studio 2010 Beta 1 yesterday and as I was glancing through it strike to me that this version is stuffed, unless the previous two predecessors VS2005 &#38; VS2008.Framework has been more enhanced and visual studio IDE itself have got overhauled a bit.  Well, I&#8217;m not going to give you a list of [...]]]></description>
			<content:encoded><![CDATA[<p>
 </p>
<p>Downloaded Visual Studio 2010 Beta 1 yesterday and as I was glancing through it strike to me that this version is stuffed, unless the previous two predecessors VS2005 &amp; VS2008.<br />Framework has been more enhanced and visual studio IDE itself have got overhauled a bit.  Well, I&#8217;m not going to give you a list of ALL features – it&#8217;s been blogged already around the world. Better Google it or Bing it with &#8220;VS2010+Features&#8221;
</p>
<p><img src="http://aditiblogs.com/blog/files/2009/06/060709-1708-parallelpro12.png">
	</p>
<p>However, few notable features that caught my eyes are &#8220;Parallel Programming&#8221;, &#8220;F# - Functional Programming&#8221;, &#8220;Velocity – Distributed Caching&#8221;, &#8220;Azure Tools&#8221; and more important of all the evolving Team system.
</p>
<p>But I first wanted to dirt my hand with Parallel Computing, because if you are a computer science student – well, you would be more excited about this than others.<br />Remember the big pillow sized books that we used to read to make this work? Well, things have changed and world have shrunk already. Though I cannot explain all the nitty gritty of parallel programming I will try this to explain in LAY MAN Terms.
</p>
<p>Well, during the Stone Age [!] - Most of the computers in the world had only ONE Processors, except those big beasty servers which are always locked up in rooms with high security (well, usually *nix or Solaris servers) – these beasty servers used to manage most of the corporations. These servers had multiple processors and it took huge efforts to write software&#8217;s and manage them.
</p>
<p>Welcome to the modern world – Every household and every laptop being sold these days at least have two or more processors.
</p>
<p> Now – that has posed us a BIG Question? Hardwares have evolved, but has our software evolved to execute on multiple processors? – The answer is NO. At least not in the mainstream programming world – let&#8217;s say for example what would happen
</p>
<ol>
<li>If we execute a simple FOR Loop
</li>
<li>That would call a service (that takes a longer time)
</li>
<li>… and execute sequentially for N Times
</li>
</ol>
<p>On a single processor this is acceptable and we might use threads to increase the efficiency.
</p>
<p>Is this still acceptable on a multiple processors? The answer is no. Fine, but how do we get efficiency without the hurdles of running and managing too many threads? Shouldn&#8217;t there be an easier way out for this?
</p>
<p>Alrighty, without much ado, let me show you how easy(!) this is and a little insight on what happens behind the scenes. Let&#8217;s churn out a quick code here based on the same questions we have. Let us say a real long process (Well it could be about counting the stars in the UniverseJ, huh) and let us say you want to do this N times.
</p>
<p>In our quest to count all the stars in the universe, let&#8217;s first create a data structure for the star and add to the universe, and let us use the good ol` mother of all loops the &#8220;FOR&#8221; Loop, and see how much inefficient this loop has become these modern days!!
</p>
<p><img src="http://aditiblogs.com/blog/files/2009/06/060709-1708-parallelpro21.png">
	</p>
<p>
 </p>
<p><strong>&#8220;The Sequential execution took almost 30 seconds in my Dual Core Computer.&#8221;<br />
</strong></p>
<p><img src="http://aditiblogs.com/blog/files/2009/06/060709-1708-parallelpro32.png">
	</p>
<p>And here is the Parallel Computing version of the same method. Yes, the for loop has been replaced with Parallel.For a new entry in System.Threading namespace.<br />How simpler can this get to?
</p>
<p><img src="http://aditiblogs.com/blog/files/2009/06/060709-1708-parallelpro42.png">
	</p>
<p><img src="http://aditiblogs.com/blog/files/2009/06/060709-1708-parallelpro5.png">
	</p>
<p><strong>VOILA! The Parallel execution took Just 3 Seconds in my Dual Core Computer.<br />
</strong></p>
<p>Well, That&#8217;s a significant performance improvement without Hardware Scale-out or Scale-up, all we are doing is using the existing hardware resource efficiently. So much to a FOR Loop J, Huh. 30 Seconds of execution have become 3 seconds instantly.  Look closer to the screenshot – the stars are not counted sequentially, instead it allocates the task to the available CPU in parallel.
</p>
<p>Because the loop is run in parallel, each iteration is scheduled and run individually on whatever core is available. This means that the list is not necessarily processed in order, which can drastically impact your code. You should design your code so that each iteration of the loop is completely independent from the others. Any single iteration should not rely on another in order to complete correctly.
</p>
<p>Let us catch up more on the insights soon on next part of the same series&#8230;</p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F&amp;title=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F&amp;title=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F&amp;t=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F&amp;title=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F&amp;title=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F&amp;title=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010&amp;source=ADITI+Blogs+Think+Product&amp;summary=%0A%C2%A0Downloaded%20Visual%20Studio%202010%20Beta%201%20yesterday%20and%20as%20I%20was%20glancing%20through%20it%20strike%20to%20me%20that%20this%20version%20is%20stuffed%2C%20unless%20the%20previous%20two%20predecessors%20VS2005%20%26amp%3B%20VS2008.Framework%20has%20been%20more%20enhanced%20and%20visual%20studio%20IDE%20itself%20have%20" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F&amp;title=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F&amp;t=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F&amp;title=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=Parallel%20Programming%20in%20C%23%204.0%20using%20Visual%20Studio%202010&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F07%2Fparallel-programming-in-c-40-using-visual-studio-2010%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/Yq5ba45c4qE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2009/06/07/parallel-programming-in-c-40-using-visual-studio-2010/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2009/06/07/parallel-programming-in-c-40-using-visual-studio-2010/</feedburner:origLink></item>
		<item>
		<title>SaaS Application Database design approaches</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/xP4zZbsc340/</link>
		<comments>http://aditiblogs.com/blog/blog/2009/06/03/saas-application-database-design-approaches/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 12:48:47 +0000</pubDate>
		<dc:creator>Sreenivasa Rao Pilla</dc:creator>
		
		<category><![CDATA[Life at Aditi]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2009/06/03/saas-application-database-design-approaches/</guid>
		<description><![CDATA[One of the concern areas for any clients (tenants) in using any SaaS model application is &#8220;Data privacy&#8221;. &#8220;Data Sharing&#8221; option would really help the tenants, provided the application database design approach is fool-proof and build the confidence amongst the tenants.
SaaS (Software as a Service) is a model of software development whereby a provider licenses [...]]]></description>
			<content:encoded><![CDATA[<p>One of the concern areas for any clients (tenants) in using any SaaS model application is &#8220;Data privacy&#8221;. &#8220;Data Sharing&#8221; option would really help the tenants, provided the application database design approach is fool-proof and build the confidence amongst the tenants.</p>
<p>SaaS (Software as a Service) is a model of software development whereby a provider licenses an application to customers (subscribers or tenants) for use as a service on demand. SaaS based applications are multi-tenancy not multi-instance application architecture.</p>
<p>&#8220;Data Storage&#8221;, &#8220;Data Synchronization&#8221; and &#8220;Database Maintenance&#8221; are three key focus areas from the deployment perspective. I came up with the following 3 database design approaches and optimized them to make the best out of each.</p>
<p>1.  Individual databases servers:<br />
The best way to isolate the tenant&#8217;s data is to deploy the tenant data in separate database server. This approach is it is easy to extend the existing database to meet tenant&#8217;s customization requirements. Flip side of this approach is its high cost of hardware inventory, licensing cost per hardware, and maintenance. Few tenants&#8217; who requires a high degree of data isolation (physical) and are willing to pay more can opt for this design approach.<br />
<img src="http://aditiblogs.com/blog/files/2009/06/060309-1247-saasapplica11.png" /><img src="http://aditiblogs.com/blog/files/2009/06/060309-1247-saasapplica21.png" /></p>
<p>2.  Shared database servers with Individual Schemas:<br />
Tenant specific schemas would be created in the same database server and access rights permissions are enabled in such a way that a tenant can access only the resources (tables, stored procedures etc) in their specific schema. The key advantage of this approach is lower cost and support a virtually unlimited number of tenant&#8217;s databases. This approach will improve the performance of the application as we can work around a solution to effectively utilize the connection pooling. Even though the tenant&#8217;s databases are in different schemas in the same server, we can use the following technique to maximize the performance in DB connection. The following code is in C# (Microsoft .Net platform) and I am sure we can do the same with other languages as well.</p>
<pre><code>1) objConnection.ConnectionString ="Data Source=MSSQL1;
InitialCatalog=FunnelDatabase; Integrated Security=true;";</code></pre>
<pre><code>2) objConnection.Open();
</code></pre>
<pre><code>3) objConnection.<strong>ChangeDatabase(&#8221;Tenant1&#8243;)</strong>;
</code></pre>
<pre><code>4) objCommnad.execute ("storedprocedurename");
</code></pre>
<p>The point # 3 in the above code is important. An initial connection to the database server has been established to FunnelDatabase. However, before executing the stored procedure / SQL statement, line #3 is changing the target database to Tenant1. By doing so, we are still utilizing the initial connection string and hence using the same connection pool for all the target databases.</p>
<p><img src="http://aditiblogs.com/blog/files/2009/06/060309-1247-saasapplica31.png" /></p>
<p>3. Same Database with Same Schema:<br />
All tenants&#8217; data resides in same schema and share the same set of tables. But, a tenant identifier can be added to the primary key (composite key). A key challenge in this approach is it is not customizable at tenant level and rigorous testing required to gain the tenant&#8217;s confidence for data security and data privacy. Barring the above concerns, this is the best among all three approaches in terms of cost and maintenance. Even in this approach, we can establish some degree of data isolation by using some of the advanced techniques such as &#8220;<strong>Partitioning methods</strong>&#8220;, which allow physical data separation of each tenant&#8217;s data across physical devices while providing simplification of maintenance due to shared table definitions.</p>
<p>Let us talk about deployment strategies with networking options in our next blog.</p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F&amp;title=SaaS%20Application%20Database%20design%20approaches" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F&amp;title=SaaS%20Application%20Database%20design%20approaches" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F&amp;t=SaaS%20Application%20Database%20design%20approaches" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F&amp;title=SaaS%20Application%20Database%20design%20approaches" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F&amp;title=SaaS%20Application%20Database%20design%20approaches" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F&amp;title=SaaS%20Application%20Database%20design%20approaches&amp;source=ADITI+Blogs+Think+Product&amp;summary=One%20of%20the%20concern%20areas%20for%20any%20clients%20%28tenants%29%20in%20using%20any%20SaaS%20model%20application%20is%20%22Data%20privacy%22.%20%22Data%20Sharing%22%20option%20would%20really%20help%20the%20tenants%2C%20provided%20the%20application%20database%20design%20approach%20is%20fool-proof%20and%20build%20the%20confidence%20am" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F&amp;title=SaaS%20Application%20Database%20design%20approaches" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F&amp;t=SaaS%20Application%20Database%20design%20approaches" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=SaaS%20Application%20Database%20design%20approaches&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F&amp;title=SaaS%20Application%20Database%20design%20approaches" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=SaaS%20Application%20Database%20design%20approaches&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F06%2F03%2Fsaas-application-database-design-approaches%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/xP4zZbsc340" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2009/06/03/saas-application-database-design-approaches/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2009/06/03/saas-application-database-design-approaches/</feedburner:origLink></item>
		<item>
		<title>IM on Group Chat client</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/kk51IlCESlk/</link>
		<comments>http://aditiblogs.com/blog/blog/2009/04/15/im-on-group-chat-client/#comments</comments>
		<pubDate>Wed, 15 Apr 2009 06:43:32 +0000</pubDate>
		<dc:creator>Sweta Jagirdar</dc:creator>
		
		<category><![CDATA[Unified Communications]]></category>

		<category><![CDATA[Microsoft Group Chat]]></category>

		<category><![CDATA[Microsoft Office Communicator]]></category>

		<category><![CDATA[OCS]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2009/04/15/im-on-group-chat-client/</guid>
		<description><![CDATA[The Office Communicator client offers much more than just IM – it is a rich application that offers conferencing, voice, and desk sharing among other features. For business users in the Financial Services space, these features can be very useful. However, chat (IM and topic-based) is the most important medium of collaboration for these user [...]]]></description>
			<content:encoded><![CDATA[<p>The Office Communicator client offers much more than just IM – it is a rich application that offers conferencing, voice, and desk sharing among other features. For business users in the Financial Services space, these features can be very useful. However, chat (IM and topic-based) is the most important medium of collaboration for these user communities. Given that Group Chat is available on a client that&#8217;s different from Communicator, organizations will have to roll out two separate clients to users to offer the whole gamut of communication features.</p>
<p>When talking to MindAlign customers, a question we hear quite often is whether users have a choice about how they use these clients. When a user has both clients installed, by default, IM is not available on the Group Chat client. So a valid concern is the impact to productivity as users switch between the two clients for IM and Group Chat. One option for organizations is to roll out only the Group Chat client. IM is then available on this client, and users can maintain their contact/buddy list at one place. The fact is that users are likely to be using IM and Group Chat a majority of the time, so this might be a safe choice.</p>
<p>But users would definitely like access to conferencing, voice and other communication features – these are what have the potential to increase business productivity and provide return on investment from the new platform. So does this mean that business users will be stuck switching between two chat clients on a day-to-day basis? Fortunately, no. Microsoft allows users to decide on the end point for IM with a simple registry setting.</p>
<p>Here are the steps to enable IM in Group Chat when you have both clients installed (when you only have Group Chat, you don&#8217;t have anything to worry about – you can use IM within Group Chat by default):</p>
<p>1. Add an entry, DisableIM under KEY_CURRENT_USER\Software\Policies\Microsoft\GroupChatConsole\Permissions. This should be of type DWORD -  make sure the value is set to 0</p>
<p><img src="http://aditiblogs.com/blog/files/2009/04/041509-0641-imongroupch1.png" /></p>
<p>2. Restart Group Chat – on logging in, you should see your buddy list and be able to initiate a private conversation.</p>
<p><img src="http://aditiblogs.com/blog/files/2009/04/041509-0641-imongroupch2.png" /></p>
<p>3. If you are logged into Group Chat only, and someone sends you an IM, a new Group Chat window is launched. If you are logged into both clients, then both clients are notified. The client you pick first will handle the conversation. A different IM conversation can be initiated from either client.</p>
<p>4.  If you&#8217;d like to restrict IM to Group Chat alone, then you can disable IM on Communicator. You can use the registry entry DisableIM type DWORD = 1 under HKEY_CURRENT_USER\Software\Policies\Microsoft\Communicator - You can continue to use Voice, Conferencing and other features on Communicator.</p>
<p><img src="http://aditiblogs.com/blog/files/2009/04/041509-0641-imongroupch3.png" /></p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F&amp;title=IM%20on%20Group%20Chat%20client" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F&amp;title=IM%20on%20Group%20Chat%20client" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F&amp;t=IM%20on%20Group%20Chat%20client" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F&amp;title=IM%20on%20Group%20Chat%20client" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F&amp;title=IM%20on%20Group%20Chat%20client" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F&amp;title=IM%20on%20Group%20Chat%20client&amp;source=ADITI+Blogs+Think+Product&amp;summary=The%20Office%20Communicator%20client%20offers%20much%20more%20than%20just%20IM%20%E2%80%93%20it%20is%20a%20rich%20application%20that%20offers%20conferencing%2C%20voice%2C%20and%20desk%20sharing%20among%20other%20features.%20For%20business%20users%20in%20the%20Financial%20Services%20space%2C%20these%20features%20can%20be%20very%20useful.%20H" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F&amp;title=IM%20on%20Group%20Chat%20client" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F&amp;t=IM%20on%20Group%20Chat%20client" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=IM%20on%20Group%20Chat%20client&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F&amp;title=IM%20on%20Group%20Chat%20client" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=IM%20on%20Group%20Chat%20client&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F15%2Fim-on-group-chat-client%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/kk51IlCESlk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2009/04/15/im-on-group-chat-client/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2009/04/15/im-on-group-chat-client/</feedburner:origLink></item>
		<item>
		<title>What is Unified Messaging?</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/Ej8_CrdgFOY/</link>
		<comments>http://aditiblogs.com/blog/blog/2009/04/09/unified-messaging-basics/#comments</comments>
		<pubDate>Wed, 08 Apr 2009 22:55:25 +0000</pubDate>
		<dc:creator>Vishvesh Ram Raiter</dc:creator>
		
		<category><![CDATA[Unified Communications]]></category>

		<category><![CDATA[communications]]></category>

		<category><![CDATA[OCS]]></category>

		<category><![CDATA[Unified messaging]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2009/04/09/unified-messaging-basics/</guid>
		<description><![CDATA[Unified Messaging is an Exchange Server role that was introduced in Exchange Server 2007. It enables you to access your message types (e-mail, voicemail, fax, SMS text) from your Outlook email client. The basic idea behind Unified Messaging is that users communicate in a variety of different ways. Some users prefer to send E-mail messages, while [...]]]></description>
			<content:encoded><![CDATA[<p>Unified Messaging is an Exchange Server role that was introduced in Exchange Server 2007. It enables you to access your message types (e-mail, voicemail, fax, SMS text) from your Outlook email client. The basic idea behind Unified Messaging is that users communicate in a variety of different ways. Some users prefer to send E-mail messages, while others prefer using the telephone and some users might need to have live discussion. Now, if you bundle these choices into one single entity you get - Exchange server 2007. And if you add flavour of instant messaging you have - Microsoft OCS/GCC � <img src='http://aditiblogs.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Now you will ponder, what is the term <em>Unified</em> doing here? - Well, the term <em>Unified</em> refers for the basic message layer being common for different message type. This means, data gets captured in single formative body that can be represented in different formats as per the chioce of end user with subtle UI variations.</p>
<p>The term Unified Messaging(UM) is sometimes confused with Unified Communications(UC). UM systems culls messages from several sources (such as email, voice mail and faxes), but holds those messages for retrieval at a later time. And the way or underlining protocol that does this job of delivery forms your UC.</p>
<p>In a company though, a user typically has two separate mailboxes; one for E-mail messages, and another one for voice mail messages (google/yahoo etc ..). Furthermore, voice mail has traditionally been tied to the telephone. Although it is common for voice mail to be remotely accessible, users often find themselves writing down names, numbers, or messages on pieces of paper, which often get lost! (at-least it happened with me :))</p>
<p>Microsoft designed Exchange 2007 so that the Inbox allows users to store E-mail messages, voice mail messages, and faxes all in the same place. This frees the user from having to look for messages in multiple locations. It also gives users a way to make voice messages search-able; just in similar fashion we search our mails in Outlook. Now with OCS 2007 R2 you can check offline messages and post emails as chat to your internal chat environment.</p>
<p>So in brief Unified Messaging can provide you:<br />
- Voice mails/Phone calls/Missed calls/call waiting/Forwards/Call forking<br />
- IM chats/Group messages with Emotions :), <img src='http://aditiblogs.com/blog/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> etc..<br />
- Create own filters/triggers<br />
- Contact grouping<br />
- Remote call controls and remote desktop sharing<br />
- Web conferencing</p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F&amp;title=What%20is%20Unified%20Messaging%3F" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F&amp;title=What%20is%20Unified%20Messaging%3F" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F&amp;t=What%20is%20Unified%20Messaging%3F" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F&amp;title=What%20is%20Unified%20Messaging%3F" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F&amp;title=What%20is%20Unified%20Messaging%3F" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F&amp;title=What%20is%20Unified%20Messaging%3F&amp;source=ADITI+Blogs+Think+Product&amp;summary=Unified%20Messaging%20is%20an%20Exchange%20Server%20role%20that%20was%20introduced%20in%20Exchange%20Server%202007.%20It%20enables%20you%20to%20access%20your%20message%20types%20%28e-mail%2C%20voicemail%2C%20fax%2C%20SMS%20text%29%20from%20your%20Outlook%20email%20client.%C2%A0The%20basic%20idea%20behind%20Unified%20Messaging%20is%20that%20" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F&amp;title=What%20is%20Unified%20Messaging%3F" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F&amp;t=What%20is%20Unified%20Messaging%3F" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=What%20is%20Unified%20Messaging%3F&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F&amp;title=What%20is%20Unified%20Messaging%3F" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=What%20is%20Unified%20Messaging%3F&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F09%2Funified-messaging-basics%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/Ej8_CrdgFOY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2009/04/09/unified-messaging-basics/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2009/04/09/unified-messaging-basics/</feedburner:origLink></item>
		<item>
		<title>ETL: How to handle bad data</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/m2ckYkFBcws/</link>
		<comments>http://aditiblogs.com/blog/blog/2009/04/07/etl-how-to-handle-bad-data/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 13:20:21 +0000</pubDate>
		<dc:creator>Jagdish Malani</dc:creator>
		
		<category><![CDATA[Architecture &amp; Design]]></category>

		<category><![CDATA[BI - Business Intelligence]]></category>

		<category><![CDATA[Bad data]]></category>

		<category><![CDATA[ETL]]></category>

		<category><![CDATA[handling bad data]]></category>

		<category><![CDATA[load data]]></category>

		<category><![CDATA[rejected data]]></category>

		<category><![CDATA[staging]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2009/04/07/etl-how-to-handle-bad-data/</guid>
		<description><![CDATA[During any ETL design, we implement various functionalities like validation, auditing, notification, job recovery, job logging, data cleansing, handling bad data, etc. I am going to talk about handling bad data in this blog. At a top level, ETL design allows for bad data to be rejected and sent over to the appropriate users in [...]]]></description>
			<content:encoded><![CDATA[<p>During any ETL design, we implement various functionalities like validation, auditing, notification, job recovery, job logging, data cleansing, handling bad data, etc. I am going to talk about handling bad data in this blog. At a top level, ETL design allows for bad data to be rejected and sent over to the appropriate users in the form of files. But, in my opinion, there is more to this than meets the eye. As an ETL architect, our responsibility does not end there. So before I get into details of how shall we handle bad data, let me tell you how what makes the incoming data bad enough to be handled. Following are the few reasons that generate bad data:</p>
<ol>
<li>A set of business rules are laid out that define whether the incoming data is good or bad. Let&#8217;s consider the sales record where the cost of the product must be present. If the cost contains a null value or a negative number, the sales records would be considered bad.</li>
<li>Any data that would not satisfy the referential integrity in data warehouse database. This usually happen in case of missing inter-dependent data. If the incoming data contains references to some other data, which could not be loaded for some reason, this incoming data becomes bad and shall not be loaded into data warehouse database. A typical example would be a retail chain maintaining product master in a centralized database. And the sales data is generated across different POS terminals. So during ETL, if corporate database is down for whichever reason, ETL would not be able to load new products. But at the same time, there is sales generated for these new products. Thus with no product in product dimension (master) the sales record is considered bad at this moment and would not be loaded into data warehouse database.</li>
<li>Missing business keys: If mandatory data is missing in the incoming data then that data is considered bad. This usually does not happen if the data is sourced from other relational databases. While sourcing data from files, there is every possibility that data may go missing, even if the format of the incoming feed file is already decided.</li>
<li>Missing data: There may be many cases when the data is missing in the incoming data. That logically makes the data bad. For example an incoming product feed file contains record with no product code and product description. In this case the data is considered invalid.</li>
</ol>
<p>Now, as we have seen what generates the bad data, we must understand that data cleansing does not make any data bad. Data cleansing is applied only on good data. So before we start data cleansing, a mechanism needs to be put in place to identify good data from the bad data.</p>
<p>Once this bad data is identified, it is usually stored in a separate area called &#8220;Rejection Area&#8221;. This rejection area can be in a separate schema in the same database that contains staging schema or it can be a separated database altogether. The structure of the rejection area (table structure) is similar to that of staging area with the additional few columns. These additional are required to store metadata about rejected data.</p>
<p>As an ETL architect we need to design our ETL to provide following functionality:</p>
<ol>
<li><strong>Ability to reprocess this bad data whenever required.</strong> The data that could not be loaded due to missing references is usually re-processed when that missing data is loaded into the data warehouse database. Consider the case where due to missing product master, sales data was rejected. Later, when the latest product master is loaded, this bad data (which wasn&#8217;t really bad) which could not be loaded needs to be reprocessed. Otherwise the sales summary report would not be accurate. Another factor when the bad data needs to be reprocessed is change in business rules. If there is a lot of rejection due to strict validation rules, customer may decide to change these validation rules so that large amount of data is not rejected.
<p>We can automate this functionality by adding few columns in the rejection area table:</p>
<ol>
<li><strong>Reprocess_flag (Y|N):</strong> This flag when set, determines if this record needs to be re-processed. Moving these rejected records from rejection area to staging area should be automated. This would help customers in various ways such as reduced the dependency on IT staff, lower maintenance cost.</li>
<li><strong>Reprocess_Job_Id:</strong> Usually the metadata about each run of job is maintained. So to be able to audit, when the rejected record was reprocessed, the job id is stamped into this column.</li>
<li><strong>Active_Flag:</strong> Once the record marked to be reprocessed, is copied over to staging area, this record is made inactive as this record is not valid anymore. It may happen that this record may fail validations again and end up in rejection area, but it would be considered as another record. So in essence, there is only one instance of the rejected record in rejected area. This implies that inactive records cannot be chosen to be re-processed.</li>
</ol>
</li>
<li><strong>Ability to reprocess incoming data:</strong> Many times due to various reasons, the same data that is already processed is fed again into the ETL. This requires us to identify the corresponding records in rejection area and mark them as inactive as these records are not valid anymore. The incoming records would need to be validated as per the current business rules. The records in staging area are compared with the records in rejection area against the business keys and for matching records active_flag is set to &#8216;N&#8217;. This process of marking existing rejected records as inactive is usually automated.</li>
<li><strong>Ability to mark invalid data:</strong> Sometimes the business keys in the incoming records are null. These records are then eventually end up in the rejection area and are active. These records, no matter how many times are reprocessed, they would end up in rejection area again. At the same time, the incoming records can be matched with these records. Thus these records should be marked as invalid. For this add following column in the rejection area table:
<ol>
<li><strong>Valid_flag (Y|N):</strong> This flag must be set to &#8216;Y&#8217; for missing business keys. This implies that this record cannot be re-processed ever.</li>
</ol>
<p>The important fact to be noticed here is that the responsibility of ETL architect does not end here. By designing the ETL, to mark the rejected data as invalid does not solve any business problems. The incoming data must get loaded into the data warehouse database. So it becomes very important for BI architect to talk to end users and tell them the impact of this. The end users may need some tweaking in the source systems, but if they need accurate reports they must send the accurate data.</li>
</ol>
<p>What I have explained is just one way of designing rejection area (tables containing bad data). What I have discussed is the concept of handling bad data. There can be different ways of implementing the above mentioned functionality. Once ETL and database is designed appropriately, an interface must be provided to the end users that allow users to do following:</p>
<ol>
<li>Select any rejected table and mark rejected records to be reprocessed.</li>
<li>Select any already processed data for reprocessing. This is simple if the incoming data is in the form of feed files. This gets little bit complex when the data is extracted from existing databases. Typically in large ETL systems, the staging area is archived. Depending on the needs of the customer, this goal can be achieved.</li>
<li>Look at the invalid data and analyze it to be able to fix the source systems accordingly.</li>
<li>Execute the ETL job after selecting the rejected records or selected source data for reprocessing. This would depend on various other factors such as ETL time window, the need to reflect the correct data, the time of ETL run, etc.</li>
</ol>
<p>Last but not the least, as an ETL architect our goal shall not be just to implement some logic to handle bad data. Our main responsibility is to make this whole thing as automated as possible. Automation would provide various benefits such as reduced development time, lesser errors hence increased quality and finally the reduced cost for the customer.</p>
<p>If you have any questions or comments, you can reach me at <a href="mailto:jagdishm@aditi.com">jagdishm@aditi.com</a>.</p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F&amp;title=ETL%3A%20How%20to%20handle%20bad%20data" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F&amp;title=ETL%3A%20How%20to%20handle%20bad%20data" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F&amp;t=ETL%3A%20How%20to%20handle%20bad%20data" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F&amp;title=ETL%3A%20How%20to%20handle%20bad%20data" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F&amp;title=ETL%3A%20How%20to%20handle%20bad%20data" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F&amp;title=ETL%3A%20How%20to%20handle%20bad%20data&amp;source=ADITI+Blogs+Think+Product&amp;summary=During%20any%20ETL%20design%2C%20we%20implement%20various%20functionalities%20like%20validation%2C%20auditing%2C%20notification%2C%20job%20recovery%2C%20job%20logging%2C%20data%20cleansing%2C%20handling%20bad%20data%2C%20etc.%20I%20am%20going%20to%20talk%20about%20handling%20bad%20data%20in%20this%20blog.%20At%20a%20top%20level%2C%20ETL%20desig" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F&amp;title=ETL%3A%20How%20to%20handle%20bad%20data" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F&amp;t=ETL%3A%20How%20to%20handle%20bad%20data" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=ETL%3A%20How%20to%20handle%20bad%20data&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F&amp;title=ETL%3A%20How%20to%20handle%20bad%20data" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=ETL%3A%20How%20to%20handle%20bad%20data&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F04%2F07%2Fetl-how-to-handle-bad-data%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/m2ckYkFBcws" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2009/04/07/etl-how-to-handle-bad-data/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2009/04/07/etl-how-to-handle-bad-data/</feedburner:origLink></item>
		<item>
		<title>Developing Managed Event Sinks/Hooks for Exchange Server Store using C#</title>
		<link>http://feedproxy.google.com/~r/AditiBlogs/~3/2jvSkE6PFqg/</link>
		<comments>http://aditiblogs.com/blog/blog/2009/03/28/developing-managed-event-sinkshooks-for-exchange-server-store-using-c/#comments</comments>
		<pubDate>Fri, 27 Mar 2009 19:44:22 +0000</pubDate>
		<dc:creator>Logu Krishnan</dc:creator>
		
		<category><![CDATA[C#]]></category>

		<category><![CDATA[Exchange Server]]></category>

		<category><![CDATA[Microsoft]]></category>

		<category><![CDATA[.NET]]></category>

		<guid isPermaLink="false">http://aditiblogs.com/blog/blog/2009/03/28/developing-managed-event-sinkshooks-for-exchange-server-store-using-c/</guid>
		<description><![CDATA[One of my previous projects involved me to create a Managed Event Sink for Microsoft Exchange Server Store. Being the first attempt on the topic it took a while to grasp and crack the event sinks – surprisingly googling did not help either, but finally when I cracked, I thought I shall share it to [...]]]></description>
			<content:encoded><![CDATA[<p>One of my previous projects involved me to create a <strong>Managed</strong> Event Sink for Microsoft Exchange Server Store. Being the first attempt on the topic it took a while to grasp and crack the event sinks – surprisingly googling did not help either, but finally when I cracked, I thought I shall share it to the world for common goodness <img src='http://aditiblogs.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Hence, this Article…</p>
<p>So, what does an <strong>Event Sink </strong>Really mean?</p>
<p>Event Sink is a piece of code that gets triggered on predetermined events. A more classic jargon I can give as an example is &#8220;Hooks&#8221;, i.e. we hook to an event and when the event occurs our custom code executes first and later the control is passed back to the original event if required. Similarly, we could hook to a mailbox of anyone on the exchange server and could execute the hacked hook even before the exchange server events are fired. This gives us to build a series of LOB applications.</p>
<h1>Exchange Store Events</h1>
<p>Some of the events that can be hooked to Exchange Server are</p>
<p>1. <strong>Synchronous Events </strong>– Events that get triggered before an item [Mail, appointments, documents, tasks etc] is committed to the exchange server. These events pauses the exchange store thread until the event sink finishes executing. No other process can access the item during this event sink execution period as, event sink has the exclusive control over the items. Following are the events that are classified as Synchronous events.</p>
<p>a. OnSyncSave – fires when the item is saved to exchange, but before the changes are committed.<br />
b. OnSyncDelete – fires when the item is deleted from exchange, but before the delete operation is committed.</p>
<p>2. <strong>Asynchronous Events </strong>– Events that get fired after an item is committed to the exchange server. These Async events do not block the exchange store thread. Following are the Asynchronous events.<strong><br />
</strong></p>
<p>a. OnSave – Fires after the item is saved to exchange and changes are committed<br />
b. OnDelete – Fires after the item is deleted from the exchange and changes are committed.</p>
<p><strong>3. System Events</strong>– Events that get fired based on some system wide actions on exchange server, the following are the system events.</p>
<p>a. OnMDBStartUp – This fires up when the Exchange Database is started.<br />
b. OnMDBShutdown – This fires up when the Exchange Database is shut down.<br />
c. OnTimer – Executes a piece of code at predefined intervals. This is a very useful event, which runs irrespective of specific events.</p>
<p>Synchronous and Asynchronous events are tied to a specific item or folder in the exchange store.</p>
<p>All these events are exposed in the Exchange CDOEX library [cdoex.dll] as interfaces. Fig 1.1 shows the object browser window of the CDOEX library.</p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm13.jpg" /></p>
<h1>So What? What Can I Build?</h1>
<p>Some of the applications that can be developed using Event Sink are,</p>
<ol>
<li>Notification Subsystems</li>
<li>Global Timer applications</li>
<li>Workflow based applications</li>
<li>Automatic Categorization subsystems</li>
<li>Store maintenance for administrators</li>
</ol>
<h1>Let&#8217;s Code Now&#8230;</h1>
<p>Fire up your Visual Studio.NET and choose new C# Class library project and name the project, hmm&#8230; let&#8217;s call it as &#8220;MyEventSink&#8221;.</p>
<p>On the Solution explorer, right click the project name and choose Properties, on the Project Properties page choose configuration properties choose build and set <strong>Register for COM Interop </strong>to<br />
True<strong>.</strong></p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm23.jpg" /></p>
<p>Now, Copy the below files to the MyEventSink bin directory</p>
<ul>
<li><em>exoledb.dll</em> from exchange server bin directory (\program files\exchsrvr\bin)</li>
<li><em>cdoex.dll</em> - \program files\common files\Microsoft Shared\CDO</li>
<li><em>msado15.dll</em> - \Program Files\Common Files\System\ADO</li>
</ul>
<p>Open up the VS.NET Command Prompt and navigate to MyEventSink bin folder, and create strong name keys for the above libraries. Key-in the following commands</p>
<p>&gt; Sn –k exoledb.key<br />
&gt; Sn –k cdoex.key<br />
&gt; Sn –k msado.key</p>
<p>We need to create interop assemblies of the above library, in order to, create the interop assemblies we shall use the tlbimp tool. Key-in the following commands to create 3 interop assemblies.</p>
<p><em>tlbimp exoledb.dll /keyfile:exoledb.key /out:interop.exoledb.dll /namespace:CDO<br />
tlbimp cdoex.dll /keyfile:cdoex.key /out:interop.cdoex.dll /namespace:CDO<br />
tlbimp msado15.dll /keyfile:msado.key /out:interop.adodb.dll /namespace:ADODB </em></p>
<p>Copy these interop dll files to the debug folder. Switch back to VS.NET and add references to the above created interop DLL files. Modify the following attributes on the <em>AssemblyInfo.cs</em></p>
<p>Under General Information section, modify</p>
<p>[assembly: AssemblyTitle(&#8221;MyEventSink&#8221;)]</p>
<p>[assembly: AssemblyDescription(&#8221;My Event Sink - Logu&#8221;)]</p>
<p>at version information section, create a new GUID and add</p>
<p>[assembly: Guid(&#8221;44E6847A-0012-42af-A317-1E1A9F0C853D&#8221;)]</p>
<p><em>[Tip: You can create a new GUID by clicking Tools-&gt;Create GUID] </em></p>
<p>at sign information section, modify</p>
<p>[assembly: AssemblyDelaySign(false)]</p>
<p>[assembly: AssemblyKeyFile(&#8221;MyEventSink.key&#8221;)]</p>
<p>[assembly: AssemblyKeyName(&#8221;MyEventSink&#8221;)]</p>
<p>Now, Choose Project Properties and set the &#8220;Wrapper assembly key file&#8221; to <em>MyEventSink.key</em> and &#8220;Wrapper assembly Key Name&#8221; to &#8220;My Event Sink&#8221;</p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm33.jpg" /></p>
<p>Start the VS.NET Command Prompt and change directory to your project directory, and create a key, key-in the following,</p>
<p>&gt; sn –k MyEventSink.key</p>
<p>Switch back to VS.NET IDE, and change the file name of class1.cs to a new name like &#8220;<em>ExchEventSink.cs</em>&#8220;, double click the .cs file to open.</p>
<p>Add,</p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm4.png" /></p>
<p>Modify the class definition code to resemble like below,</p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm5.png" /></p>
<p>If you observe the above code, you can notice that we are implementing the IExStoreAsyncEvents interface, which implements the asynchronous events methods namely onsave and ondelete. We shall implement the same now, add the following to your code [check the attached zip file for more information]</p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm6.png" /></p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm7.png" /></p>
<p>In the above code, we are processing an exchange item on onsave method, and we create a LOG file. This is a simple code example; modify it to your requirements.</p>
<p>Compile the class, you have your event sink component ready. Now, Open Component Services, under COM+ applications create new empty application and name it as &#8220;MyEventSink&#8221;, then, expand, components under MyEventSink and click &#8220;import components that are already registered&#8221;</p>
<p>And choose &#8220;MyEventSink.ExchEventSink&#8221; from the populated list.</p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm8.jpg" /></p>
<p>Now, the event sink component is registered to the server.</p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm9.jpg" /></p>
<p>We are done on our development part. Now, you can bind the component to any folder of exchange store, there are multiple ways to do this, I prefer the following,</p>
<p><em>RegEvent.vbs</em> - I&#8217;ve attached the VBS file along with the download zip, this script creates the event registration for the specified folder. The following command binds the event sink to my inbox folder,</p>
<p><img src="http://aditiblogs.com/blog/files/2009/03/032709-1937-developingm10.jpg" /></p>
<p>I&#8217;ve included the vbs file along with the zip file.</p>
<p>Exchange Explorer – this is a tool you get with Exchange SDK</p>
<p>Alternatively, you can build your own event registration [that&#8217;s a separate article by itself <img src='http://aditiblogs.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> ]</p>
<p>At last, we are done&#8230; We have created our own Managed Exchange Store Event Sink. You can also implement the Synchronous Events and the System Events as same as we have implemented the Asynchronous events.</p>



Share and Enjoy:


	<a rel="nofollow" target="_blank" href="http://digg.com/submit?phase=2&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F&amp;title=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23" onclick="javascript:pageTracker._trackPageview('/outbound/article/digg.com');" title="Digg"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/digg.png" title="Digg" alt="Digg" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://del.icio.us/post?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F&amp;title=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23" onclick="javascript:pageTracker._trackPageview('/outbound/article/del.icio.us');" title="del.icio.us"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/delicious.png" title="del.icio.us" alt="del.icio.us" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.facebook.com/share.php?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F&amp;t=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.facebook.com');" title="Facebook"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/facebook.png" title="Facebook" alt="Facebook" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.google.com/bookmarks/mark?op=edit&amp;bkmk=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F&amp;title=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.google.com');" title="Google"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/googlebookmark.png" title="Google" alt="Google" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dotnetkicks.com/kick/?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F&amp;title=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dotnetkicks.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dotnetkicks.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.linkedin.com/shareArticle?mini=true&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F&amp;title=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23&amp;source=ADITI+Blogs+Think+Product&amp;summary=One%20of%20my%20previous%20projects%20involved%20me%20to%20create%20a%20Managed%20Event%20Sink%20for%20Microsoft%20Exchange%20Server%20Store.%20Being%20the%20first%20attempt%20on%20the%20topic%20it%20took%20a%20while%20to%20grasp%20and%20crack%20the%20event%20sinks%20%E2%80%93%20surprisingly%20googling%20did%20not%20help%20either%2C%20but%20fin" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.linkedin.com');" title="LinkedIn"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/linkedin.png" title="LinkedIn" alt="LinkedIn" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F&amp;title=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23" onclick="javascript:pageTracker._trackPageview('/outbound/article/favorites.live.com');" title="Live"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/live.png" title="Live" alt="Live" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.myspace.com/Modules/PostTo/Pages/?u=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F&amp;t=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.myspace.com');" title="MySpace"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/myspace.png" title="MySpace" alt="MySpace" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://slashdot.org/bookmark.pl?title=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23&amp;url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/slashdot.org');" title="Slashdot"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/slashdot.png" title="Slashdot" alt="Slashdot" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://technorati.com/faves?add=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/technorati.com');" title="Technorati"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/technorati.png" title="Technorati" alt="Technorati" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://twitter.com/home?status=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F" onclick="javascript:pageTracker._trackPageview('/outbound/article/twitter.com');" title="TwitThis"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/twitter.gif" title="TwitThis" alt="TwitThis" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="http://www.dzone.com/links/add.html?url=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F&amp;title=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23" onclick="javascript:pageTracker._trackPageview('/outbound/article/www.dzone.com');" title="description"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/dzone.png" title="description" alt="description" class="sociable-hovers" /></a>
	<a rel="nofollow" target="_blank" href="mailto:?subject=Developing%20Managed%20Event%20Sinks%2FHooks%20for%20Exchange%20Server%20Store%20using%20C%23&amp;body=http%3A%2F%2Faditiblogs.com%2Fblog%2Fblog%2F2009%2F03%2F28%2Fdeveloping-managed-event-sinkshooks-for-exchange-server-store-using-c%2F" title="E-mail this story to a friend!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/email_link.png" onclick="" title="E-mail this story to a friend!" alt="E-mail this story to a friend!" class="sociable-hovers" /></a>
	<a rel="nofollow" href="javascript:window.print();" title="Print this article!"><img src="http://aditiblogs.com/blog/wp-content/plugins/sociable/images/printer.png" onclick="" title="Print this article!" alt="Print this article!" class="sociable-hovers" /></a>


<br/><br/><img src="http://feeds.feedburner.com/~r/AditiBlogs/~4/2jvSkE6PFqg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://aditiblogs.com/blog/blog/2009/03/28/developing-managed-event-sinkshooks-for-exchange-server-store-using-c/feed/</wfw:commentRss>
		<feedburner:origLink>http://aditiblogs.com/blog/blog/2009/03/28/developing-managed-event-sinkshooks-for-exchange-server-store-using-c/</feedburner:origLink></item>
	</channel>
</rss>
