<?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>Summit 7 Systems</title>
	<atom:link href="http://summit7systems.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://summit7systems.com</link>
	<description>Conquer Your Mountain</description>
	<lastBuildDate>Thu, 16 Feb 2012 15:31:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Good Web Design:  Not just about the graphics</title>
		<link>http://summit7systems.com/blogs/amycoleman/?p=7</link>
		<comments>http://summit7systems.com/blogs/amycoleman/?p=7#comments</comments>
		<pubDate>Fri, 28 Oct 2011 15:23:54 +0000</pubDate>
		<dc:creator>Amy Coleman</dc:creator>
				<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://summit7systems.com/?guid=4d08d53c9f815bbbc35a1dd6388ba389</guid>
		<description><![CDATA[Have you ever had a moment where you have stumbled upon a site that peeks your curiosity? A site design where you get to totally geek out, open firebug and look at all the DIVs and CSS? Or have you ever experienced a proud moment when you have looked at a mockup and thought “this [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever had a moment where you have stumbled upon a site that peeks your curiosity? A site design where you get to totally geek out, open firebug and look at all the DIVs and CSS? Or have you ever experienced a proud moment when you have looked at a mockup and thought “this might be one of my best”? The graphics is the fun part of design; it is the reasons a lot of us do what we do.</p>
<p>But the graphical elements aren’t the only thing that makes a site good. The look of a site, although very important, is a small piece of the pie. <em>Did someone say pie?</em></p>
<p>Design is a combination of several elements; having a target audience, great content, stellar information architecture and site accessibility. We can make a site <em>look</em> good, but if the other elements aren’t part of the equation then our visitors will not be happy.</p>
<h2>A Target Audience</h2>
<p>If you try to serve all your audiences then you don’t serve any of them effectively. Have you ever gone to a site and the home page is a jumbled mess? Most the time this means they have a bad case of the “trying to make everyone happy”, so they try to put information for everyone on the page. What is outcome of doing this? No one can find the information they need. There isn’t any organization, so the site leaves you frustrated and your questions unanswered.</p>
<h2>Great Content</h2>
<p>Make your content conversational. Have you ever gone to a site and feel disengaged from the site and their purpose? Or needed a doctoral degree to understand what they are trying to say? When reading their content does it sound like an old grant proposal, with a lot of “The candidate”, “The person”, “The Company” phrasing? You wouldn’t talk to a person if they came into your office that way, so why would you write content for your site that way? Instead of saying “The candidate will receive….” say “You will receive..”. Just that little change makes visitors more engaged and feel included in your purpose.</p>
<h2>Stellar Information Architecture</h2>
<p>Make it easy for visitors to find the information they desire. Have you ever been frustrated when on a site because it is impossible to find answers to your questions? Have you ever been sure that something would be found in one area of the site, to only find it somewhere totally different? Your navigation should be easy to follow. Navigation sets should be grouped together and there should be more than one way to get to content.</p>
<h2>Site Accessibility</h2>
<p>Make your site accessible to ALL that visit. Have you ever found it difficult to read something on a site because the color of the font? Or seen a flashing “new” animated gif and thought wow that is really distracting? We need to be aware and thinking about accessibility of our site to all visitors. The smallest things can make the biggest difference.</p>
<p>As you can see there are more elements to design than just the graphics. These are all elements we need to think about when creating an excellent web site for ourselves and our customers. It is our responsibility to make our customers aware of these items and help them understand the importance of each. I will spend more time in upcoming posts to go deeper into each of these areas. So look back often for what other goodies I might have to say <img src='http://summit7systems.com/blogs/amycoleman/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/2011/10/good-web-design-not-just-about-the-graphics/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blog InitIAtion: Google Analytics for Mobile IA</title>
		<link>http://summit7systems.com/blogs/andrewboulton/?p=1</link>
		<comments>http://summit7systems.com/blogs/andrewboulton/?p=1#comments</comments>
		<pubDate>Wed, 19 Oct 2011 09:10:20 +0000</pubDate>
		<dc:creator>Andrew Boulton</dc:creator>
				<category><![CDATA[Google Analytics]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://summit7systems.com/?guid=72749e0425d20284ab8682021f4ef80e</guid>
		<description><![CDATA[Over the next year, Amy, Jason and I will burst out of our design and development comfort zones (probably). For the first time, we’re going mobile, and if/when we do, all sixteen of Kentucky’s community colleges  are coming with us. When the college web sites launched three years ago – before my time – they [...]]]></description>
			<content:encoded><![CDATA[<p>Over the next year, <a href="http://summit7systems.com/blogs/amycoleman">Amy</a>, <a href="http://summit7systems.com/blogs/jasonmills">Jason </a>and I will burst out of our design and development comfort zones (probably). For the first time, we’re going mobile, and if/when we do, all sixteen of <a href="http://kctcs.edu">Kentucky’s community colleges </a> are coming with us.</p>
<p><a href="http://summit7systems.com/blogs/andrewboulton/wp-content/uploads/2011/10/mobile-ia.jpg"><img style="float: right;" title="mobile-ia" src="http://summit7systems.com/blogs/andrewboulton/wp-content/uploads/2011/10/mobile-ia.jpg" alt="The Page Cannot Be Found IA image" width="240" height="444" /></a>When the college web sites launched three years ago – before my time – they were, and remain, Information Architectural tours-de-force. Underpinned by extensive user research and expertise, this was a huge and hugely successful implementation. Students liked the results, faculty liked the results; the web sites work.</p>
<p>The solid evidence base on which these sites’ IAs were constructed surely muted many protests. To be findable, library opening hours do not need a flashing “click here” button on the homepage, it turns out. Remarkably, students will find Financial Aid information perfectly well without an animated rainbow-colored piggy bank bouncing off the sides of the screen.</p>
<p>At their core, the navigation components are built to both reflect and facilitate the ways in which users actually interface with and value information, which does not often map onto what insiders “know” about how things “should” be. Students might not know what a registrar is, but they know that an 8AM clinical phlebotomy lab sounds like a blast, if only they could locate the class schedule&#8230; In other words, users have specific tasks in mind, and admiring graphical and verbal embellishment are rarely among them.</p>
<p>As we go mobile, we need another unlearning of what we “know” and an evidence-based relearning of what works.</p>
<p>This time we don’t have tailored user market research, we don’t have outside experts, and we’re not subcontracting any aspect of our mobile project. And the <a href="http://summit7systems.com/blogs/brendaperry">world’s best project manager</a> is not on our team. We need to be creative and resourceful, which means we need to harness and harvest (to mix some timely agricultural and equine metaphors as the sun shines on <a href="http://keeneland.com">Keeneland&#8217;s </a>75th fall meeting celebration) whatever tools are available to us to make our mobile sites aesthetically beautiful and structurally solid.</p>
<p>But we also need, I would argue, a “show” to counter what we and others “know” about IA. Because a lot of people know a lot about IA. They know what our users are <em>really </em>looking for. They know that we should probably replace our student sites, the accumulated works of college Web Services professionals and departmental content owners, with a Twitter feed (true story). They know that the web is passé, traffic is down, and iPhone apps are, like, totally where it’s at (true story). <em>Dude, what about an iPhone app that provides up-to-the-minute, 140-character Tweets on #FederalFinancialAidRegulationsAsApplicableToPellGrant-EligibleStudents? </em>But could they present evidence to <em>show </em>any of these trends? No. But Google Analytics can. Or, rather, it <em>could, </em>but it would be lying, and non-evil Google doesn&#8217;t lie..</p>
<p>For mobile IA development, Google Analytics and its accumulated two-year System-wide set of visitor data, is a God-send.</p>
<p>Analytics can tell us what our users really <em>are </em>looking for. It can tell us if traffic is faltering, if everyone has an iPhone, and if our current student content is a waste of precious virtualrealestate.</p>
<p>Analytics gives a lot of really interesting answers. It gives a lot of answers, period, some of which may even be useful, actionable answers – provided we ask the right questions. They are only useful if we can then operationalize their implications for IA in a meaningful way.</p>
<p>So over the coming months, I will blog about what Google Analytics can tell us, and can’t, how we do using those data to develop parsimoniously beautiful IAs for our colleges’ mobile presences. Then (or rather, simultaneously) come design, branding, and content.</p>
<p>First up: mobile apps or mobile versions? What we know, and, more usefully, what Google Analytics shows&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/2011/10/blog-initiation-google-analytics-for-mobile-ia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Saturday the Conference–Recap</title>
		<link>http://summit7systems.com/blogs/cathydew/?p=54</link>
		<comments>http://summit7systems.com/blogs/cathydew/?p=54#comments</comments>
		<pubDate>Thu, 25 Aug 2011 20:26:50 +0000</pubDate>
		<dc:creator>Cathy Dew</dc:creator>
		
		<guid isPermaLink="false">http://summit7systems.com/blogs/cathydew/?p=54</guid>
		<description><![CDATA[Let me start this blog post out with a gigantic thank you to all the organizers and sponsors for this amazing event! Without all of their hard work and dedication to the SharePoint community this event never would have happened. Next up, a giant thank you to everyone who attended this event.&#160; I am always [...]]]></description>
			<content:encoded><![CDATA[<p>Let me start this blog post out with a gigantic thank you to all the organizers and sponsors for this amazing event! Without all of their hard work and dedication to the SharePoint community this event never would have happened.</p>
<p>Next up, a giant thank you to everyone who attended this event.&#160; I am always surprised at just how many people come out to learn about SharePoint. And I am humbled every time someone comes to hear me speak. </p>
<p>At SharePoint Saturday the Conference – DC I was able to present a full day workshop: SharePoint Branding 101.&#160; This workshop was exciting for me to try and fit in as much branding goodness into 6 hours as I could.&#160; It was certainly a challenge.</p>
<p>During the day we discussed a full range of topics from Requirements Gathering for Branding all the way through to Implementation and Deployment of Features.</p>
<p>Now that we have all had a moment to take a breath and recover a bit from this very full day of branding learning. I wanted to post out a few things for you.&#160; First up are the slides from the presentation.&#160; Hopefully they will help some of you out as you approach projects in the future. (Thanks for the feedback from a few of you I helped already, it certainly makes me happy to share)</p>
<p><a href="http://www.sharepointcat.com/wp-content/uploads/2011/08/SPSTC_Branding101.zip" >SharePoint Branding 101 Presentation</a></p>
<p>I really enjoyed spending the day with those of you who were able to join my session in DC. I look forward to meeting many more of the SharePoint Branding intrepid over the next few months!</p>
<p>I am sorry for the delay in posting this.&#160; I also wanted to add a quick listing of helpful tools and items I mentioned in the session.</p>
<p><font color="#800040">Wireframing:</font></p>
<p><a href="http://balsamiq.com/products/mockups" >Balsamiq Mockups</a> – This is a for purchase application, not free</p>
<p><a href="http://www.johnchapman.name/visio-stencils-for-sharepoint-2010/" >Visio Graphic Stencils</a> – These are a free download</p>
<p><a href="http://www.sharepoint2010.visioshapes.net/VSP10-Pages/VSP10-ShapesLibraries.asp" >Visio User Interface Stencils</a> – These are for purchase, not free.</p>
<p><font color="#800040">SharePoint Design:</font> (both of these are great and a huge undertaking for both of the creators!)</p>
<p><a href="http://startermasterpages.codeplex.com/" >Starter Master Pages Courtesy of Randy Drisgill</a> – A Gigantic Thanks to Randy</p>
<p><a href="http://sharepointexperience.com/news/sharepoint-2010-css-chart-launch/" >SharePoint 2010 CSS Chart Courtesy of Heather Solomon</a> – A Gigantic Thanks to Heather</p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/blogs/cathydew/?feed=rss2&#038;p=54</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Identifying Custom SharePoint Designer Workflows</title>
		<link>http://summit7systems.com/blogs/jasoncribbet/?p=233</link>
		<comments>http://summit7systems.com/blogs/jasoncribbet/?p=233#comments</comments>
		<pubDate>Fri, 19 Aug 2011 12:52:35 +0000</pubDate>
		<dc:creator>Jason Cribbet</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[MOSS 2007]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint Designer]]></category>
		<category><![CDATA[Workflows]]></category>

		<guid isPermaLink="false">http://cribbet.com/2011/08/19/identifying-custom-sharepoint-designer-workflows/</guid>
		<description><![CDATA[I had a case recently where I needed to find all workflows within a SharePoint 2007 farm where there were custom workflows created using SharePoint Designer 2007. In this scenario, there were no custom workflows created through Visual Studio so I could be confident that if a workflow was identified as custom, it was created [...]]]></description>
			<content:encoded><![CDATA[<p>I had a case recently where I needed to find all workflows within a SharePoint 2007 farm where there were custom workflows created using SharePoint Designer 2007. In this scenario, there were no custom workflows created through Visual Studio so I could be confident that if a workflow was identified as custom, it was created using SharePoint Designer. One simple way to identify this is through the use of properties of the <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.aspx">SPWorkflowAssociation</a> object for the workflow that is associated to a <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.aspx" >SPList</a> or <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttype.aspx" >SPContentType</a>.</p>
<p>When creating an instance of a workflow through the SharePoint web interface, you must select one of the base template types, such as the “Approval” or “Collect Feedback” workflow, for the baseline of your workflow instance. When you create a custom workflow through SharePoint Designer, you are not selecting a baseline template for the workflow therefor, in code, the <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.aspx" >SPWorkflowAssociation</a>.<a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.basetemplate.aspx" >BaseTemplate</a> value for the custom workflow will be null. By verifying the value of this property, it is a good indication that the workflow is custom and, in my case, was created with SPD.</p>
<p>You can further verify the existence of a custom workflow by checking the existence of an “Xoml” reference within the <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.aspx" >SPWorkflowAssociation</a>.<a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.internalname.aspx" >InternalName</a> property. In a typical out of the box workflow, the <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.internalname.aspx" >InternalName</a> property for the workflow association would be something similar to “Approval” or “Collect Feedback”. When custom workflows are created through SPD, there is a set of XML markup files that are created which manage the rules and configuration of the workflow and also tie the workflow to a specific <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.aspx" >SPList</a>. The <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.internalname.aspx" >InternalName</a> property contains references to this Xoml so by simply searching this property for the existence of “Xoml”, your can be assured that you are working with a custom workflow.</p>
<p>Lastly, another property on the workflow association that warrants mention is the <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.aspx" >SPWorkflowAssociation</a>.<a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.enabled.aspx" >Enabled</a> property. As modifications are made to custom workflows within SharePoint Designer, there is a version history that is maintained for that workflow. As workflow modifications are made and published, previous versions of a workflow are disabled to ensure that only the latest version is executed. As you iterate through the <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.workflow.spworkflowassociation.aspx" >SPWorkflowAssociations</a> related to an <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.aspx" >SPList</a> or <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spcontenttype.aspx" >SPContentType</a>, you can appropriately find the most current workflow with the Enabled property.</p>
<p>The following simple code snippet will iterate a <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.splist.aspx" >SPList</a> and identify the custom workflows:</p>
<div class="csharpcode">
<div class="csharpcode">
<pre class="alt"><span class="lnum"> 1: </span><span class="kwrd">using</span> System;</pre>
<pre><span class="lnum"> 2: </span><span class="kwrd">using</span> System.Collections.Generic;</pre>
<pre class="alt"><span class="lnum"> 3: </span><span class="kwrd">using</span> System.Text;</pre>
<pre><span class="lnum"> 4: </span><span class="kwrd">using</span> Microsoft.SharePoint;</pre>
<pre class="alt"><span class="lnum"> 5: </span><span class="kwrd">using</span> Microsoft.SharePoint.Workflow;</pre>
<pre><span class="lnum"> 6: </span></pre>
<pre class="alt"><span class="lnum"> 7: </span><span class="kwrd">namespace</span> SampleWorkflowDiscoveryApp</pre>
<pre><span class="lnum"> 8: </span>{</pre>
<pre class="alt"><span class="lnum"> 9: </span>  <span class="kwrd">class</span> Program</pre>
<pre><span class="lnum"> 10: </span>  {</pre>
<pre class="alt"><span class="lnum"> 11: </span>    <span class="kwrd">static</span> <span class="kwrd">void</span> Main(<span class="kwrd">string</span>[] args)</pre>
<pre><span class="lnum"> 12: </span>    {</pre>
<pre class="alt"><span class="lnum"> 13: </span>      <span class="kwrd">using</span> (SPSite site</pre>
<pre><span class="lnum"> 14: </span>                 = <span class="kwrd">new</span> SPSite(<span class="str">"http://contoso.com"</span>))</pre>
<pre class="alt"><span class="lnum"> 15: </span>      {</pre>
<pre><span class="lnum"> 16: </span>        <span class="kwrd">using</span> (SPWeb web = site.OpenWeb())</pre>
<pre class="alt"><span class="lnum"> 17: </span>        {</pre>
<pre><span class="lnum"> 18: </span>          SPList list = web.Lists[<span class="str">"TestList"</span>];</pre>
<pre class="alt"><span class="lnum"> 19: </span>          <span class="kwrd">foreach</span> (SPWorkflowAssociation wfAssoc <span class="kwrd">in</span> list.WorkflowAssociations)</pre>
<pre><span class="lnum"> 20: </span>          {</pre>
<pre class="alt"><span class="lnum"> 21: </span>            <span class="rem">// Not interested in previous </span></pre>
<pre><span class="lnum"> 22: </span>            <span class="rem">// versions of workflows</span></pre>
<pre class="alt"><span class="lnum"> 23: </span>            <span class="kwrd">if</span> (wfAssoc.Enabled)</pre>
<pre><span class="lnum"> 24: </span>            {</pre>
<pre class="alt"><span class="lnum"> 25: </span>              <span class="kwrd">if</span> (wfAssoc.BaseTemplate == <span class="kwrd">null</span> &amp;&amp;</pre>
<pre><span class="lnum"> 26: </span>                   wfAssoc.InternalName.Contains(<span class="str">"Xoml"</span>))</pre>
<pre class="alt"><span class="lnum"> 27: </span>              {</pre>
<pre><span class="lnum"> 28: </span>                <span class="rem">// Identified a custom workflow</span></pre>
<pre class="alt"><span class="lnum"> 29: </span>                <span class="rem">// Add more logic here...</span></pre>
<pre><span class="lnum"> 30: </span>              }</pre>
<pre class="alt"><span class="lnum"> 31: </span>              <span class="kwrd">else</span></pre>
<pre><span class="lnum"> 32: </span>              {</pre>
<pre class="alt"><span class="lnum"> 33: </span>                <span class="rem">// Out of the box workflow</span></pre>
<pre><span class="lnum"> 34: </span>              }</pre>
<pre class="alt"><span class="lnum"> 35: </span>            }</pre>
<pre><span class="lnum"> 36: </span>          }</pre>
<pre class="alt"><span class="lnum"> 37: </span>        }</pre>
<pre><span class="lnum"> 38: </span>      }</pre>
<pre class="alt"><span class="lnum"> 39: </span>    }</pre>
<pre><span class="lnum"> 40: </span>  }</pre>
<pre class="alt"><span class="lnum"> 41: </span>}</pre>
</div>
</div>
<p>Hopefully this will save you some of the time that I spent locating the best approach for identifying custom workflows.</p>
<p>Enjoy,</p>
<p>Jason</p>
<p>This article is cross posted at my <a href="http://summit7systems.com/blogs/jasoncribbet/2011/08/19/identifying-custom-sharepoint-designer-workflows/" >Summit 7 Systems blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/blogs/jasoncribbet/?feed=atom&#038;p=233</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Plastic tubes and pots and pans, bits and pieces&#8230;</title>
		<link>http://summit7systems.com/blogs/lorigowin/?p=44&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=plastic-tubes-and-pots-and-pans-bits-and-pieces</link>
		<comments>http://summit7systems.com/blogs/lorigowin/?p=44&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=plastic-tubes-and-pots-and-pans-bits-and-pieces#comments</comments>
		<pubDate>Wed, 17 Aug 2011 20:02:40 +0000</pubDate>
		<dc:creator>Lori Gowin</dc:creator>
		
		<guid isPermaLink="false">http://summit7systems.com/blogs/lorigowin/?p=44</guid>
		<description><![CDATA[Yes, if you grew up in the 80s, you are now singing “Weird Science”. You’re welcome! So why do I want you to be singing that song? Well.. because I am, of course! Actually I think it is the perfect title for this post, and it is such a catchy tune, you just have to [...]]]></description>
			<content:encoded><![CDATA[<p>Yes, if you grew up in the 80s, you are now singing “Weird Science”. You’re welcome! So why do I want you to be singing that song? Well.. because I am, of course! Actually I think it is the perfect title for this post, and it is such a catchy tune, you just have to sing while reading. I really like the line “Fantasy and microchips, shooting from the hip.” Doesn’t that just really describe what SharePoint is and does? </p>
<p>So why all of the Weird Science? Well, much like Gary and Wyatt, I pieced together a bunch of stuff and made a creation of my own. No, I didn’t create Lisa, but I did create a nifty little something that some of you other admins, devs, and branders might find useful. </p>
<p>Large lists and libraries are becoming more and more common and the issues that come with it are going to be something that all of us will have to overcome. I recently had to troubleshoot a problem with large list throttling on a document library, and needed to see if I could recreate the issue. This sounds simple, get a document library with thousands of documents and create some views and make sure that you have an indexed column to see the difference in your views with filters. Well, I didn’t have the time or desire to create thousands of documents or to upload them, do you?</p>
<p>So I thought hey, there’s bound to be a way to do this with something like a PowerShell script. I began to search and found a few scripts online for uploading documents, but again, I didn’t want to deal with creating the documents to upload. I pinged my good friend and mentor Todd Klindt to see if he maybe had a script already that would do this. He had one that would <a href="http://www.toddklindt.com/blog/Lists/Posts/Post.aspx?ID=283" >create list items</a> and shared that with me, which was very helpful in getting this started. I did use it to test the issue with lists, but still needed to work with documents in a library. </p>
<p>So now what? I needed to create something that would create the documents and would also add metadata in columns. I did some research and found that creating list items was a little different than creating files in a document library. I found out using <a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfilecollection.add.aspx" >SPFileCollection.Add</a> was what must be used to create items. I found <a href="http://translate.google.com/translate?hl=en&amp;sl=auto&amp;tl=en&amp;u=http://www.konfabulieren.com/2008/01/05/to-add-an-item-to-a-document-library-use-spfilecollectionadd/" >this blog post</a> that showed how to create a new wiki page in a wiki library and modified it some to create a document in a document library. </p>
<p>I took part of the script Todd had given me and part of the script that the other guy had written and used it to test creating multiple documents. As it would turn out, this was the easy part. Below is a script you can use to create a bunch of documents in a library.</p>
<p>&#160;</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span># connect to sharepoint and open the library</pre>
<pre><span class="lnum">   2:  </span>$library = (get-spweb http:<span class="rem">//portal.s7gear.com/IT/Help).lists[&quot;LargeLibrary&quot;]</span></pre>
<pre class="alt"><span class="lnum">   3:  </span>&#160;</pre>
<pre><span class="lnum">   4:  </span>“Got List…” </pre>
<pre class="alt"><span class="lnum">   5:  </span><span class="kwrd">for</span> ($i=1; $i -le 1000; $i++) </pre>
<pre><span class="lnum">   6:  </span># <span class="kwrd">try</span> to add a <span class="kwrd">new</span> item # Try to add a <span class="kwrd">new</span> item </pre>
<pre class="alt"><span class="lnum">   7:  </span>{</pre>
<pre><span class="lnum">   8:  </span>[<span class="kwrd">byte</span>[]]$mydata = “Lori Rocks, with help!”.ToCharArray(); # dummydata </pre>
<pre class="alt"><span class="lnum">   9:  </span>$item = $library.RootFolder.Files.Add(<span class="str">&quot;ItemTitle&quot;</span> + $i + <span class="str">&quot;.doc&quot;</span>, $mydata)</pre>
<pre><span class="lnum">  10:  </span>}</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>&#160;</p>
<p>This was very cool. Of course, now I had a bunch of documents, but no metadata to work with for list filtering. The $mydata string can be changed to whatever you want the document to contain. Of course, this means it really can only be used for testing, since you can’t create a huge formatted document, but at least you can create a bunch of them!</p>
<p>Now comes the fun part. Adding in metadata. It turns out that using the SPFileCollection.Add method allows you to add the data to the document and title the document, but adding metadata is much more difficult. It apparently includes the ability to create a hash table that can be used for this, but I was unsuccessful in my non-dev attempts to get this to work. So I thought about it and decided that it might be possible to add the metadata after the creation of the document. I didn’t have check out forced on my library, so it should be a fairly simple thing to do, right? Yeah… a dev probably could have done this in their sleep, but not me, oh no, it was a challenge, but one I was willing to accept!</p>
<p>So after repeatedly banging my head on my desk, and bouncing ideas off of Todd (lifesaver!!!!) I was finally able to come up with a solution that would add the metadata to existing documents. </p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span># connect to sharepoint and open the library</pre>
<pre><span class="lnum">   2:  </span>$library = (get-spweb http:<span class="rem">//portal.s7gear.com/IT/Help).lists[&quot;LargeLibrary&quot;]</span></pre>
<pre class="alt"><span class="lnum">   3:  </span><span class="str">&quot;Got List&quot;</span></pre>
<pre><span class="lnum">   4:  </span>#SetMetadataforItems</pre>
<pre class="alt"><span class="lnum">   5:  </span>&#160;</pre>
<pre><span class="lnum">   6:  </span>$library.Items|Where-Object {$_.Name -like <span class="str">&quot;ItemTitle1*&quot;</span>}|ForEach-Object{</pre>
<pre class="alt"><span class="lnum">   7:  </span>$_[<span class="str">&quot;Number&quot;</span>]=<span class="str">&quot;1&quot;</span>; $_[<span class="str">&quot;Indexer&quot;</span>]=<span class="str">&quot;1&quot;</span>; $_.Update()}</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>&#160;</p>
<p>This is great, right? It would find only those items that matched the title pattern and add the metadata to the appropriate columns. Which is a great little tool. Now, to put it all together:</p>
<div class="csharpcode">
<pre class="alt"><span class="lnum">   1:  </span># connect to sharepoint and open the library</pre>
<pre><span class="lnum">   2:  </span>$library = (get-spweb http:<span class="rem">//portal.s7gear.com/IT/Help).lists[&quot;LargeLibrary&quot;]</span></pre>
<pre class="alt"><span class="lnum">   3:  </span>&#160;</pre>
<pre><span class="lnum">   4:  </span>“Got List…” </pre>
<pre class="alt"><span class="lnum">   5:  </span>&#160;</pre>
<pre><span class="lnum">   6:  </span><span class="kwrd">for</span> ($i=1; $i -le 1000; $i++) </pre>
<pre class="alt"><span class="lnum">   7:  </span># create <span class="kwrd">new</span> document  </pre>
<pre><span class="lnum">   8:  </span>{</pre>
<pre class="alt"><span class="lnum">   9:  </span>[<span class="kwrd">byte</span>[]]$mydata = “Lori Rocks, with help!”.ToCharArray(); # dummydata </pre>
<pre><span class="lnum">  10:  </span>$item = $library.RootFolder.Files.Add(<span class="str">&quot;ItemTitle010-&quot;</span> + $i + <span class="str">&quot;.doc&quot;</span>, $mydata)</pre>
<pre class="alt"><span class="lnum">  11:  </span>}</pre>
<pre><span class="lnum">  12:  </span>&#160;</pre>
<pre class="alt"><span class="lnum">  13:  </span>#Add Metadata</pre>
<pre><span class="lnum">  14:  </span>$library.Items|Where-Object {$_.Name -like <span class="str">&quot;ItemTitle010-*&quot;</span>}|ForEach-Object{</pre>
<pre class="alt"><span class="lnum">  15:  </span>$_[<span class="str">&quot;Number&quot;</span>]=<span class="str">&quot;010&quot;</span>; $_[<span class="str">&quot;Indexer&quot;</span>]=<span class="str">&quot;010&quot;</span>; $_.Update()}</pre>
</div>
<style type="text/css">
<p>.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }</style>
<p>With this tool, you can create documents with different titles and metadata. You need only to change the titles and metadata for each series of documents that you want to create and run the script again. In my case, I ran the script 10 times and created 10000 items in a matter of a few minutes, versus the hours it would take to create the documents and upload them. I do recommend using a number with a dash if that is how you choose to name your documents so that you can keep each series separate. Don’t forget if your column is a lookup type of column, you’ll have to make the value of it like: “ID&#8217;;#Value”. Where the ID is the id of the value of the item. </p>
<p>I hope this helps those of you out there who may need to build in a large list or library for troubleshooting, branding, or performance testing and evaluation. </p>
<p>Oh, and big thanks to <a href="http://www.mukalian.com/blog/" >Mike Mukalian</a> (@mmukalian) for keeping me sane during the troubleshooting part, I didn’t go into the details in this post, but he was a great help!</p>
<p>&#160;</p>
<p>Happy SharePointing!</p>
<p>This post is cross-posted from <a href="http://www.pointgowin.com/SeeThePoint/Lists/Posts/Post.aspx?ID=43" >here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/blogs/lorigowin/?feed=atom&#038;p=44</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Now you see it, now you don&#8217;t</title>
		<link>http://summit7systems.com/blogs/lorigowin/?p=43&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=now-you-see-it-now-you-dont</link>
		<comments>http://summit7systems.com/blogs/lorigowin/?p=43&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=now-you-see-it-now-you-dont#comments</comments>
		<pubDate>Mon, 15 Aug 2011 22:22:22 +0000</pubDate>
		<dc:creator>Lori Gowin</dc:creator>
		
		<guid isPermaLink="false">http://summit7systems.com/blogs/lorigowin/?p=43</guid>
		<description><![CDATA[Nope, I’m not the Magic Man, or the magic woman for that matter, but I think the June 2011 CU for SharePoint 2010 just might be some kind of magic! I had the opportunity to work as go-live support for a client that had already installed SP1 and the June 2011 CU in their environment [...]]]></description>
			<content:encoded><![CDATA[<p>Nope, I’m not the Magic Man, or the magic woman for that matter, but I think the June 2011 CU for SharePoint 2010 just might be some kind of magic! I had the opportunity to work as go-live support for a client that had already installed SP1 and the June 2011 CU in their environment when it went live. I was brought it to help track down escalated issues that couldn’t be handled by support personnel. </p>
<p>As I walked in, one of the first issues they bring to me is that when a user goes to a Status List (formerly a KPI list in 2007) and views the details of the list item, it doesn’t show the list in the view below the details. OK, so maybe this is the way it is supposed to be, I think to myself. I’ll be honest, I know the basics of KPI/Status lists, but I don’t work with them all that much, so I wasn’t sure. So I sat down at my computer and fired up my VM, which is at SP1, but not the June 2011 CU and tested it out.</p>
<p>Here’s how I tested. First, I created a simple tasks list in a team site, then I created a few test tasks and set them at various percentages of completion, 10, 50, 100, pick your poison if you are doing this, just do a few and set them all at different percentages. Then I created a new status list. This seems like something easy, but then you look at it and wonder ok what now? So click New, and create a new SharePoint List Based Status Indicator. I titled the indicator as “Good Status” (creative, I know!) and then set it up to be an average of all of the percentages of completion and if the average was 50% then it was yellow, and 100% then it was green, all other things would be red. My average was 63.33333…% so it was a yellow indicator that appeared. </p>
<p>Then I clicked on the status indicator, which would open the details. Lo and behold, there is the list view showing below my status details. It looks like this: </p>
<p><a href="http://summit7systems.com/blogs/lorigowin/wp-content/uploads/2011/08/CropperCapture44.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="CropperCapture[44]" border="0" alt="CropperCapture[44]" src="http://summit7systems.com/blogs/lorigowin/wp-content/uploads/2011/08/CropperCapture44_thumb.jpg" width="596" height="256" /></a></p>
<p>Ok, so now I’m thinking not seeing the list definitely isn’t the default behavior of 2010. I test it again on one of the client’s dev machines, which is also at SP1, but no June 2011 CU applied. Identical behavior. </p>
<p>Ok, so now I’m thinking, this was an upgrade, so maybe it is just something with the upgrade causing it, so we log into the production server, create a NEW site collection, new site, new lists, and what do you know, it doesn’t show the list. Hmm… ok so it is definitely not just an upgrade issue. We begin to troubleshoot those pesky little issues that sometimes cause these weird behaviors. We check the hosts files entries on the servers, they are all set to come back to the local host for those host entries. OK so the next thought is to check out that “wonderful” loopback check, we check all servers, and the host headers are set up in the registries appropriately so that loopback won’t be an issue. I checked all of the logs, there is nothing except the entry where it was clicked, no errors, no nothing. </p>
<p>Now I’m grasping at straws. I start searching to see if anyone else has had this problem and I come up empty handed. Now what? I decided to install the June 2011 CU on my VM and then check, then activate any features that might be activated on their production servers in my VM and check after each one to see where/when it might break. If I didn’t find the culprit, then we’d start finding some more heavy hitters to help with this issue. </p>
<p>So after staring at blue lines across my screen for nearly 2 hours (it takes a REALLY long time to install the June 2011 CU, especially in a VM on a laptop) I finally am able to go in and test the first difference in our environments. Well what do you know, the list I created before now shows no list in the details now. Thankfully I didn’t have to go any further. This is what appeared: </p>
<p><a href="http://summit7systems.com/blogs/lorigowin/wp-content/uploads/2011/08/CropperCapture43.jpg"><img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="CropperCapture[43]" border="0" alt="CropperCapture[43]" src="http://summit7systems.com/blogs/lorigowin/wp-content/uploads/2011/08/CropperCapture43_thumb.jpg" width="582" height="250" /></a></p>
<p>So for those of you who have installed or plan to install the June 2011 CU, this behavior may occur in your environment. I am reporting this to Microsoft and will let you know in comments or updates if there is any response and if there is a fix that is reported.&#160; </p>
<p>Happy SharePointing!</p>
<p>&#160;</p>
<p>This post is cross-posted <a href="http://www.pointgowin.com/SeeThePoint/Lists/Posts/Post.aspx?ID=42" >here.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/blogs/lorigowin/?feed=atom&#038;p=43</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Every Problem has a Solution, Even SharePoint Branding</title>
		<link>http://summit7systems.com/blogs/cathydew/?p=53</link>
		<comments>http://summit7systems.com/blogs/cathydew/?p=53#comments</comments>
		<pubDate>Fri, 05 Aug 2011 14:57:48 +0000</pubDate>
		<dc:creator>Cathy Dew</dc:creator>
		
		<guid isPermaLink="false">http://summit7systems.com/blogs/cathydew/?p=53</guid>
		<description><![CDATA[When working with SharePoint branding you often run across the problem of how to properly deploy your work. The best practice for deploying branding is to put it into a feature by creating a wsp. But what is a wsp or Solution file and how do we create this.&#160; Most of us who are Designers [...]]]></description>
			<content:encoded><![CDATA[<p>When working with SharePoint branding you often run across the problem of how to properly deploy your work. The best practice for deploying branding is to put it into a feature by creating a wsp. </p>
<p>But what is a wsp or Solution file and how do we create this.&#160; Most of us who are Designers first and SharePoint people second, might never have heard of a wsp before SharePoint.&#160; Let me explain the advantages to using a Solution file.</p>
<p>Creating a wsp for your SharePoint Branding will allow you:</p>
<ul>
<li>Easier ability to troubleshoot site errors. You can turn the feature off and eliminate your branding as the root cause of problems </li>
<li>Make it Managed Code, which makes our developers happy and allows us to have a versioned copy of our files. </li>
<li>Easier to Update. Having all your files in one package will give you the ability to more easily make changes and updates. </li>
<li>Provides a greater sense of control. You can enforce policy around your site branding and even change the behavior around things like new site creation. </li>
<li>The other big component is where your files are located. Solutions will allow you to place the files for your branding on your server instead of in the content database.&#160; This will help with performance and page load times. </li>
</ul>
<p>These are just a few of the reasons that we deploy SharePoint branding as a feature.&#160; But what exactly is a feature and how do we create this mysterious thing.&#160; If you are a developer or have a staff of developers you can enlist their help in creating this.</p>
<p>The long and short of it is, that a solution for SharePoint branding is made using Visual Studio.&#160; In order to make this transition you should set up a solution in Visual Studio much like you would if you were writing a web part.&#160; </p>
<p>I have attached a sample wsp and Visual Studio 2010 project file to this post. You can use this as a basic sample for how you might start to set up your very own branding solution. This sample solution is being provided to you in conjunction with <a href="http://www.schaeflein.net/blog/default.aspx">Paul Schaeflein, SharePoint MVP</a>. I am not a developer, so I had to enlist some help to properly form this solution file.</p>
<p><a href="http://www.sharepointcat.com/wp-content/uploads/2011/08/Picasso.zip">Sample Solution</a></p>
<p>There are some big tips in working with solutions and moving your files into a proper SharePoint 2010 Branding solution. If you are anything like me, you will have worked your initial branding development using SharePoint Designer.&#160; When it comes time to move your files into Visual Studio you will find yourself asking what is the best method. </p>
<p>I have found that simple exporting your files out and importing them into Visual Studio leaves you open to what I affectionately refer to as SharePoint Designer Gobbledygook. (Yes that is my very own fun technical term) SharePoint Designer is a great tool for working with SharePoint branding, but it has a tendency to create issues when it comes to moving your files outside of it.&#160; </p>
<p>My favorite method for moving files from SharePoint Designer into Visual Studio is to simply copy the code out of your files in SPD and move it into a simple text editor like Notepad. Then when I have Visual Studio open I will create blank files and copy my code out of Notepad into these blank files. </p>
<p>Once you have done this you will still want to check for that gobbledygook. This can come in many formats. The most common are hard returns in the files or the insertion of some SharePoint Designer specific file characters in the head tag and !DOCTYPE declarations. This extra information can and will cause problems for you. So you will want to remove this as you find it. </p>
<p>Working with Visual Studio and SharePoint branding can be a bit of a challenge for those without an understanding of basic SharePoint development, but it is not impossible. Once again, I am providing you with a very basic SharePoint branding solution that you can start to see how it works.</p>
<p><a href="http://www.sharepointcat.com/wp-content/uploads/2011/08/Picasso.zip">Sample Solution</a></p>
<p>And again, thanks to Paul Schaeflein for helping me out and writing a solution and agreeing to allow me to share it with all of you. </p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/blogs/cathydew/?feed=rss2&#038;p=53</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>View Site Columns with PowerShell</title>
		<link>http://summit7systems.com/blogs/jasoncribbet/?p=200</link>
		<comments>http://summit7systems.com/blogs/jasoncribbet/?p=200#comments</comments>
		<pubDate>Fri, 22 Jul 2011 15:17:28 +0000</pubDate>
		<dc:creator>Jason Cribbet</dc:creator>
				<category><![CDATA[Administration]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[IT Pro]]></category>
		<category><![CDATA[PowerShell]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[Site Columns]]></category>

		<guid isPermaLink="false">http://cribbet.com/?p=200</guid>
		<description><![CDATA[Problem Recently, I needed to produce a deployable SharePoint 2010 solution package for a custom Site Column for a client. This wouldn’t have been an issue except for the fact that it needed to exactly replicate the deployed Site Column down to the GUIDs and field definitions. What I needed was some way for the [...]]]></description>
			<content:encoded><![CDATA[<h2>Problem</h2>
<p>Recently, I needed to produce a deployable SharePoint 2010 solution package for a custom Site Column for a client. This wouldn’t have been an issue except for the fact that it needed to exactly replicate the deployed Site Column down to the GUIDs and field definitions. What I needed was some way for the onsite SP administrators to export the currently deployed Site Columns so that I could replicate them within my environment.</p>
<h2>Solution</h2>
<p>As a result, I produced a short PowerShell script that, when executed on a server within the farm, will produce a listing of XML files for each of the Site Columns within the designated site. Each of these separate XML files will contain the data that is extracted from the <a title="SPField MSDN Artcile" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.aspx" >SPField</a>.<a title="SPField.SchemaXml MSDN Article" href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.spfield.schemaxml.aspx" >SchemaXml </a>attribute relating to the Site Column. The script is as follows:</p>
<p>[powershell]<br />
# Output-SPSiteColumns.ps1<br />
# Will output a listing of the Schema XML values for each Site Column within a designated site.<br />
#<br />
# Input Parameters<br />
# URL &#8211; The Url of the site to pull Site Columns from<br />
# Site Column &#8211; The specific name of the Site Column to output, All to output all Site Columns, or List to see all available Site Columns<br />
# Folder Name (Optional) &#8211; A specific folder to output the geenerated XML files to.<br />
#<br />
# SharePoint DLL<br />
[void][System.Reflection.Assembly]::LoadWithPartialName(&#8220;Microsoft.SharePoint&#8221;)</p>
<p>Set-Variable folder -value &#8216;SiteColumns&#8217;</p>
<p>function CreateFolder([string] $folderName)<br />
{<br />
if((Test-Path $folderName -pathType container) -eq $False)<br />
{<br />
Write-Host &#8216;Generating &#8216; $folderName &#8216; folder&#8217;<br />
New-Item $folderName -type directory<br />
Write-Host &#8220;&#8221;<br />
}<br />
else<br />
{<br />
Write-Host &#8216;Folder &#8216; $folderName &#8216; already exists, not recreating.&#8217;<br />
}<br />
}</p>
<p># Output the SchemaXml of all Site Columns to individual XML files</p>
<p># Parse out the folder name if it exists.<br />
if($Args[2] -ne $null)<br />
{<br />
$folder = $Args[2]<br />
}</p>
<p>if($Args[0] -ne $null)<br />
{<br />
Write-Host &#8220;&#8221;<br />
$url = $Args[0]</p>
<p>$site = new-object Microsoft.SharePoint.SPSite($url)<br />
$webFields = $site.rootweb.Fields</p>
<p>$siteColumn = $Args[1]<br />
if($siteColumn -ne $null)<br />
{<br />
if($siteColumn -eq &#8220;List&#8221;)<br />
{<br />
ForEach ($id in $webFields)<br />
{<br />
Write-Host $id.Title<br />
}<br />
}<br />
elseif($siteColumn -eq &#8220;All&#8221;)<br />
{<br />
CreateFolder $folder<br />
Write-Host &#8220;Producing XML for All Site Columns&#8221;<br />
ForEach ($field in $webFields)<br />
{<br />
$title = $field.Title<br />
$title = $title -replace &#8220;/&#8221;, &#8220;-&#8221;<br />
$out = $folder + &#8221; + $title + &#8216;.xml&#8217;</p>
<p>$field.SchemaXml | Out-File $out<br />
}<br />
}<br />
else<br />
{<br />
$field = $site.rootweb.Fields[$siteColumn]<br />
if($field -ne $null)<br />
{<br />
CreateFolder $folder<br />
$title = $field.Title<br />
Write-Host &#8216;Producing XML for the &#8216; $title &#8216;Site Column.&#8217;<br />
$title = $title -replace &#8220;/&#8221;, &#8220;-&#8221;<br />
$out = $folder + &#8221; + $title + &#8216;.xml&#8217;<br />
$field.SchemaXml | Out-File $out<br />
}<br />
else<br />
{<br />
Write-Host &#8216;ERROR: Field &#8216; $siteColumn &#8216; does not exist.&#8217;<br />
}<br />
}<br />
$site.Dispose()<br />
Write-Host &#8220;&#8221;<br />
Write-Host &#8220;Completed Successfully&#8221;<br />
Write-Host &#8220;&#8221;<br />
}<br />
else<br />
{<br />
Write-Host &#8220;&#8221;<br />
Write-Host &#8220;ERROR: Please specify a valid Site Column, All, or List to see a listing of available Site Columns.&#8221;<br />
Write-Host &#8220;&#8221;<br />
}<br />
}<br />
else<br />
{<br />
Write-Host &#8220;&#8221;<br />
Write-Host &#8220;ERROR: Missing URL argument&#8221;<br />
Write-Host &#8220;&#8221;<br />
}<br />
[/powershell]</p>
<p>To execute the PowerShell script, there are two required and one optional command line parameters. The execution parameters of the script are as follows:</p>
<ul>
<li><strong>URL</strong> – The Url for the site that you would like to view the Site Columns for.</li>
<li><strong>Site Column</strong> – The specific name of  the Site Column to export, <strong>List </strong>for a listing of all available Site Columns, or <strong>All</strong> for an export of all Site Columns within the site</li>
<li><strong>Folder Name (Optional)</strong> – The folder name which will contain all the Site Column XML export files. By default, these files will be created within a folder named <strong>SiteColumns</strong></li>
</ul>
<p>Using these parameters, the script could be executed based on the following example:</p>
<p><em>.Output-SPSiteColumns.ps1 http://web.contoso.com/sites/testsite All SiteColumnsExport</em></p>
<h2>Code</h2>
<p>You can <a title="Output-SPSiteColumns PowerShell Script" href="http://summit7systems.com/blogs/jasoncribbet/wp-content/uploads/2011/07/Output-SPSiteColumns.zip">download</a> the script code file which you to examine and modify as needed. As a standard disclaimer, I assume no responsibility for the execution of this script within your environment.</p>
<p>Enjoy,</p>
<p>Jason</p>
<p>*This item is cross posted at my <a title="View Site Columns on S7 Blog" href="http://summit7systems.com/blogs/jasoncribbet/2011/07/22/view-site-columns-with-powershell/">Summit 7 System blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/blogs/jasoncribbet/?feed=atom&#038;p=200</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello world!</title>
		<link>http://summit7systems.com/blogs/shaneking/?p=1</link>
		<comments>http://summit7systems.com/blogs/shaneking/?p=1#comments</comments>
		<pubDate>Tue, 12 Jul 2011 20:36:48 +0000</pubDate>
		<dc:creator>Shane King</dc:creator>
		
		<guid isPermaLink="false">http://summit7systems.com/blogs/shaneking/?p=1</guid>
		<description><![CDATA[Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!
]]></description>
			<content:encoded><![CDATA[<p>Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!</p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/blogs/shaneking/?feed=atom&#038;p=1</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Dev. Environment – Part 2</title>
		<link>http://summit7systems.com/blogs/jasoncribbet/?p=177</link>
		<comments>http://summit7systems.com/blogs/jasoncribbet/?p=177#comments</comments>
		<pubDate>Wed, 06 Jul 2011 18:47:33 +0000</pubDate>
		<dc:creator>Jason Cribbet</dc:creator>
				<category><![CDATA[Configuration]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[IT Pro]]></category>
		<category><![CDATA[ITPro]]></category>
		<category><![CDATA[MOSS 2007]]></category>
		<category><![CDATA[SharePoint 2010]]></category>

		<guid isPermaLink="false">http://cribbet.com/2011/07/06/sharepoint-2010-dev-environment-part-2/</guid>
		<description><![CDATA[Review This is a continuation of an earlier post relating to the architecture and configuration of a SharePoint 2010 development environment which can be found here. In the original discussion, I started detailing out the concepts and requirements for single and multiple server development environments as shown in the following diagram: As a quick review, [...]]]></description>
			<content:encoded><![CDATA[<h2>Review</h2>
<p>This is a continuation of an earlier post relating to the architecture and configuration of a SharePoint 2010 development environment which can be found <a href="http://summit7systems.com/blogs/jasoncribbet/2011/07/05/sharepoint-2010-development-environment/">here</a>. In the original discussion, I started detailing out the concepts and requirements for single and multiple server development environments as shown in the following diagram:</p>
<p><a href="http://summit7systems.com/blogs/jasoncribbet/wp-content/uploads/2011/07/DevEnv1.png"><img style="display: block; float: none; margin-left: auto; margin-right: auto" title="DevEnv" border="0" alt="DevEnv" src="http://summit7systems.com/blogs/jasoncribbet/wp-content/uploads/2011/07/DevEnv_thumb1.png" width="345" height="314" /></a></p>
<p>As a quick review, the single and multiple server development environments each have their own unique purpose. Single server environments are ideal when there is a need to develop a quick proof of concept or to develop out a simple solution that does not require access to advanced functionality such as multiple service applications or access to full SQL Server instances. Multiple server development farms are ideal for more advanced situations primarily because they allow for the distribution of functionality across servers, which leads a more responsive environment. Having a single server environment handle the resource intensive demands of a full SQL Server instance, a SharePoint Web Front End, SP Search indexes, and multiple SP Service Applications all within one machine, could bring development times to a crawl because these applications would be competing for the same resources.</p>
<p>Ultimately, the decision of which development environment to begin with is a personal decision and should be chosen based on the requirements gathering and solution discovery phases of the program.</p>
<h2>Multi-Server IT Pro Farm</h2>
<p>Outside of the development of a complex custom solution with the use of tools such as Visual Studio, there can be times when the development of a solution aligns more with that of an IT Pro task. It seems more and more common that I will be involved in the development of a solution that is along the lines of an architectural solution as opposed to a pure custom coded solution. It is because of this that I have a specific need to have an IT Pro based environment.</p>
<p>What differentiates my IT Pro farm from my Development farm? Basically, it’s what’s not there that makes it necessary. Within my development specific environments, there are additional tools that are installed such as Visual Studio 2010, FxCop, CKS Dev. Tools, etc. The IT Pro environment is void of all these extra tools. Perhaps, the only tooling application that should remain in this environment would be the SQL Server management tools, not to provide access to the SP content databases but more to provide the ability to create databases that could be used with the Business Connectivity Servers application. Additionally, the installation of applications like Visual Studio 2010 include not only the development IDE but also a number of supporting framework packages, SDKs, and other additional software that wouldn’t normally be available within a SP Production environment.</p>
<p>By removing as many of these tools as technically feasible, the IT Pro environment provides a solid foundation to develop solutions by utilizing out of the box functionality and SharePoint Designer 2010.</p>
<h2>Multi-Server Integration/Quality Assurance Farm</h2>
<p>Much like the Multi-Server IT Pro environment, the Integration/Quality Assurance Farm should be void of any supporting development applications or SDKs that would not normally be found within a production SharePoint environment. Now, it’s understood that actual production environments can come in various shapes and sizes. Although there are many variations to the architecture that are possible, as a solution developer, the accessibility of SharePoint’s multiple capabilities will, in general, operate in the two server IT Pro farm similar to how they would within a fully load balanced production implementation.</p>
<p>This clean and sterile environment will allow for the testing of solutions without the additional configuration settings that could have been applied during development. Though I’m sure every developer takes extra precautions to ensure that all configuration settings for a solution are well documented in order to replicate the deployment without issue, there will inevitably be the case where this process fails and it is the role of this development environment to expose these flaws.</p>
<p>As mentioned before, the Integration and QA environment can, and most likely will, be hosted within a set of virtual machines. That said, this environment should be hosted in a central location which could be available to anyone within the development team, depending on the size of the team. This would serve two purposes. First, a centrally hosted integration environment will allow for better integration with other efforts that might be going on simultaneously. By following the previous deployment process of developing your solutions within the multi server development or IT Pro farms, the solutions deployed here should be relatively stable and will provide the first opportunity for developers to have their components interact with other solutions.</p>
<p>Second, having a centrally hosted integration environment allows for tighter control over the configuration. This environment should have a set of administrators designated to this farm and to manage access permissions and overall configuration. With this, you can ensure that inappropriate areas of your system, such as the web.config file, are not being modified without the proper procedures. Additionally, in many workspaces, it would be common to have the build out and configuration of the Integration and QA farm in a scripted format so that the tear down and rebuild of the environment can be readily repeated in the event that a solution or configuration breaks the system.</p>
<h2>Conclusion</h2>
<p>In the end, the architecture and configuration of a developer’s environment is of personal preference. Hopefully, I’ve been able to shed a little light into how I operate on a day to day basis and I welcome hearing about the advantages of your environment.</p>
<p>Thanks,</p>
<p>Jason</p>
<p>This entry is cross-posted at <a title="http://summit7systems.com/blogs/jasoncribbet/2011/07/06/sharepoint-2010-dev-environment-part-2/" href="http://summit7systems.com/blogs/jasoncribbet/2011/07/06/sharepoint-2010-dev-environment-part-2/">http://summit7systems.com/blogs/jasoncribbet</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://summit7systems.com/blogs/jasoncribbet/?feed=atom&#038;p=177</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

