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

<channel>
	<title>RDA Corporation</title>
	<atom:link href="http://www.rdacorp.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.rdacorp.com</link>
	<description>Technology Expertise. Business Thinking. Let&#039;s Go!!</description>
	<lastBuildDate>Mon, 20 May 2013 13:19:56 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>CIO Forum and Executive IT Summit &#8211; Philadelphia</title>
		<link>http://www.rdacorp.com/2013/05/cio-forum-and-executive-it-summit-philadelphia/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cio-forum-and-executive-it-summit-philadelphia</link>
		<comments>http://www.rdacorp.com/2013/05/cio-forum-and-executive-it-summit-philadelphia/#comments</comments>
		<pubDate>Mon, 20 May 2013 12:30:12 +0000</pubDate>
		<dc:creator>David Rathert</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[CIO]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[executive]]></category>
		<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5825</guid>
		<description><![CDATA[RDA is sponsoring and participating in the CIO Forum and Executive IT Summit in Philadelphia on May 21 and 22.]]></description>
			<content:encoded><![CDATA[<p>RDA is proud to sponsor the Premier CIO Forum and Executive IT Summit in Philadelphia on May 21 and 22.</p>
<p>This event brings together IT executives from the region, including CIOs, CTOs, CISOs, and VPs. Conference agendas are driven by CIOs and senior IT executives. The goal of the forum is to create an encouraging atmosphere to help solve technology, leadership and business challenges. </p>
<p>RDA is hosting the following breakout session:</p>
<p><strong>Can big data be housebroken? Getting the animal to do what you want and need.</strong><br />
Many companies are undertaking &#8220;Big Data&#8221; initiatives.  How do these initiatives align with business opportunities and challenges?  What processes should be put in place to reinforce this alignment?  Don’t get lost in the hype.  Big Data is not just about the Volume, Variety, and Velocity of data but most importantly the Value – the ability to analyze and act on data. This panel discussion will examine how other companies are making their big data actionable and how they overcame the challenges and obstacles that stood in their way.</p>
<p><a rel="nofollow" href="http://pemconferences.com/" target="_blank">Get details on this event.</a></p>
<p>&nbsp;</p>
<p><em><a rel="nofollow" href="http://office.microsoft.com/en-us/images/results.aspx?qu=people&amp;ex=2#ai:MP900430804|mt:2|">Image Source</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/05/cio-forum-and-executive-it-summit-philadelphia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What’s New in SharePoint 2013 &#8211; Part 1</title>
		<link>http://www.rdacorp.com/2013/05/whats-new-in-sharepoint-2013-part-1/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=whats-new-in-sharepoint-2013-part-1</link>
		<comments>http://www.rdacorp.com/2013/05/whats-new-in-sharepoint-2013-part-1/#comments</comments>
		<pubDate>Tue, 14 May 2013 12:30:13 +0000</pubDate>
		<dc:creator>Jeff Charikofsky</dc:creator>
				<category><![CDATA[Workflow/Collaboration]]></category>
		<category><![CDATA[SharePoint 2013]]></category>
		<category><![CDATA[social computing]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5818</guid>
		<description><![CDATA[Learn about the new features and changes in the latest version of Microsoft SharePoint. Part 1 of a 4-part series: Social Computing (Communities and MySites).]]></description>
			<content:encoded><![CDATA[<p>The release of the latest version of Microsoft’s SharePoint platform, SharePoint 2013, introduces numerous new features as well as improvements to the previous release. The new features and changes to existing features cover the entire gamut of the platform – from security to search, user interface to social features. All facets of the system have been enhanced and improved.</p>
<p>In this 4-part blog series we will look at a few of these new features and changes. This list is by no means inclusive (that takes a lot more space than we have) and does not cover more technical topics such as the new authorization/security model, apps, and various developer enhancements. For a more complete list, please visit <a rel="nofollow" href="http://office.microsoft.com/en-us/sharepoint-help/whats-new-in-microsoft-sharepoint-server-2013-HA102785546.aspx" target="_blank">What’s New in Microsoft SharePoint Server 2013</a>.<strong></strong></p>
<p><strong> </strong></p>
<h3>Social Computing</h3>
<p>SharePoint 2013 includes new functionality for sharing and collaboration as well as improved administration and user experiences.</p>
<p>&nbsp;</p>
<h4>Communities</h4>
<p>Many users of SharePoint 2010 utilized the Discussion list template to facilitate discussions among members of a site. SharePoint 2013 builds on this concept through the introduction of two new site templates: the <em>Community Site</em> and the <em>Community Portal</em>.</p>
<p>Community sites provide the user with a forum to categorize and facilitate discussions with a broad group of people across the entire enterprise by promoting open communication and information exchange among users. Visitors can view information and can choose to become members if they wish to contribute.</p>
<p>As you would expect, full moderation capabilities are included, such as the reporting/removal of inappropriate content, selecting featured content, and assigning of various <em>badges </em>to community members.</p>
<p>&nbsp;</p>
<h4>My Sites</h4>
<p>In SharePoint 2010, My Sites became a central place for users to store personal and shared documents of many types. Through the use of people search, users were able to populate their profile with information to promote connections with other users, thus benefiting from the expertise of others within the organization.</p>
<p>In SharePoint 2013, the My Sites interface has been completely re-designed to enhance the capabilities provided with the previous release,  including simplified navigation and new Microblog and Newsfeeds features. These features allow users to engage in short, public conversations, and to remain current on activities from other users that they find interesting.</p>
<p>The fun is just beginning! In my next post, we will take a look at SharePoint 2013&#8242;s content authoring and mobile device support features. See you there!</p>
<p><a rel="nofollow" href="http://office.microsoft.com/en-us/images/results.aspx?qu=business&amp;ex=1#ai:MP900431740|mt:2|"><em>Image Source</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/05/whats-new-in-sharepoint-2013-part-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CIO Forum and Executive IT Summit</title>
		<link>http://www.rdacorp.com/2013/05/cio-forum-and-executive-it-summit/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cio-forum-and-executive-it-summit</link>
		<comments>http://www.rdacorp.com/2013/05/cio-forum-and-executive-it-summit/#comments</comments>
		<pubDate>Tue, 07 May 2013 12:30:56 +0000</pubDate>
		<dc:creator>David Rathert</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[CIO]]></category>
		<category><![CDATA[event]]></category>
		<category><![CDATA[executive]]></category>
		<category><![CDATA[IT]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5803</guid>
		<description><![CDATA[RDA is sponsoring and participating in the CIO Forum and Executive IT Summit in Atlanta on May 9 and 10.]]></description>
			<content:encoded><![CDATA[<p>RDA is proud to sponsor the Premier CIO Forum and Executive IT Summit in Atlanta on May 9 and 10.</p>
<p>This event brings together IT executives from the region, including CIOs, CTOs, CISOs, and VPs. Conference agendas are driven by CIOs and senior IT executives. The goal of the forum is to create an encouraging atmosphere to help solve technology, leadership and business challenges.</p>
<p>RDA is hosting the following breakout session:</p>
<p><strong>Can big data be housebroken? Getting the animal to do what you want and need.</strong><br />
Many companies are undertaking &#8220;Big Data&#8221; initiatives.  How do these initiatives align with business opportunities and challenges?  What processes should be put in place to reinforce this alignment?  Don’t get lost in the hype.  Big Data is not just about the Volume, Variety, and Velocity of data but most importantly the Value – the ability to analyze and act on data. This panel discussion will examine how other companies are making their big data actionable and how they overcame the challenges and obstacles that stood in their way.</p>
<p><a rel="nofollow" href="http://pemconferences.com/" target="_blank">Get details on this event.</a></p>
<p>&nbsp;</p>
<p><em><a rel="nofollow" href="http://office.microsoft.com/en-us/images/results.aspx?qu=smile&amp;ex=1#ai:MP900422775|mt:2|" target="_blank">Image Source</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/05/cio-forum-and-executive-it-summit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solutions to Common WCF Serialization Problems</title>
		<link>http://www.rdacorp.com/2013/04/solutions-to-common-wcf-serialization-problems/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=solutions-to-common-wcf-serialization-problems</link>
		<comments>http://www.rdacorp.com/2013/04/solutions-to-common-wcf-serialization-problems/#comments</comments>
		<pubDate>Tue, 30 Apr 2013 12:30:17 +0000</pubDate>
		<dc:creator>Jon Lester</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[serialization]]></category>
		<category><![CDATA[WCF]]></category>
		<category><![CDATA[Windows Communication Foundation]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5764</guid>
		<description><![CDATA[This post describes three common WCF serialization problem scenarios and explains how to avoid them. It includes an approach to build unit tests to detect these scenarios. ]]></description>
			<content:encoded><![CDATA[<p>If you aren&#8217;t familiar with it already, Windows Communication Foundation (WCF) is a framework for building service-oriented applications. Using WCF, you can send data from one service endpoint to another making use of a variety of contracts and transport protocols. The messages can be as simple as a single character or word sent as XML, or as complex as a stream of binary data.  Service endpoints are commonly hosted using IIS, but can be hosted in other processes as well.</p>
<p>WCF services are a staple of multi-tiered architectures because they make it easy to move business logic or data operations into a service without having to worry much about the process that is hosting it, the transport, message formats, etc.  The abstraction is so clean in fact, that I’ve actually spoken with developers who didn’t even realize that their code was running in a different process (or possibly on a different server altogether).  This can be a both good thing and a bad thing.</p>
<p>Let’s say that you have an existing ASP.NET application that is using Entity Framework for data access, and all the code runs within this ASP.NET application.  Later you decide that it’s time to move your data access into a WCF service, so you create a new service project (with the default bindings and message format), and begin porting your code into your new service.  For the most part everything just works, you barely broke a sweat, and life is good.</p>
<p>Although your code probably compiles after only a few tweaks, most of the time you are going to run into at least a handful of serialization issues related to the parameters or return types of your service methods.  And because these are run-time serialization exceptions (which are in some cases data-dependent), you may not even notice there is a problem until you’ve deployed your service and are exercising it with real data.  This is the part that can be a little confusing if you are new to WCF or service-oriented applications in general.</p>
<p>This post is about common serialization issues that you are most likely to encounter when porting existing code to a WCF service or when leveraging legacy data models in a new project.  We’ll wrap up with a simple approach you can use in your unit tests to ensure that new serialization bugs aren’t introduced down the road.</p>
<p>&nbsp;</p>
<h4>Classes with Circular References</h4>
<p>Most object models have at least some circular references.  For example, a parent object has collection of children, and each of those child objects holds a reference to the parent.  This can pose a problem to a framework that uses text-based messages to represent those models.</p>
<p>Consider the following:</p>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        List GetEmployees();
    }

    [DataContract]
    public class Employee
    {
        [DataMember]
        public string Name { get; set;}
        [DataMember]
        public bool IsActive { get; set; }
        [DataMember]
        public Employee Manager { get; set; }
    }
</pre>
<p>&nbsp;</p>
<p>Each employee object holds a reference to another Employee object (Manager). To illustrate, let’s implement the GetEmployees() method with some sample data:</p>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
    public class Service1 : IService1
    {
        public List GetEmployees()
        {
            var jon = new Employee()
                { Name = &quot;Jon&quot;, IsActive = true };
            var steve = new Employee()
                { Name = &quot;Steve&quot;, IsActive = true, Manager = jon };
            var mike = new Employee()
                { Name = &quot;Mike&quot;, IsActive = false, Manager = steve };

            return new List() { jon, steve, mike };
        }
    }
</pre>
<p>&nbsp;</p>
<p>If we deploy and run this it works great, and this scenario seems harmless.  But what if in reality we end up with a condition where the data has a circular reference?  I realize that this is a contrived example, but for the sake of brevity, let’s make one quick change to the code above:</p>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
        public List GetEmployees()
        {
            var jon = new Employee()
                { Name = &quot;Jon&quot;, IsActive = true };
            var steve = new Employee()
                { Name = &quot;Steve&quot;, IsActive = true, Manager = jon };
            var mike = new Employee()
                { Name = &quot;Mike&quot;, IsActive = false, Manager = steve };

            jon.Manager = mike;

            return new List() { jon, steve, mike };
        }
</pre>
<p>&nbsp;</p>
<p>The code will still compile and deploy, but when we call the service method over a WCF channel we’ll get an exception:</p>
<p>“Object graph for type &#8216;Employee&#8217; contains cycles and cannot be serialized if reference tracking is disabled.”</p>
<p>Fortunately, this common problem has an easy fix.  We just need to set the “IsReference” property on the DataContractAttribute to tell the serializer to serialize the objects as references.  Note that there is a small performance penalty for doing this (so only use it when necessary), and it will only work with XML message formats, but it allows us to salvage our existing data model without major refactoring.</p>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
    [DataContract(IsReference=true)]
    public class Employee
    {
        [DataMember]
        public string Name { get; set;}
        [DataMember]
        public bool IsActive { get; set; }
        [DataMember]
        public Employee Manager { get; set; }
    }
</pre>
<p>&nbsp;</p>
<h4>Derived Return Types</h4>
<p>Let’s assume that some employees are hourly employees that require a special derived class, which again would be a very common thing to find in your object model. Let’s add an HourlyEmployee class that derives from Employee, and modify our GetEmployees() method to make use of it in our sample data:</p>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
    [DataContract(IsReference = true)]
    public class HourlyEmployee : Employee
    {
    }
    public List GetEmployees()
    {
        var jon = new Employee()
            { Name = &quot;Jon&quot;, IsActive = true };
        var steve = new Employee()
            { Name = &quot;Steve&quot;, IsActive = true, Manager = jon };
        var mike = new HourlyEmployee()
            { Name = &quot;Mike&quot;, IsActive = false, Manager = steve };

        jon.Manager = mike;

        return new List() { jon, steve, mike };
    }
</pre>
<p>&nbsp;</p>
<p>As soon as we encounter this new type after deploying the service and calling the method we will get a serialization exception:</p>
<p>“Type &#8216;HourlyEmployee&#8217; with data contract name &#8216;HourlyEmployee:http://schemas.datacontract.org/2004/07/WCFSerialization&#8217; is not expected.”</p>
<p>Again this is an easy fix.  We just need to modify the data contract of the Employee type to allow the HourlyEmployee type as well.  We do this by adding the KnownTypeAttribute:</p>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
    [DataContract(IsReference=true)]
    [KnownType(typeof(HourlyEmployee))]
    public class Employee
    {
        [DataMember]
        public string Name { get; set;}
        [DataMember]
        public bool IsActive { get; set; }
        [DataMember]
        public Employee Manager { get; set; }
    }
</pre>
<p>&nbsp;</p>
<h4>Non-Serializable Collections</h4>
<p>Certain types of collections can’t be serialized and should never be used as members in your data model.  For example, IQueryable&lt;T&gt; can’t be serialized, but if you need to provide an IQueryable&lt;T&gt; member on your class, you can implement it as a wrapper for another (optionally private) collection that <em>can</em> be serialized.  Just be sure to mark it with the IgnoreDataMemberAttribute so that the serializer will ignore it.</p>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
    [DataContract(IsReference=true)]
    [KnownType(typeof(HourlyEmployee))]
    public class Employee
    {
        [DataMember]
        public string Name { get; set;}
        [DataMember]
        public bool IsActive { get; set; }
        [DataMember]
        public Employee Manager { get; set; }

        [DataMember]
        private ICollection _directReports { get; set; }

        [IgnoreDataMember]
        public IQueryable DirectReports {
            get { return _directReports.AsQueryable(); }
            set { _directReports = value.ToList(); }
        }
    }
</pre>
<p>&nbsp;</p>
<p>Another common issue is with collections that are marked as virtual and get overridden with a type that is not expected by the serializer.  This is similar to the KnownType issue above, but they are usually anonymous types that can’t be accounted for at design time.  You will most frequently see this with ORM tools (such as Entity Framework) where virtual collections are used as a mechanism to support lazy loading.  Obviously you can’t lazy load a collection that has already been serialized and returned to the client, so lazy loading should just be disabled.  The approach for doing this varies according to the specific framework and version you are using, but for Entity Framework you can find more information <a rel="nofollow" href="http://msdn.microsoft.com/en-us/data/jj574232.aspx" target="_blank">here</a>.</p>
<p>&nbsp;</p>
<h4>Unit Testing for Serialization Issues</h4>
<p>Up until now we’ve discussed problems you might discover after you’ve deployed your WCF service.  But how do we catch serialization errors before we’ve deployed our code?  You can write integration test scripts that will automatically deploy and test your service, but setting that up can be tricky and time-consuming.  As an easier alternative, you can leverage the DataContractSerializer directly in your unit tests.  The basic approach is to call your service methods directly, and then serialize and deserialize the result to simulate the process that is normally handled by WCF.</p>
<p>While I’m sure it’s not bullet proof, I’ve used this approach many times, and it will catch all of the scenarios discussed above.  First, add a unit test project to your solution.  Then simply create some serialization helper functions that you can from each of your tests.  I’ve included a stripped-down version (below) that can be used as a starting point.</p>
<p>&nbsp;</p>
<pre class="brush: php; title: ; notranslate">
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Text;
using System.IO;
using System.Runtime.Serialization;
using System.Xml;
using System.Collections.Generic;

namespace UnitTestProject1
{
    [TestClass]
    public class UnitTest1
    {
        [TestMethod]
        public void TestMethod1()
        {
            var service = new Service1();
            var employees = service.GetEmployees();

            //include any business logic tests
            // { ... }

            //test serialization
            string xml = employees.SerializeToXml();
            List employee2 = xml.DeserializeObject&gt;();
        }
    }
    public static class SerializationHelper
    {
        public static string SerializeToXml(this object obj)
        {
            var dataContractSerializer = new DataContractSerializer(obj.GetType());
            using (var memoryStream = new MemoryStream())
            {
                dataContractSerializer.WriteObject(memoryStream, obj);
                return Encoding.UTF8.GetString(memoryStream.ToArray());
            }
        }
        public static T DeserializeObject(this string xml) where T : class
        {
            MemoryStream memoryStream = new MemoryStream(Encoding.Unicode.GetBytes(xml));
            XmlDictionaryReader reader =
                XmlDictionaryReader.CreateTextReader(memoryStream, Encoding.Unicode,
                new XmlDictionaryReaderQuotas(), null);

            DataContractSerializer dataContractSerializer =
                new DataContractSerializer(typeof(T));
            return dataContractSerializer.ReadObject(reader) as T;
        }
    }
}
</pre>
<p>&nbsp;</p>
<p>Please contact RDA for “Architecture and Code Analysis” of your application.  We can ensure that your application’s design and code follow best practices, and we can make recommendations for making your design faster, more scalable, and more secure.  We can also help make your legacy applications mobile-ready or cloud-ready. Happy Coding!</p>
<p><a rel="nofollow" href="http://office.microsoft.com/en-us/images/results.aspx?qu=error&amp;ex=1#ai:MP900442430|mt:2|" target="_blank"><em>Image Source</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/04/solutions-to-common-wcf-serialization-problems/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2013 SharePoint Conference – May 2</title>
		<link>http://www.rdacorp.com/2013/04/2013-sharepoint-conference-may-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=2013-sharepoint-conference-may-2</link>
		<comments>http://www.rdacorp.com/2013/04/2013-sharepoint-conference-may-2/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 12:30:29 +0000</pubDate>
		<dc:creator>David Rathert</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5773</guid>
		<description><![CDATA[Please join RDA at the 2013 GR8 SharePoint Conference in Philadelphia on May 2, 2013!]]></description>
			<content:encoded><![CDATA[<p>Please join RDA at the <strong>2013 GR8 SharePoint Conference</strong> in Philadelphia on May 2, 2013!</p>
<p>The conference tracks are designed for IT Executives, Project Managers / Managers, IT Professionals, Developers and Business Leaders and are delivered by Microsoft’s top national and local partners.</p>
<p>We are sponsoring the event and RDA Senior Consultant Greg Robinson will present on &#8220;Manage, Search, and Socialize Institutional Knowledge.&#8221;</p>
<p><a rel="nofollow" href="http://www.cvent.com/d/hcq4qr?Refid=Partner15PHILLY" target="_blank">Register to attend.</a></p>
<p>GR8 SharePoint Conference<br />
Thursday, May 2, 2013<br />
King of Prussia / Philadelphia</p>
<p><a rel="nofollow" href="http://www.cvent.com/events/mproc.aspx?m=3c9605b4-7a4d-41a9-96cf-97a25f52fd3b&amp;u=http%3a%2f%2fwww.cvent.com%2fd%2fhcq4qr%3fRefid%3dPartner10PHILLY&amp;l=Philly+Conference+Information" target="_blank">Get the details.</a></p>
<p>If you cannot attend but would like to be notified when the conference content is available, please click on the link below and the organizers will send you the links to the content as it becomes available.</p>
<p><a rel="nofollow" href="https://www.cvent.com/events/gr8-washington-dc-sharepoint-conference-2013/regret-survey-c22f9efd87d14815910e0b96d223c956.aspx?rc=f3a12953-d200-4587-aefe-f0842be2746f" target="_blank">No, I Cannot Attend (Send me the links to the content)</a></p>
<p>We hope to see you there!</p>
<p><em><a rel="nofollow" href="http://office.microsoft.com/en-us/images/results.aspx?qu=smile&amp;ex=1#ai:MP900430494|mt:2|" target="_blank">Image Source</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/04/2013-sharepoint-conference-may-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social Engineering: Your Biggest Security Threat</title>
		<link>http://www.rdacorp.com/2013/04/social-engineering-your-biggest-security-threat/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=social-engineering-your-biggest-security-threat</link>
		<comments>http://www.rdacorp.com/2013/04/social-engineering-your-biggest-security-threat/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 12:30:46 +0000</pubDate>
		<dc:creator>Pablo Gazmuri</dc:creator>
				<category><![CDATA[Business Thinking]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[social engineering]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5759</guid>
		<description><![CDATA[Learn what social engineering is, why it is a threat to personal and corporate security, and how to defend against it.]]></description>
			<content:encoded><![CDATA[<p>In my last few blog posts, I’ve discussed common security challenges and the principles used to design secure applications.  While it’s important to enhance security using technical measures, such as encrypting sensitive data and establishing secure defaults (discussed previously), the most prevalent and effective attacks typically make use of some form of social engineering.</p>
<p>&nbsp;</p>
<h4>What is social engineering?</h4>
<p>A con man is a social engineer.  He makes use of his knowledge of human nature to manipulate others into taking actions they otherwise would not have taken.  Trickery, flattery, exploitation of greed, bestowing of gifts and more can be used to drive the behavior of others in startlingly predictable ways.</p>
<p>Kevin Mitnick, an ex-hacker and computer security expert, has spoken extensively about how he was always more successful with social engineering than with traditional hacking.  It makes sense when you consider that it’s generally easier to convince someone to give you a password than it is to discover and exploit a technical security flaw.  Indeed, recent studies have shown that many people will give up their passwords for trivial gifts such as pens or chocolate bars.</p>
<p>In this post, I’ll explain some common social engineering techniques and demonstrate how businesses can protect themselves from such techniques.</p>
<p>&nbsp;</p>
<h4>Pretexting</h4>
<p>Almost all social engineering schemes make use of pretexting, which refers to the creation of a contrived scenario used to set the stage in such a way that a victim is more likely to give up information or perform inappropriate actions.  Consider the following scenarios:</p>
<ul>
<li>I’m calling from the Internet security bureau to inform you that your PC is infected with a dangerous computer virus. &lt;Said with an authoritative tone&gt;  Federal law requires that you disinfect your PC immediately by visiting MaliciousWebsite.com…</li>
<li>My Wife/Father/Brother/Dog just died! &lt;sobbing&gt; I need to reset his email password to pay the bills and keep the lights on! Can you please help me?</li>
<li>I’m calling on behalf of the “&lt;Your Company&gt; Gives Back” campaign.  We are collecting donations for victims of &lt;recent natural disaster&gt;.  We can deduct your donation from your paycheck directly!  Would you like to give $10? Great, I’ll just need your password for verification&#8230;</li>
</ul>
<p>The above scenarios certainly play on the victims’ naiveté, but also their respect for authority, empathy for the grieving, and desire to help others in need.  By contriving such scenarios, a social engineer can be very successful in extracting information or getting others to perform inappropriate actions.</p>
<p>&nbsp;</p>
<h4>Phishing</h4>
<p>Phishing refers to the practice of corresponding with a large number of people under the guise of a known entity (business or government agency) in an attempt to extract personal information such as social security numbers or passwords.  Some of those people will inevitably believe that the correspondence is real and respond accordingly, with personal information.</p>
<p>Note that phishing can be accomplished with any form of correspondence.  We typically associate phishing with email, because it is relatively simple to send thousands of emails, and it&#8217;s easy to provide a link to a malicious website within an email.  But phishing attacks can take place over traditional mail, telephone, web chat, or other mediums.  When an attacker makes use of an automated IVR (interactive voice response) system, it is known as IVR phishing.  These days, it is very simple to create automated telephone systems, so people should never trust a seemingly legitimate phone system unless they called the system itself using a known telephone number.</p>
<p>Most phishing that occurs is email based, and it generally follows this pattern:</p>
<ul>
<li>User gets a message from &lt;Big Bank&gt; saying they must validate their personal information due to “anomalous activity” detected on their account (note the pretext – the target is frightened into thinking someone ELSE is trying to get to their money!)</li>
<li>User clicks the login link in the email, which actually goes to a malicious website that is dressed up to look just like the website at &lt;Big Bank&gt;</li>
<li>User types in their username and password and clicks “log in”</li>
<li>User is asked to “verify” additional information by typing in their social security number, mother’s maiden name, etc…</li>
</ul>
<p>At this point, the attacker knows enough about you to take over most of your accounts at various businesses.  Through the use of additional social engineering, he may be able to get access to your phone records, take out loans in your name, and more.</p>
<p>Note that even the savvy can be taken in when phishing techniques are combined.  Many people might think to check the URL in the link to log in at &lt;Big Bank&gt;, and notice that it doesn’t actually go to &lt;Big Bank’s&gt; website.  If there was a phone number in the email instead (probably with a message like: “to protect your security, avoid the dangers of online access and call this number”), many people wouldn’t question dialing that number. When they hear a very professional-sounding IVR phone system with menu options and voice recognition, they may be fooled into believing the lie entirely.</p>
<p>&nbsp;</p>
<h4>Baiting</h4>
<p>Baiting refers to a method of installing a malicious device onto a protected PC or network.  Baiting works by disguising the device as something that your target would want to plug into their PC and leaving it somewhere that the target could find it.</p>
<p>The classic example is a USB drive (or better, a dozen USB drives) loaded with malware and dropped randomly around a corporate office’s parking lot.  Many people, simply out of curiosity, will pick up and plug in those drives to see what they might contain.  An attacker can up the ante by labelling a drive or disk to increase curiosity, or even let greed do its work.  A CD drive labelled “Quarterly Earnings Q1 2013” (found before earnings were made public) might be fairly effective in exploiting a target’s greed, for example, or perhaps a good Samaritan will return the disk to the company (where it will be promptly inserted into a drive).</p>
<p>Of course, most PCs these days have auto-run disabled, so users would have to unwittingly execute a file off the disk in most cases, but this can be encouraged by disguising the executable as an interesting document, for example.</p>
<p>With more sophistication, baiting can become very difficult to resist, especially when people are unaware that they might be targeted in such a way, as many undoubtedly are.  For example, imagine you have “won” a prize that comes to your mailbox one day.  Perhaps this prize is a digital music player with malware on it.  Maybe it is Christmas time and the prize is a mini tree with lights (USB powered, of course, with malware included).  It is even possible to embed wifi capabilities into such devices and use them as wireless backdoors into a private network.</p>
<p>&nbsp;</p>
<h4>Miscellaneous Types of Social Engineering</h4>
<p><strong>Quid Pro Quo</strong></p>
<p>Quid pro quo is exactly what it sounds like.  An attacker offers his victim a gift in exchange for some action or piece of information.  As mentioned above, this is surprisingly effective according to a variety of studies.  The attacker often does not even need to make a deal.  By simply providing assistance in some way, an attacker can endear themselves to their victim, making further interrogation a simple matter.</p>
<p>&nbsp;</p>
<p><strong>Tailgaiting</strong></p>
<p>Tailgating refers to the actions of people who do not have a security badge or access to a particular physical space, but get in to that space regardless by closely following someone who does have access.  As a consultant who doesn’t always get a security badge when visiting clients, I can sadly say that I have personally mastered this technique.  Even though most people are trained to disallow tailgating, in practice many are too timid to confront a potential tailgater.  This is one reason why some companies require its employees to display their badges in a visible place.  If many people keep their badges concealed, it is practically impossible to enforce a no-tailgating policy.</p>
<p>&nbsp;</p>
<p><strong>Dumpster Diving</strong></p>
<p>Dumpster diving refers to the practice of looking through trash for sensitive information.  A tried and true technique used by spies and personal investigators for a very long time (perhaps since the dawn of paper records), companies are generally well aware of the need to dispose of sensitive trash securely, and an entire industry has been created for this very purpose.</p>
<p>&nbsp;</p>
<h4>Protecting Yourself and Your Business</h4>
<p>A number of common sense rules must be followed by everyone within an organization to keep it safe:</p>
<ul>
<li>Always verify the identity of any person or system to whom you are providing personal or sensitive information.</li>
<li>Never take actions or divulge others’ sensitive information without obtaining the required prerequisite identifying or authorizing information (no exceptions!).</li>
<li>Never plug in a device to your PC or network that is not known to be safe.  Note that USB drives have been known to come from the factory with malware installed and should be heavily discouraged if enabled at all.</li>
<li>Destroy sensitive trash before disposal.</li>
<li>Politely refuse unknown tailgaters.</li>
<li>Remember that a person’s backstory or nice gift does not mean you can trust that person.</li>
</ul>
<p>Unfortunately, those rules are not enough, as they do not specify what is “sensitive” or what the “prerequisite” identifying info must be.  For that, you must create a “framework of trust” for your organization which defines the following items:</p>
<ul>
<li>Which information is considered sensitive</li>
<li>Who has access to that information</li>
<li>How they access that information</li>
<li>The acceptable ways they may share that information</li>
<li>The ways another party may be authorized to access that information</li>
<li>What is acceptable and required identifying information</li>
</ul>
<p>In addition to defining those items, this framework must be tested periodically without warning.  When found, irregularities should be investigated and corrective action should be taken.</p>
<p>Finally, keep this in mind next time you call helpdesk or a business you have an account with.  Are they properly verifying your identity before taking action?  If not, ask to speak with a supervisor and alert them of the problem.  Remember that insecure businesses put YOU at risk, too.</p>
<p>In my next post, I’ll discuss password security and why we need to rethink what makes a password “secure.”</p>
<p><a rel="nofollow" href="http://office.microsoft.com/en-us/images/results.aspx?qu=people&amp;ex=1#ai:MP900285001|mt:2|" target="_blank"><em>Image Source</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/04/social-engineering-your-biggest-security-threat/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Agile Requirements Documentation Using Enterprise Architect</title>
		<link>http://www.rdacorp.com/2013/04/agile-requirements-documentation-using-enterprise-architect/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=agile-requirements-documentation-using-enterprise-architect</link>
		<comments>http://www.rdacorp.com/2013/04/agile-requirements-documentation-using-enterprise-architect/#comments</comments>
		<pubDate>Tue, 09 Apr 2013 12:30:44 +0000</pubDate>
		<dc:creator>Walt Rolle</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[Enterprise Architect]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5727</guid>
		<description><![CDATA[Learn about several features of Enterprise Architect software that can simplify requirements documentation for agile custom software development projects.]]></description>
			<content:encoded><![CDATA[<p>No matter which agile framework you’re using to manage a custom application development project, the strategy for documenting requirements is consistent: keep it simple and fluid. This approach takes advantage of agile&#8217;s ability to quickly respond and adapt to changing customer requirements. The Enterprise Architect (EA) software by <a rel="nofollow" href="http://www.sparxsystems.com/" target="_blank">Sparx Systems</a> contains some tools that may help your team reduce the overhead of capturing design details in a myriad of Word documents, Visio diagrams, and Power Point presentations.</p>
<p>To set the stage, this post will provide a summary of just a few EA features that can be used to manage information more easily than in traditional free-form documents. Of course, any tool you use will have to be adapted to meet your organization’s needs. For example, smaller projects with co-located teams will require much less documentation than efforts that are complex with large, distributed teams. The key is to document what is needed and nothing more, which is also referred to as JBGE (Just Barely Good Enough).</p>
<p>&nbsp;</p>
<h4>EA Demonstration</h4>
<p>The agile requirements begin with a set of user stories which can be drilled into for further details. This allows each viewer to navigate to the level of details that are pertinent to his or her needs. For example, developers may need all of the specific details, whereas a project manager may want to just see the dependencies between user stories.</p>
<p>&nbsp;</p>
<p><img class="alignnone  wp-image-5728" title="01 Specimen Collection" src="http://www.rdacorp.com/wp-content/uploads/01-Specimen-Collection.gif" alt="" width="336" height="93" /> </p>
<p>&nbsp;</p>
<p>This drillable diagram below consolidates multi-level process flows into a single document and also allows for the capture of textual information, which can be cumbersome to author in a word processing document. Almost any object can be opened into a more detailed format where further information is captured.</p>
<p>&nbsp;</p>
<p><img class="alignnone size-full wp-image-5729" title="02 details" src="http://www.rdacorp.com/wp-content/uploads/02-details.gif" alt="" width="576" height="109" /></p>
<p>&nbsp;</p>
<p>The icon circled below represents a wireframe that can be opened to display a picture of how the system should look. By placing this within the diagram, a team member can view these details as they navigate through the process flow, instead of referencing multiple documents or scrolling top to bottom.</p>
<p>&nbsp;</p>
<p><img class="alignnone size-full wp-image-5730" title="03 details" src="http://www.rdacorp.com/wp-content/uploads/03-details.gif" alt="" width="576" height="113" /></p>
<p>&nbsp;</p>
<p>The wireframe is interactive, too. For example, specific requirements like field validation could be included in a detail form. There is also a Keywords field which makes this asset searchable across the entire file. This can be useful to group common concepts across functional areas of the design.</p>
<p>&nbsp;</p>
<p><img class="alignnone  wp-image-5731" title="04 free text" src="http://www.rdacorp.com/wp-content/uploads/04-free-text.gif" alt="" width="384" height="186" /></p>
<p>&#8212;</p>
<p><img class="alignnone  wp-image-5732" title="05 model search" src="http://www.rdacorp.com/wp-content/uploads/05-model-search.gif" alt="" width="384" height="194" /> </p>
<p>&nbsp;</p>
<p>A glossary also provides for centralized management of business terms that will automatically be propagated to other areas of the document where they were used. This prevents having to perform a &#8220;find and replace&#8221; across multiple documents stored in numerous areas.</p>
<p>&nbsp;</p>
<p><img class="alignnone size-full wp-image-5733" title="06 Glossary Term" src="http://www.rdacorp.com/wp-content/uploads/06-Glossary-Term.gif" alt="" width="400" height="300" /></p>
<p>&nbsp;</p>
<p>The value addition of this toolset gives the agile project team a formal way to document the design without getting bogged down by numerous documents that start to feel like traditional waterfall methods. This is especially important for large, distributed teams that are solving complex problems. It allows everyone to consume the needs of the business as-needed and apply the necessary updates easily in the EA objects. The level of usage of this tool should be consistent with “Just Barely Good Enough” documentation, so that it won’t become a burdensome task that is common with waterfall or agile teams that have not figured out how to utilize a lean documentation process.</p>
<p>For additional resources related to custom application development and architectural guidance, please visit our <a href="http://www.rdacorp.com/thought-leadership/custom-application-development/">resources page</a>.</p>
<p><a rel="nofollow" href="http://office.microsoft.com/en-us/images/results.aspx?qu=document&amp;ex=2#ai:MC900442132|"><em>Image Source</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/04/agile-requirements-documentation-using-enterprise-architect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RDA Partners with Nintex to Offer Advanced SharePoint Workflow Platform Solutions</title>
		<link>http://www.rdacorp.com/2013/04/rda-partners-with-nintex-to-offer-advanced-sharepoint-workflow-platform-solutions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=rda-partners-with-nintex-to-offer-advanced-sharepoint-workflow-platform-solutions</link>
		<comments>http://www.rdacorp.com/2013/04/rda-partners-with-nintex-to-offer-advanced-sharepoint-workflow-platform-solutions/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 12:30:13 +0000</pubDate>
		<dc:creator>David Rathert</dc:creator>
				<category><![CDATA[Workflow/Collaboration]]></category>
		<category><![CDATA[Nintex]]></category>
		<category><![CDATA[platform]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[workflow]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5531</guid>
		<description><![CDATA[RDA has formed a strategic partnership with Nintex to offer advanced SharePoint solutions for  workflows, forms, and analytics.]]></description>
			<content:encoded><![CDATA[<p>RDA has formed a strategic partnership with Nintex to offer advanced SharePoint solutions for  workflows, forms, and analytics. This partnership allows RDA to continue to expand on the high impact, high value solutions it delivers to its clients by leveraging Nintex technologies.</p>
<p>RDA President and CEO Tom Cole said, “The workflow and forms products Nintex has developed will enhance the SharePoint solutions we deliver to our customers. Nintex is a great fit for RDA and our clients. I&#8217;m looking forward to the opportunities our partnership will create.&#8221;</p>
<p>“Nintex sees the value RDA can bring to the utilization of our technology solutions to create impactful and transformative change for organizations. We are excited about their inclusion to our Partner Network and our ongoing work together,” says Brett Campbell, Vice President, Alliances, Nintex.</p>
<p><a href="http://www.rdacorp.com/partners/nintex/">Learn more about Nintex. </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/04/rda-partners-with-nintex-to-offer-advanced-sharepoint-workflow-platform-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Leveraging SQL Server 2012’s AlwaysOn for ETLs Within Very Large Databases</title>
		<link>http://www.rdacorp.com/2013/03/leveraging-sql-server-2012s-alwayson-for-etls-within-very-large-databases/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=leveraging-sql-server-2012s-alwayson-for-etls-within-very-large-databases</link>
		<comments>http://www.rdacorp.com/2013/03/leveraging-sql-server-2012s-alwayson-for-etls-within-very-large-databases/#comments</comments>
		<pubDate>Tue, 26 Mar 2013 12:30:49 +0000</pubDate>
		<dc:creator>Cornell Emile</dc:creator>
				<category><![CDATA[Business Intelligence]]></category>
		<category><![CDATA[AlwaysOn]]></category>
		<category><![CDATA[ETL]]></category>
		<category><![CDATA[Extract Transform Load]]></category>
		<category><![CDATA[OLTP]]></category>
		<category><![CDATA[Online Transactional Processing]]></category>
		<category><![CDATA[SQL Server 2012]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5471</guid>
		<description><![CDATA[Learn how to extract data from a very large database using SQL Server 2012's "AlwaysOn" feature.]]></description>
			<content:encoded><![CDATA[<p>Very Large Databases (VLDBs) have presented several major challenges for both Business Intelligence (BI) and database professionals that are responsible for designing and maintaining efficient mechanisms for extracting data from Online Transactional Processing (OLTP) systems.  These challenges (in particular database contention) result in less than desirable performance within the OLTP that negatively impacts the businesses’ operations and increases the data latency within the BI solution. </p>
<p>This blog post examines the challenges faced when extracting data from a VLDB and offers an enhanced approach to extracting data from the VLDB via the use of SQL Server 2012&#8242;s &#8220;AlwaysOn&#8221; feature.</p>
<p>&nbsp;</p>
<h4>What are Very Large Databases?</h4>
<p>Very large databases are databases that are at least one terabyte in size.  Databases that have a high volume of transactions are not necessarily considered VLDBs but the volume of data being added to the database can be a major factor in the creation of a VLDB.  Other possible ways of a VLDB being created include but are not limited to:</p>
<ul>
<li>Large datasets</li>
<li>Acquisitions</li>
<li>Consolidation of previously silo&#8217;d departmental/business unit databases</li>
<li>Regulations and or business requirements that require companies to maintain historical data (e.g. Finance, HR)</li>
<li>Poor database design</li>
<li>Non-existent or inefficient data archival processes</li>
</ul>
<p>As the size of the database grows, the number of data pages within the database also increases and this leads to a number of performance challenges within the database.  First, the data reads and writes (inserts, updates, deletes) performed within the VLDB take longer to complete when compared to non-VLDBs.  Secondly, database operations such as writing and reading rows involve a greater number of data pages, and so have a higher probability of taking longer to complete, which increases the likelihood of issues with database contention.  Lastly, regular and necessary database administrative functions such as backups and index maintenance activities consume relatively more resources (CPU, storage, and memory) when compared with non-VLDBs.  Hence, mechanisms for extracting data from a VLDB (such as Extract, Transform and Load programs) are often viewed as increasing the performance problems within the database.</p>
<p>&nbsp;</p>
<h4>What are ETL programs?</h4>
<p>The picture below shows the architectural components of a simple BI solution.  An ETL (Extract, Transform, and Load) program is a process or set of processes that are utilized as the mechanism that a business uses to copy data from its OLTP system to the data store(s) (such as a data mart) that are directly accessed by the BI solution.</p>
<p>&nbsp;</p>
<p><img class="alignnone size-full wp-image-5477" title="01 BI Solution" src="http://www.rdacorp.com/wp-content/uploads/01-BI-Solution.jpg" alt="" width="450" height="285" /> </p>
<p>&nbsp;</p>
<h4>What is SQL Server’s AlwaysOn?</h4>
<p>Built on the Windows Server Failover Clustering service, SQL Server’s AlwaysOn feature offers High Availability (the percentage of time that the database is expected to be available within a specific period of time such as a month quarter or year) and Disaster Recovery (the capability of resuming operations following a planned or unplanned system failure) solutions for businesses.  The feature is available with SQL Server 2012 Enterprise and Developer editions and addresses the limitations of earlier versions of SQL Server.</p>
<p>Previous versions of SQL Server offered high availability and disaster recovery solutions primarily via database mirroring and log shipping.  These solutions had problematic limitations such as one-to-one mapping between servers, non-zero data loss and manual failovers.  Additionally, because the secondary servers within the solutions were at times not readable, this led to situations in which database servers were unused or underutilized. </p>
<p>Aside from the direct benefits of high availability, disaster recovery and increased utilization of enterprise information technology resources such as database servers, the AlwaysOn feature provides businesses with ability to execute backups, reports, ad hoc queries and ETLs against a replica of the transactional database.</p>
<p>With AlwaysOn, businesses can create four secondary replicas for each primary replica.  However, only two replicas can be configured to use the synchronous-commit mode.  The available data synchronization modes are listed below:</p>
<ul>
<li><strong><em>Synchronous-commit mode: </em></strong>transactions committed to disk on both the primary and secondary databases.</li>
<li><strong><em>Asynchronous-commit mode:</em></strong> transactions committed on the primary replica without being committed on the secondary replica.</li>
</ul>
<p>&nbsp;</p>
<h4>An Enhanced ETL</h4>
<p>The picture shows a modified BI solution design that uses a readable secondary replica as the data source for the ETL processes.  Within the design, the secondary replica has been configured for asynchronous commit mode to allow transactions to be committed on the primary replica without waiting for the transactions to be applied to the secondary replica.</p>
<p>&nbsp;</p>
<p><img class="alignnone size-full wp-image-5478" title="02 Modified BI Solution" src="http://www.rdacorp.com/wp-content/uploads/02-Modified-BI-Solution.jpg" alt="" width="450" height="278" /> </p>
<p>&nbsp;</p>
<p>To use AlwaysOn, create an Availability Group that has a readable secondary replica configured for asynchronous-commit, set the connection mode set to “Allow all connections,” create and configure the Availability Group listener, and modify the database connection(s) used by the ETLs to include the listener port, name and an <em>ApplicationIntent=ReadOnly</em> attribute.</p>
<p>The major benefits of ETLs using SQL Server 2012’s AlwaysOn include a reduced likelihood of database contention on the primary replica.  With less database contention, VLDBs are expected to have improved performance of mission critical database processes and related applications.  Additionally, ETLs that are executed against a secondary replica can be executed more frequently. Their performance is also significantly improved, and the latency of the data available within the BI solution decreases. The increased performance of ETLs within the secondary replica stems from the temporary statistics that are built on the secondary databases and the use of row versioning via snapshot isolation transaction level.</p>
<p>Businesses that have at least one VLDB can benefit from the SQL Server AlwaysOn feature in a number of ways that results in the improved performance of both the VLDB and the BI solution by leveraging secondary replicas that serve the purpose of being the source of the ETLs that are used to move transactional data to the data stores that are used by the BI solution.  This approach allows the ETLs to execute efficiently without impacting the businesses&#8217; critical transactional databases.</p>
<p>For additional information related to business intelligence and SQL Server, I invite you to explore the many resources available on our <a href="http://www.rdacorp.com/thought-leadership/business-intelligence/">BI Thought Leadership page</a>.</p>
<p>&nbsp;</p>
<p><a rel="nofollow" href="http://office.microsoft.com/en-us/images/results.aspx?qu=light%20switch&amp;ex=2#ai:MP900400501|mt:2|"><em>Image Source</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/03/leveraging-sql-server-2012s-alwayson-for-etls-within-very-large-databases/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Top 10 Application Security Design Principles, Part 2</title>
		<link>http://www.rdacorp.com/2013/03/top-10-application-security-design-principles-part-2/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=top-10-application-security-design-principles-part-2</link>
		<comments>http://www.rdacorp.com/2013/03/top-10-application-security-design-principles-part-2/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 12:30:49 +0000</pubDate>
		<dc:creator>Pablo Gazmuri</dc:creator>
				<category><![CDATA[Custom Application Development]]></category>
		<category><![CDATA[custom application development]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://www.rdacorp.com/?p=5445</guid>
		<description><![CDATA[Learn how to design systems for maximum security and write the safest code possible. Part 2 of a 2-part series.]]></description>
			<content:encoded><![CDATA[<p>This post concludes our discussion of the Top 10 Secure Coding Principles for custom application development. (Please see <a href="http://www.rdacorp.com/2013/03/top-10-application-security-design-principles-part-1/" target="_blank">this post</a> for the first 5.)  Understanding these principles and abiding by them will help ensure you are designing systems for security and writing the safest code possible.</p>
<p>&nbsp;</p>
<h4>6. Don’t Trust Services / Don’t Trust Infrastructure</h4>
<p>External or 3<sup>rd</sup> party services are services that are not under your direct control.  When designing a system to interact with these services, it’s important not to trust these services in such a way that would allow the services to affect your system in unexpected ways, should the service behavior change in some way.  To do this, design your service interactions for security, validate all service data (so that a datatype change doesn’t break your code, for example) and ensure that all code interacting with external services fails securely.  We must also ensure that we aren’t exposing any more information to these services than is absolutely necessary.  If using an external service to store user-related data, for example, we might encrypt the data and use an alternate identifier (other than the username) to retrieve this data.</p>
<p>Another side of this principle is that even your infrastructure cannot be considered secure. This is why credit card information must be securely encrypted, for example, as otherwise everyone from system administrators to datacenter janitors would have easy access to this information.  Another example is the assumption that internal network traffic must be secure.  There is no guarantee of that, so appropriate transport level encryption and authorization should be used, even within your network.</p>
<p>&nbsp;</p>
<h4>7. Separation of Duties</h4>
<p>Although separation of duties is an honored system design principle, in the context of security we are specifically referring to three specific duties:</p>
<ul>
<li>Provide authorization to perform an action</li>
<li>Perform an action</li>
<li>Monitor that an action was performed and by whom</li>
</ul>
<p>By ensuring that distinct mechanisms perform each of the three duties above whenever a system performs a secured action, we make it more difficult for an attacker to carry out and conceal prohibited activity.  Curiously, this principle applies more to the process in which we administer applications (approving, acting upon and monitoring a system change are typically done by distinct parties) and manage the software development lifecycle, than it does to our application design itself.  For example, it is more secure to have each “action” have a form of embedded authorization, rather than implement that authorization at a different level of your code.  This way, any calls to that “action” will be checked for authorization, regardless of the code path used to get there.  On the other hand, from a design perspective, it’s important that your authentication (not authorization) and logging functionality be logically separated.</p>
<p>&nbsp;</p>
<h4>8. Avoid Security by Obscurity</h4>
<p>Simply put, you should assume that hackers have a copy of your source code.  This is because with a properly designed secure system, there is no need for obscurity except for the unique case of keeping encryption keys a secret.  In fact, this argument has been used extensively to argue for the enhanced security of open source software.</p>
<p>Of course, for most custom applications, releasing source code in the open would be unwise, simply for the reason that as humans, we make mistakes, and almost every complex application has security holes of one kind or another.  Applying the principle of defense in depth, however, allows us to assume the source code is publicly available and that we should design our systems not to rely on obscurity in any way.</p>
<p>Security by obscurity abounds, however.  It is present in many, many applications, and is typically the result of hurried development, inattention, or laziness.  Not securing URLs because they aren’t publically known?  As soon as someone browses that URL from a public computer or on an open wifi network, that URL can be known.  Using insecure cookies for authorization because, hey, who would notice?  It takes very little effort to see and change cookies within a browser session.</p>
<p>Anytime you design or code an application and think “but no one would think of that!” relating to bypassing security of some sort, you should step back and consider an alternative design.  Relying on any kind of “secret” (with the exception of encryption keys) about how an application functions is a big no-no.</p>
<p>&nbsp;</p>
<h4>9. Keep Security Simple</h4>
<p>This is the equivalent of the KISS (keep it simple, stupid) principle for security.  It applies to all levels of application design, from the overall capabilities of the system to the specific code structure of security related code.  In general, a simple system is easier to understand and control, therefore reducing overall security risks and ensuring that modifications to security related code are less likely to create new security holes.</p>
<p>I have seen systems with highly coupled (spaghetti) and poorly structured security code which was very difficult to maintain.  In one case, the code path for user account updates was dependent on the current stack trace details!  Needless to say, this is not best practice (you might consider it “worst practice” in fact).  In that case, a serious vulnerability allowing anyone to take over any existing user’s account was discovered, but only by someone testing the software after the code had been running in production for over a year.  It turns out that the vulnerability was introduced by a seemingly simple change made during maintenance of the security code.  The complexity of the code structure made it very difficult to predict this vulnerability would result from the change.  For this reason, a clean and simple code architecture that can be easily traced is essential for security related code.</p>
<p>Sometimes this principle applies to the level of features and functionality offered by the system to begin with.  For example, Skype recently encountered a problem where user accounts were vulnerable to being taken over by 3<sup>rd</sup> parties.  Without getting into too much detail, the issue had to do with the fact that Skype allowed users to associate their user accounts with multiple email addresses and perform password resets in such a way that allowed 3<sup>rd</sup> parties to take over any Skype account simply by knowing the users’ associated email address.  Skype had to disable password reset entirely until a solution to the problem was put in place.  This is an example where the combined complexity of multiple emails per account and password reset options created a vulnerability that was very difficult to detect.  Looking back, it’s clear that this complexity is probably unnecessary to begin with, and that a simpler system wouldn’t have encountered this problem in the first place.</p>
<p>&nbsp;</p>
<h4>10. Fix Security Issues Correctly</h4>
<p>As mentioned when discussing keeping security simple, it is very easy to introduce security holes while maintaining security related functionality.  For this reason, it’s essential that security related code be maintained with great care, and that when we do find and fix security holes, we must fix them correctly and be sure that we don’t introduce new security holes.</p>
<p>I recommend mandatory code review sessions for modifications to security related code whenever possible.  As with open source software, more eyes on the code will result in a more thorough vetting than any individual programmer can provide.  Also, as mentioned in the Skype example, you may need to disable functionality altogether (as Skype did with the reset password function) until it can be properly secured.</p>
<p>Stay tuned for the next post in this series: “Social Engineering:Your Biggest Security Threat,” where I will discuss the methods of social engineering that make systems vulnerable, and how to guard against them.</p>
<p><a rel="nofollow" href="http://office.microsoft.com/en-us/images/results.aspx?qu=safe&amp;ex=2#ai:MP900309599|mt:2|" target="_blank"><em>Image Source</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.rdacorp.com/2013/03/top-10-application-security-design-principles-part-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
