<?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>The ASPE-IT Blog</title>
	<atom:link href="http://aspe-it.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://aspe-it.com/blog</link>
	<description>Real Skills. Real Results. Real IT.</description>
	<lastBuildDate>Mon, 17 Jun 2013 08:00:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>SharePoint 2010 How To: Changing Calendars To Fit You!</title>
		<link>http://aspe-it.com/blog/2013/sharepoint-2010-how-to-changing-calendars-to-fit-you/</link>
		<comments>http://aspe-it.com/blog/2013/sharepoint-2010-how-to-changing-calendars-to-fit-you/#comments</comments>
		<pubDate>Mon, 17 Jun 2013 08:00:34 +0000</pubDate>
		<dc:creator>Nadia Douaji</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[ASPE]]></category>
		<category><![CDATA[ASPE-IT]]></category>
		<category><![CDATA[Microsoft SharePoint]]></category>
		<category><![CDATA[Nadia Douaji]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint 2010 How To: Changing Calendars To Fit You!]]></category>
		<category><![CDATA[SharePoint how to]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2129</guid>
		<description><![CDATA[Our HR folks will be really interested in this: Showing the week number on the calendar. This change happens under your site’s Regional Settings.  If you are a site owner, you can go to Site Actions&#62; Site Settings &#62; Regional settings (under Site Administration) Check the box that says “Show week numbers in the Date [...]]]></description>
			<content:encoded><![CDATA[<p>Our HR folks will be really interested in this: Showing the week number on the calendar.</p>
<p>This change happens under your site’s Regional Settings.  If you are a site owner, you can go to Site Actions&gt; Site Settings &gt; Regional settings (under Site Administration)</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image21.png"><img class="alignnone size-full wp-image-2130" title="image21" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image21.png" alt="" width="546" height="564" /></a><span id="more-2129"></span></p>
<p>Check the box that says “Show week numbers in the Date Navigator”</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image22.png"><img class="alignnone size-full wp-image-2131" title="image22" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image22.png" alt="" width="587" height="226" /></a></p>
<p>Once that is set up, each time you add an item, you will be able to see the week number on the calendar.</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image23.png"><img class="alignnone size-full wp-image-2132" title="image23" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image23.png" alt="" width="495" height="488" /></a></p>
<p>Happy SharePointing!</p>
<p>About the Author:<br />
<em><strong>Nadia Douaji</strong> is a passionate individual who is excited about SharePoint. She started her IT career as a web designer/developer over 20 years ago. Her experience includes development and management of unique websites solutions from initial concept to live site. She started working in SharePoint 2007 and was then the only person willing to “dig in” at her agency. With SharePoint 2010, she continued acquiring all the skills and experience needed to become an expert. She is passionate about all aspects of the SharePoint platform and loves to share the good word. As SharePoint Business Analyst for a government agency, she is often talking to her peers about a quick way of using SharePoint to solve or ease a business process.</em></p>
<p><em>More from this author:</em></p>
<ul>
<li><a href="how-to-create-a-task-with-a-reminder-in-sharepoint-2010">How To Create a Task with a Reminder in SharePoint 2010</a></li>
<li><a href="http://aspe-it.com/blog/2013/sharepoint-2010-how-to-display-my-list-in-a-web-part-on-a-parent-site/">SharePoint 2010: How to Display My List in a Web Part on a Parent Site</a></li>
<li><a href="http://aspe-it.com/blog/2013/how-to-redirect-a-page-from-sharepoint-to-another-location/">How to Redirect a Page from SharePoint to Another Location</a></li>
<li><a href="http://aspe-it.com/blog/2013/using-sharepoint-designer-2010/">Using SharePoint Designer 2010</a></li>
<li><a href="http://aspe-it.com/blog/2013/how-to-sync-sharepoint-calendar-with-outlook/">How to Sync SharePoint Calendar with Outlook</a></li>
<li><a href="http://aspe-it.com/blog/2013/how-to-register-a-sharepoint-blog-using-microsoft-word/">How to Register a SharePoint Blog Using Microsoft Word</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/sharepoint-2010-how-to-changing-calendars-to-fit-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Congratulations to our 3rd iPad Winner of 2013!</title>
		<link>http://aspe-it.com/blog/2013/congratulations-to-our-3rd-ipad-winner-of-2013/</link>
		<comments>http://aspe-it.com/blog/2013/congratulations-to-our-3rd-ipad-winner-of-2013/#comments</comments>
		<pubDate>Fri, 14 Jun 2013 20:06:01 +0000</pubDate>
		<dc:creator>Natalie Morgan</dc:creator>
				<category><![CDATA[iPad]]></category>
		<category><![CDATA[Congratulations to our 3rd iPad Winner of 2013!]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2150</guid>
		<description><![CDATA[Congratulations to Te B. of Fort Wayne, IN for winning the 3rd iPad giveaway drawing of 2013! Didn&#8217;t win this time? No worries! Although this was the final drawing of the year, you can still sign up at  http://www.aspeinc.com/ipad/ to be entered into our next iPad giveaway, an exciting way to experience the web, email, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft" title="Ipad" src="http://www.aspe-sdlc.com/blog/wp-content/uploads/2012/04/ipad-picture1.jpg" alt="" width="255" height="271" />Congratulations to Te B. of Fort Wayne, IN for winning the 3rd iPad giveaway drawing of 2013!</p>
<p>Didn&#8217;t win this time? No worries! Although this was the final drawing of the year, you can still sign up at  <a href="http://www.aspeinc.com/ipad/">http://www.aspeinc.com/ipad/</a> to be entered into our next iPad giveaway, an exciting way to experience the web, email, photos, video, &amp; more!</p>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/congratulations-to-our-3rd-ipad-winner-of-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Create a Task with a Reminder in SharePoint 2010</title>
		<link>http://aspe-it.com/blog/2013/how-to-create-a-task-with-a-reminder-in-sharepoint-2010/</link>
		<comments>http://aspe-it.com/blog/2013/how-to-create-a-task-with-a-reminder-in-sharepoint-2010/#comments</comments>
		<pubDate>Thu, 13 Jun 2013 08:00:02 +0000</pubDate>
		<dc:creator>Nadia Douaji</dc:creator>
				<category><![CDATA[How to]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Training]]></category>
		<category><![CDATA[ASPE]]></category>
		<category><![CDATA[ASPE-IT]]></category>
		<category><![CDATA[How To Create a Task with a Reminder in SharePoint 2010]]></category>
		<category><![CDATA[Microsoft SharePoint]]></category>
		<category><![CDATA[Nadia Douaji]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint how to]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2113</guid>
		<description><![CDATA[Try a Content Type Based Off the Task Content Type Create a new content type based off the task content type: Add 3 site columbs: Reminder, ReminderDate and ReminderStatus. The ReminderDate is a calculated value based off the reminder set in days and the Due date. ReminderDate = Due Date &#8211; Reminder (in days) Reminder [...]]]></description>
			<content:encoded><![CDATA[<h2>Try a Content Type Based Off the Task Content Type</h2>
<p>Create a new content type based off the task content type:</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image13.png"><img class="alignnone size-full wp-image-2114" title="image13" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image13.png" alt="" width="390" height="310" /></a><span id="more-2113"></span></p>
<p>Add 3 site columbs: Reminder, ReminderDate and ReminderStatus. The ReminderDate is a calculated value based off the reminder set in days and the Due date.</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image14.png"><img class="alignnone size-full wp-image-2115" title="image14" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image14.png" alt="" width="578" height="167" /></a></p>
<p>ReminderDate = Due Date &#8211; Reminder (in days)</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image15.png"><img class="alignnone size-full wp-image-2116" title="image15" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image15.png" alt="" width="760" height="98" /></a></p>
<p>Reminder Column:</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image16.png"><img class="alignnone size-full wp-image-2117" title="image16" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image16.png" alt="" width="327" height="335" /></a></p>
<p>ReminderDate Column:</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image17.png"><img class="alignnone size-full wp-image-2118" title="image17" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image17.png" alt="" width="426" height="429" /></a></p>
<p>ReminderStatus Column: the choices in this case are:</p>
<ul>
<li>Not Started</li>
<li>In Progress</li>
<li>Completed</li>
<li>Deferred</li>
<li>Waiting on someone else</li>
</ul>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image18.png"><img class="alignnone size-full wp-image-2119" title="image18" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image18.png" alt="" width="323" height="383" /></a></p>
<p>Add these 3 columns to the newly created content type.</p>
<p>Associate a simple reusable workflow for a task list using this new content type.</p>
<p>The reusable workflow looks like this:</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image19.png"><img class="alignnone size-full wp-image-2120" title="image19" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image19.png" alt="" width="512" height="192" /></a></p>
<p>I added a condition in the workflow to run if the task has not been set to “completed”.  I am using the ReminderStatus column as the Status from the task has been renamed by Microsoft in the children tasks.</p>
<p>The Reminder and the ReminderStatus fields show up on all the new tasks added to a task list using this new content type and states the following “Set this reminder in days.  If the workflow is associated with the task list, an email will be sent to the assignee at Due Date minus this reminder.  For example, for a 2 weeks prior reminder set the Reminder to 14.  Leave it blank if you don&#8217;t know what to do with it.”  Note: Hide the task Status Column as you will be using your own status.</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/image20.png"><img class="alignnone size-full wp-image-2121" title="image20" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/image20.png" alt="" width="541" height="353" /></a></p>
<p>A user can go in and set a reminder (in days) for when the assignee would receive an email reminder prior to the Due Date.  Say I want a reminder 2 weeks prior to the due date, I will set reminder to 14 (days).</p>
<p>Now the Workflow behind is based on the task and the administrator needs to associate the Workflow with the list.  Please note that once that is done, the task list will lose the personal notification so the administrator needs to go back to Advanced Settings and set the personal notification to yes.</p>
<p>Happy SharePointing!</p>
<p><em>About the Author:<br />
<strong>Nadia Douaji</strong> is a passionate individual who is excited about SharePoint. She started her IT career as a web designer/developer over 20 years ago. Her experience includes development and management of unique websites solutions from initial concept to live site. She started working in SharePoint 2007 and was then the only person willing to “dig in” at her agency. With SharePoint 2010, she continued acquiring all the skills and experience needed to become an expert. She is passionate about all aspects of the SharePoint platform and loves to share the good word. As SharePoint Business Analyst for a government agency, she is often talking to her peers about a quick way of using SharePoint to solve or ease a business process.</em></p>
<p><em>More from this author:</em></p>
<ul>
<li><em><a href="http://aspe-it.com/blog/2013/sharepoint-2010-how-to-display-my-list-in-a-web-part-on-a-parent-site/">SharePoint 2010: How to Display My List in a Web Part on a Parent Site</a></em></li>
<li><em><a href="http://aspe-it.com/blog/2013/how-to-redirect-a-page-from-sharepoint-to-another-location/">How to Redirect a Page from SharePoint to Another Location</a></em></li>
<li><em><a href="http://aspe-it.com/blog/2013/using-sharepoint-designer-2010/">Using SharePoint Designer 2010</a></em></li>
<li><a href="http://aspe-it.com/blog/2013/how-to-sync-sharepoint-calendar-with-outlook/"><em>How to Sync SharePoint Calendar with Outlook</em></a></li>
<li><a href="http://aspe-it.com/blog/2013/how-to-register-a-sharepoint-blog-using-microsoft-word/"><em>How to Register a SharePoint Blog Using Microsoft Word</em></a></li>
</ul>
<h2></h2>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/how-to-create-a-task-with-a-reminder-in-sharepoint-2010/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reliable Forecasting Using Salesforce</title>
		<link>http://aspe-it.com/blog/2013/reliable-forecasting-using-salesforce/</link>
		<comments>http://aspe-it.com/blog/2013/reliable-forecasting-using-salesforce/#comments</comments>
		<pubDate>Mon, 10 Jun 2013 08:00:27 +0000</pubDate>
		<dc:creator>Traci Lester</dc:creator>
				<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[Salesforce.com]]></category>
		<category><![CDATA[ASPE]]></category>
		<category><![CDATA[ASPE-IT]]></category>
		<category><![CDATA[forecasting using salesforce]]></category>
		<category><![CDATA[PEAK Sales Consulting]]></category>
		<category><![CDATA[Reliable Forecasting Using Salesforce]]></category>
		<category><![CDATA[Russ Lombardo]]></category>
		<category><![CDATA[Salesforce training]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2103</guid>
		<description><![CDATA[by Russ Lombardo, President – PEAK Sales Consulting In my sales seminars I often ask the attendees when was the last time they saw an accurate sales forecast. Usually after the laughing dies down I see one or two raised hands. It is truly a challenge to create an accurate forecast, and in today’s difficult [...]]]></description>
			<content:encoded><![CDATA[<p><em>by Russ Lombardo, President – PEAK Sales Consulting</em></p>
<p><em> </em>In my sales seminars I often ask the attendees when was the last time they saw an accurate sales forecast. Usually after the laughing dies down I see one or two raised hands. It is truly a challenge to create an accurate forecast, and in today’s difficult economy and crazy world it’s even harder than usual. But reliable forecasting using Salesforce <em><strong>is</strong></em> possible.</p>
<p>Frequently the sales person lets his/her emotions get in the way of accurately forecasting the status of an opportunity. The meeting went great. Everyone got along. The prospect loved the product. Hence, it looks like an 80 percent chance of winning this deal. But wait! Is there a budget? Are you talking to the right person &#8212; the one with authority to make a purchasing decision? Have you met all their requirements? Do you know, and can you meet, their timeframe? These are the four basic questions that need to be answered in order to accurately qualify a prospect: Budget, Authority, Requirements and Timeframe (in no particular order).</p>
<p>Chances are you’ll say no to more than one of these critical qualifying questions. But because the meeting went so well, your emotions take over and instead of making an analytical assessment, you make an emotional one and predict a higher probability of making the sale than is realistically possible, or at best make a premature assessment of the probability. Not only are you deluding yourself, but you are setting false expectations for your own income. Furthermore, you are making your boss look bad by feeding him/her inaccurate information that s/he has to present to his/her boss. If you are the manager collecting forecasts from your sales team, then you have to make sure your people are not making emotional forecasting decisions.<span id="more-2103"></span></p>
<p>Forecasting should be done analytically and based on stages of the sales process. The stages, which vary by company but are nevertheless fairly consistent, define what actions have occurred in the sales process. They do not measure subjective or anecdotal criteria, such as if you have a sense of when they will decide to purchase or if you had a positive experience in your assessment meeting. Instead, the stages define where you are in the sales process by specific activities, such as – have you qualified them (using the previously mentioned criteria), did you present your solution, are you in the negotiating stage, etc.</p>
<p>For each stage in the process, you can then assign a probability of the sale closing. Obviously, the further down the sales process you go, the higher the probability. Your stages and associated probabilities can look something like what’s in Figure 1.</p>
<table border="1" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="319" valign="top">
<p style="text-align: center;"><strong>Stage</strong></p>
</td>
<td width="108" valign="top">
<p style="text-align: center;"><strong>Probability</strong></p>
</td>
</tr>
<tr>
<td width="319" valign="top">Prospecting</td>
<td width="108" valign="top">
<p style="text-align: center;">10%</p>
</td>
</tr>
<tr>
<td width="319" valign="top">Qualification</td>
<td width="108" valign="top">
<p style="text-align: center;">20%</p>
</td>
</tr>
<tr>
<td width="319" valign="top">Needs Analysis</td>
<td width="108" valign="top">
<p style="text-align: center;">40%</p>
</td>
</tr>
<tr>
<td width="319" valign="top">Present/Demo Solution</td>
<td width="108" valign="top">
<p style="text-align: center;">60%</p>
</td>
</tr>
<tr>
<td width="319" valign="top">Proposal/Price Quote</td>
<td width="108" valign="top">
<p style="text-align: center;">80%</p>
</td>
</tr>
<tr>
<td width="319" valign="top">Negotiation/Review</td>
<td width="108" valign="top">
<p style="text-align: center;">90%</p>
</td>
</tr>
<tr>
<td width="319" valign="top">Closed Won</td>
<td width="108" valign="top">
<p style="text-align: center;">100%</p>
</td>
</tr>
</tbody>
</table>
<p>Figure 1 – Sales Stages</p>
<p>In Salesforce it’s a simple process to set up your sales stage field with these particular stages. When a sales rep creates an Opportunity, one of the fields is called Stage where you can provide a pick list (pull-down menu) with all your sales steps listed from which they can choose (see Figure 2). The items in the list can be changed, added, deleted and re-ordered quite simply by using the Customizations feature as an Administrator. This screen is also where other information about the Opportunity is added, including name of the opportunity, dollar amount, Account it’s associated with, close date and more.</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_5.gif"><img class="alignnone size-full wp-image-2104" title="salesforce_5" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_5.gif" alt="" width="498" height="269" /></a></p>
<p>Figure 2 &#8211; Scheduling a Forecasted Sale</p>
<p>The benefit of using the Stage field is two-fold.  First, the pick list forces the sales reps to use only what’s on the list and nothing more. This will make it easier to search for opportunities in a specific stage of the sales process as well as run reports that will list all opportunities in each of the stages. And second, you can set the Stage field to be a required field, which means the user cannot leave the screen unless they fill in this field, hence guaranteeing data entry.</p>
<p>The second benefit is that the Probability field will be auto-populated with an appropriate and pre-assigned percentage, depending on the stage chosen. This will absolutely prevent anyone from making up their own percentage based on their “emotional” determination of the opportunity. Hence, if the sales rep did a Needs Analysis, then by definition this opportunity is at 40% probability of closing, nothing more and nothing less. It doesn’t matter how well the analysis meeting went. The sales rep cannot factor in a higher percentage just because the meeting went really well. This method will guarantee that the forecasting process for your company will be consistent and reliable. Obviously, this list of items for the Stage and the associated percentages are just an example and will vary by company.</p>
<p>Using the Opportunity manager within Salesforce also allows you to add other relevant information and connections to keep complete track of what’s going on and who is involved with an Opportunity. As seen in Figure 3, you not only can control the Stage and Probability, but also schedule activities (appointments, to-do’s, etc) related to that Opportunity, link the Opportunity to the client (Contact name), keep track of the History of activities that have occurred with this Opportunity, and more.</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_6.gif"><img class="alignnone size-full wp-image-2105" title="salesforce_6" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_6.gif" alt="" width="531" height="365" /></a></p>
<p>Figure 3 – Tracking additional information within the Opportunity</p>
<p>Using forecasts and opportunities to manage your sales will help you track each sale’s status as well as what you need to do next in the process. By simply looking at a Salesforce forecast report, you can quickly see how many opportunities you have and what stage of the sales process each one is in.</p>
<p>These functions give sales reps and their managers the capability to help close more deals by managing activities and monitoring the status of the accounts. They will also show a window into your projected business without taking up much selling time from your sales team. Hence, sales reps don’t have to waste valuable selling time by writing weekly forecast reports since Salesforce can easily generate reports with this information. And managers can run these reports whenever and from wherever they want, knowing that the probabilities will be as close to reality as practical, thus allowing them to better run the business.</p>
<p>Want more? Check our ASPE-IT’s full curriculum of <a href="http://aspe-it.com/salesforce-training/">Authorized Salesforce training courses</a>.</p>
<p><em>About the Author: <strong>Russ Lombardo</strong>, President &amp; Founder of PEAK Sales Consulting, is a nationally recognized Sales and CRM consultant, speaker, trainer, and author. Russ works with sales organizations and management who want to increase their sales results by acquiring new customers and retaining existing ones. As a speaker, Russ presents sales training seminars and customer retention workshops as well as keynote and conference speeches to dozens of audiences every year. He is the author of five books on Sales and CRM.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/reliable-forecasting-using-salesforce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Enforce Data Integrity in Salesforce</title>
		<link>http://aspe-it.com/blog/2013/how-to-enforce-data-integrity-in-salesforce/</link>
		<comments>http://aspe-it.com/blog/2013/how-to-enforce-data-integrity-in-salesforce/#comments</comments>
		<pubDate>Mon, 03 Jun 2013 21:30:51 +0000</pubDate>
		<dc:creator>Traci Lester</dc:creator>
				<category><![CDATA[IT Solutions]]></category>
		<category><![CDATA[Salesforce]]></category>
		<category><![CDATA[Salesforce.com]]></category>
		<category><![CDATA[ASPE]]></category>
		<category><![CDATA[ASPE-IT]]></category>
		<category><![CDATA[Force.com]]></category>
		<category><![CDATA[How to Enforce Data Integrity in Salesforce]]></category>
		<category><![CDATA[PEAK Sales Consulting]]></category>
		<category><![CDATA[Russ Lombardo]]></category>
		<category><![CDATA[Salesforce training]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2093</guid>
		<description><![CDATA[by Russ Lombardo, President &#8211; PEAK Sales Consulting It’s a simple concept, but one that is often overlooked or even deemed irrelevant; that is until someone gets hurt. The integrity and quality of data is paramount in having a reliable and useable CRM system, and that includes Salesforce. However, in our haste to enter information [...]]]></description>
			<content:encoded><![CDATA[<p><em>by Russ Lombardo, President &#8211; PEAK Sales Consulting</em></p>
<p>It’s a simple concept, but one that is often overlooked or even deemed irrelevant; that is until someone gets hurt. The integrity and quality of data is paramount in having a reliable and useable CRM system, and that includes Salesforce. However, in our haste to enter information into the appropriate fields, sometimes any information will do. For instance, you have the busy sales rep who doesn&#8217;t have time to think about the exact “next step” to enter in the Sales Process field in Salesforce. So they enter whatever comes to mind. If this happens often, imagine how impossible it would be for them to search for all accounts for which they need to write a proposal (assuming writing a proposal was a next step in the sales process). What text or phrase would they build their search on? They can’t accomplish an effective search because that field would have neither consistent nor reliable data.</p>
<p>In another example, say a marketing professional fills in the Lead Source field with whatever they feel is the best description for the source. They might enter “Web Site” for one lead and “Website” for another, even though they both came from the exact same source. In this case, potentially every lead could have its own unique description with respect to its source. Now suppose the marketing manager wants to do a search on where leads have been coming from so they can analyze the most effective versus least effective marketing programs and campaigns. It would be impossible to find any consistency or commonality in the Lead Source field from which they could base their analysis since the entries would all be different.<span id="more-2093"></span></p>
<p>To make matters even more challenging, many times these important fields are left empty entirely. As managers, we can demand that our sales and marketing teams enter lead source, next step, and other information into selected Salesforce fields. But at the end of the day people forget, are too busy, are lazy, are defiant or just don’t care to take the extra steps to fill in fields in their CRM system. Wouldn’t it be wonderful to not only get users to input exactly the right information into specific fields, but to also force users to fill them in at all?</p>
<p>Salesforce enables you to accomplish these tasks easily. Before going further, it’s important to note that one should be judicious about forcing users to enter information into too many fields. One of the major reasons there is user resistance to CRM systems is because the implementation of these systems often requires the users to spend too much time entering data. In a sales environment, we have to respect the fact that sales reps are, truthfully, too busy to spend a lot of time entering information into their CRM system. Forcing them to enter data into too many fields will just exacerbate the problem. So let’s not get too carried away with forcing data entry. The focus here is more about entering consistent and correct data, with only a few key fields actually requiring data entry by the user.</p>
<p>Setting up Salesforce fields to accept pre-defined data is merely a function of configuring the system rather than customizing it. The word “customizing” tends to make some people a bit nervous since it conjures up thoughts of modifying code and perhaps even voodoo and mirrors. On the other hand, “configuring” is a gentler and friendlier effort that only requires arranging a few parameters and settings. So let’s look at how one would go about doing this.</p>
<p>In this example we will focus on the Account Source field. In Figure 1 you can see this field highlighted with the full pick list (or pull-down menu) exposed. To enter data in this field, the user would simply click on the arrow to the right of the Account Source field, the pick list will expand, they would select “Trade Show” from the list, and that choice will be populated in the source field. Couldn’t be easier. And, it’s full proof. Users cannot type their own value in that field, or misspell “Traid Show”, or mess this up in any way. To set this up, you can add whatever you like in the pick list and sort the contents in any order; alphabetically, by priority, by most frequently used, or however is most effective for your users.</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_1.gif"><img class="alignnone size-full wp-image-2094" title="salesforce_1" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_1.gif" alt="" width="496" height="314" /></a></p>
<p>To configure Salesforce with your pick list choices, you’ll obviously need Admin rights to use the Setup selection (top right by your login name). As you can see in Figure 2, you select Customize on the left-side menu, then Accounts, then Fields. You can create a new custom field (see bottom area of Figure 2) and define your new field’s Data Type as a “Picklist”. In this example, though, we will use the existing field called “Account Source”.</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_2.gif"><img class="alignnone size-full wp-image-2095" title="salesforce_2" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_2.gif" alt="" width="485" height="305" /></a></p>
<p>By clicking on the field’s label (“Account Source”) you will be brought to a screen where you can add/edit items on your Picklist (see Figure 3). Note that you can select New, Reorder, Replace, and more. Selecting New will allow you to add more values to whatever is already in the list. Just be sure to use the Reorder option to sort the choices in the order you wish. That will make it easier for your users.</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_3.gif"><img class="alignnone size-full wp-image-2096" title="salesforce_3" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_3.gif" alt="" width="491" height="307" /></a></p>
<p>Once this is completed, your users can easily choose from a convenient pick list and you will be assured that the Account Source field will only have consistent, pre-defined values that you’ll be able to select for reports and other important functions without fail.</p>
<p>What if you want to make the field mandatory? Go to Customize/Accounts/Page Layouts, choose Edit, and click on the wrench (Properties) in the field you want to make mandatory (See Figure 4).</p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_4.gif"><img class="alignnone size-full wp-image-2097" title="salesforce_4" src="http://aspe-it.com/blog/wp-content/uploads/2013/06/salesforce_4.gif" alt="" width="492" height="307" /></a></p>
<p>For more advanced methods to enforce data validation, you can use Task Validation Rules (also under the Customize menu). This function allows you to get more sophisticated in your data entry requirements, such as making fields conditionally required depending on the value of another field, ensuring that numbers are within a specified range (i.e., discount is less than 30%), enforce that date fields are the correct chronological sequence (i.e., start date is before end date), and lots more.</p>
<p>These methods will help to enforce the data integrity of your Salesforce system so that your users, management, IT, or whomever can reliably analyze information, measure activities and behaviors, and deploy your sales processes, helping you to realize a more successful CRM implementation.</p>
<p>Want more? Check our ASPE-IT&#8217;s full curriculum of <a href="http://aspe-it.com/salesforce-training/">Authorized Salesforce training courses</a>.</p>
<p><em>About the Author: <strong>Russ Lombardo</strong>, President &amp; Founder of PEAK Sales Consulting, is a nationally recognized Sales and CRM consultant, speaker, trainer, and author. Russ works with sales organizations and management who want to increase their sales results by acquiring new customers and retaining existing ones. As a speaker, Russ presents sales training seminars and customer retention workshops as well as keynote and conference speeches to dozens of audiences every year. He is the author of five books on Sales and CRM.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/how-to-enforce-data-integrity-in-salesforce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Seminar Recap: Core Professional Skills: a 60-Minute Primer</title>
		<link>http://aspe-it.com/blog/2013/web-seminar-recap-core-professional-skills-a-60-minute-primer/</link>
		<comments>http://aspe-it.com/blog/2013/web-seminar-recap-core-professional-skills-a-60-minute-primer/#comments</comments>
		<pubDate>Tue, 21 May 2013 18:24:06 +0000</pubDate>
		<dc:creator>Regina Twine</dc:creator>
				<category><![CDATA[Communication]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2089</guid>
		<description><![CDATA[In the business world, we hear a lot about technology and disruption, and their many challenges. But we&#8217;re also starting to hear more about pitfalls related to the human side of business…gaps in the &#8220;soft skills&#8221; that are equally critical to successful people and companies. Although many of these skills gaps are nothing new, they [...]]]></description>
			<content:encoded><![CDATA[<p>In the business world, we hear a lot about technology and disruption, and their many challenges. But we&#8217;re also starting to hear more about pitfalls related to the human side of business…gaps in the &#8220;soft skills&#8221; that are equally critical to successful people and companies. Although many of these skills gaps are nothing new, they are more relevant than ever, and in some cases have been made worse by disruption. Without core professional skills like communication, initiative, leadership, and etiquette, no team can be truly great and no professional can be truly successful. You probably deal with the consequences of &#8220;soft skill&#8221; deficits every day: communication breakdown, misunderstanding, conflict, and damaged morale – just to name a few.</p>
<p>On May 14, 2013, PMP, Chris Knotts took a look at some of the most common “people problems” in the mainstream business world, and how we can start dealing with them.  In this free one hour seminar he explained that these are productivity killers, and the root causes are broad. There are rising cross-generational differences, a growing lack of interpersonal skills, differences in personality and culture, and erosion in consensus about what constitutes professional behavior. The good news is that there are teachable skills to address these challenges, and accessible techniques to overcome them.</p>
<p>Chris covered multiple topics including:<span id="more-2089"></span></p>
<ul>
<li>How to communicate effectively</li>
<li>Overcoming generational and cultural barriers</li>
<li>Leveraging emotional intelligence in the business environment</li>
<li>Encouraging self-awareness while building a team mentality</li>
<li>Keeping action and culture tied to productivity</li>
</ul>
<p>Although these needs aren&#8217;t new in the business world, even seasoned veterans are beginning to see the need for a &#8220;reloaded&#8221; approach to developing these skills.  Chris gave a high-level conversation about how to navigate these soft skills as we face continuing changes in business landscapes and a rising new generation of professionals.</p>
<p>To learn more about mastering the framework of successful project management or to learn to manage communication, planning, budgets and more, check out our 2 day course <a title="The Fundamentals of Project Management" href="http://aspe-sdlc.com/courses/project-management-fundamentals/" target="_blank">The Fundamentals of Project Management</a>. This course stresses the role of all project documentation as part of a communications strategy that proves all stakeholders with the information they need.</p>
<p><strong>Remaining Q&amp;A:</strong></p>
<p><strong>“What about the old adage &#8216;Communication breaks down 50% when separated by distance greater than 100 feet?&#8217;”</strong></p>
<p>In terms of the obvious, the first and literal answer would be that just in a physical sense, let’s say you have two human beings standing out in an open field, communicating through speech. 100 feet is about the right amount of distance for two people shouting at each other to start having difficulty understanding each other.</p>
<p>But secondly, there’s the more meaningful way to look at this question. What does distance really mean to communication? To answer this question, the first thing you have to look at is the fact that when we communicate, the meaning of our words is transmitted in a number of ways. In other words, when we speak to someone we don’t simply use words. We use facial expressions, body language, and inflection of voice. Today, it is well-understood that these aspects of spoken language carry huge portions of the meaning and intention behind our words. In fact, it has been well-established that the words themselves only carry as little as 7-10% of the real intention behind a message.</p>
<p>That means that the moment you’re not in the same room, communicating face to face, you’ve taken a hit in how effectively you can transmit your idea. But obviously, we face these situations all the time, since everybody knows you can’t rally round to the conference room and have a meeting every single time you need to communicate.</p>
<p>So, what to do? Let’s take a page from the world of project management. Project managers are taught that a crude ranking of meaning transmitted by different aspects of face-to-face interaction breaks down like this (see the work of Albert Mehrabian):</p>
<ol>
<li><strong>Words:</strong> 7%</li>
<li><strong>Tone of voice/inflection:</strong> 38%</li>
<li><strong>Body language: </strong>55%</li>
<li>All three work together and rely on each other (separation, and/or emotional content will result in the intention and the message being incongruous to some degree).</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/web-seminar-recap-core-professional-skills-a-60-minute-primer/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing the 2013 Agile Salary Survey!</title>
		<link>http://aspe-it.com/blog/2013/introducing-the-2013-agile-salary-survey/</link>
		<comments>http://aspe-it.com/blog/2013/introducing-the-2013-agile-salary-survey/#comments</comments>
		<pubDate>Wed, 15 May 2013 15:37:07 +0000</pubDate>
		<dc:creator>Traci Lester</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2084</guid>
		<description><![CDATA[Here at ASPE-SDLC we are committed to providing the Agile community with need-to-know information covering both technical and professional topics. In years past we have developed a very specific and focused salary survey for use by the Agile community. And with the growing adoption of Agile methods, the growing demand for Agile training, and the [...]]]></description>
			<content:encoded><![CDATA[<p>Here at ASPE-SDLC we are committed to providing the Agile community with need-to-know information covering both technical and professional topics. In years past we have developed a very specific and focused salary survey for use by the Agile community. And with the growing adoption of Agile methods, the growing demand for Agile training, and the growing value of Agile skills and certification, we have decided to re-launch our <a href="https://www.surveymonkey.com/s/agile-salary-survey">Agile Salary Survey</a> in partnership with our friends at Global Knowledge, HP and ICAgile. We want to show the Agile community just how valuable their skill set really is.</p>
<p>We highly encourage you to participate in the <a href="https://www.surveymonkey.com/s/agile-salary-survey">2013 Agile Salary Survey</a>. We want to know about your current position and what is happening in the Agile World. This survey will take approximately 5 minutes to complete and you can withdraw from the survey at any point. Survey responses are strictly confidential and data from this research will be reported only in the aggregate.</p>
<p>A report containing a detailed analysis of survey results will be distributed to participants soon after the survey period closes as well as available on www.aspe-sdlc.com for download.</p>
<p style="text-align: center;"><strong><a href="https://www.surveymonkey.com/s/agile-salary-survey">Take the 2013 Agile Salary Survey now!</a></strong></p>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/introducing-the-2013-agile-salary-survey/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Sandbox Solution 4 &#8211; Solution Validation</title>
		<link>http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-4-solution-validation/</link>
		<comments>http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-4-solution-validation/#comments</comments>
		<pubDate>Mon, 13 May 2013 08:00:09 +0000</pubDate>
		<dc:creator>Traci Lester</dc:creator>
				<category><![CDATA[IT Professionals]]></category>
		<category><![CDATA[IT Solutions]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Sandbox]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[ASPE]]></category>
		<category><![CDATA[ASPE-IT]]></category>
		<category><![CDATA[Saurabh Agrawal]]></category>
		<category><![CDATA[SharePoint 2010]]></category>
		<category><![CDATA[SharePoint 2010 Sandbox]]></category>
		<category><![CDATA[SharePoint 2010 Sandbox Solution]]></category>
		<category><![CDATA[SharePoint 2010 Sandbox Solution 4]]></category>
		<category><![CDATA[SharePoint 2010 Sandbox Solution 4 - Solution Validation]]></category>
		<category><![CDATA[Solution Validation]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2078</guid>
		<description><![CDATA[The scope of a sandboxed solution allows the site collection administrator to activate / deactivate it. There may be some cases where the farm administrator needs to have a look before activating the solution. For such purposes, Sandbox Solution Validator is used. In this final blog post of Sandbox solutions, we will look at HOW [...]]]></description>
			<content:encoded><![CDATA[<p>The scope of a sandboxed solution allows the site collection administrator to activate / deactivate it. There may be some cases where the farm administrator needs to have a look before activating the solution. For such purposes, Sandbox Solution Validator is used. In this final blog post of Sandbox solutions, we will look at HOW TO IMPLEMENT A SANDBOX SOLUTION VALIDATOR. Although it’s a feature that is not used often, it has proved to be handy when you really need to implement a rule for solution activation.</p>
<p>To create a solution validator you need to follow the steps below:</p>
<ol>
<li>Create an empty SharePoint Farm solution in Visual Studio.</li>
<li>Add a class <strong>SolutionValidator </strong> in class file <strong>SolutionValidator.cs</strong></li>
<li>Inherit it from <strong>SPSolutionValidator</strong> and give a GUID to the class<span id="more-2078"></span>
<p><em>[</em><span style="color: #00ffff;"><em><span style="color: #33cccc;">Guid</span></em><span style="color: #000000;"><em>(</em><span style="color: #ff0000;"><em>"DAC77CB7-7511-8427-B6A57C5f49F7"</em><span style="color: #000000;"><em>)]<br />
<span style="color: #0000ff;">public class <span style="color: #00ffff;"><span style="color: #33cccc;">SolutionValidator</span> <span style="color: #000000;">: <span style="color: #00ffff;"><span style="color: #33cccc;">SPSolutionValidator</span><br />
</span></span></span></span><span style="color: #000000;">{<br />
</span>}</em><br />
</span></span></span></span></li>
<li><span style="color: #00ffff;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">Give a name to the validator by defining a property in the validator class.
<p><span style="color: #0000ff;"><em>private const string </em><span style="color: #000000;"><em>validatorName = </em><span style="color: #ff0000;"><em>&#8220;Custom Solution Validator&#8221;</em><span style="color: #000000;"><em>;</em><br />
</span></span></span></span><br />
</span></span></span></span></li>
<li><span style="color: #00ffff;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;">Add constructors:
<p><span style="color: #0000ff;"><em>public </em><span style="color: #000000;"><em>SolutionValidator() {}</p>
<p><span style="color: #0000ff;">public <span style="color: #000000;">SolutionValidator(<span style="color: #00ffff;"><span style="color: #33cccc;">SPUserCodeService</span> <span style="color: #000000;">uerCodeService) : </span></span></span></span> </em><span style="color: #0000ff;"><em>base </em><span style="color: #000000;"><em>(validatorName,<br />
userCodeService)<br />
{<br />
<span style="color: #0000ff;">this.<span style="color: #000000;">Signature = 1111;<br />
</span></span> </em><span style="color: #000000;"><em>}</em><br />
</span><br />
</span></span></span></span></span></span></span></span></li>
<li><span style="color: #00ffff;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #0000ff;"><span style="color: #000000;"><span style="color: #0000ff;"><span style="color: #000000;"> Override <strong>ValidateSolution </strong>method and set the <strong>properties.Valid </strong>as true or false based on your logic. If <strong>properties.Valid</strong> is false then SCA wouldn&#8217;t be able to activate the solution:
<p><em><span style="color: #0000ff;">publiv override void <span style="color: #000000;">ValidateSolution(<span style="color: #33cccc;">SPSolutionValidationProperties <span style="color: #000000;">properties)<br />
</span></span></span></span> {<br />
<span style="color: #0000ff;">base<span style="color: #000000;">.ValidateSolution(properties;</span></span></p>
<p><span style="color: #339966;"> //Write some validation logic here an<br />
</span><span style="color: #339966;"> properties.Valid = true;<br />
</span> }</p>
<p></em></span></span></span></span></span></span></span></span></li>
<li><span style="color: #00ffff;"><span style="color: #000000;"><span style="color: #ff0000;"><span style="color: #000000;"><span style="color: #0000ff;"><span style="color: #000000;"><span style="color: #0000ff;"><span style="color: #000000;">Override <strong>ValidateAssembly </strong>method and set the <strong>properties.Valid</strong> as true or false based on your logic. If <strong>properties.Valid</strong> is false then SCA wouldn&#8217;t be able to activate the solution.<br />
<em><br />
<span style="color: #0000ff;">public override void <span style="color: #000000;">ValidateAssembly(<span style="color: #33cccc;">SPSolutionValidationProperties</span></span></span> properties,<br />
<span style="color: #33cccc;">SPSolutionFile <span style="color: #000000;">assembly)<br />
</span></span> {<br />
<span style="color: #339966;">// Write some validation logic here an<br />
</span> <span style="color: #339966;">//properties.Valid = true;<br />
</span>{</em></span></span></span></span></span></span></span></span></li>
</ol>
<p>Are you done? The answer if yes and no. The validator is ready but it is not registered yet. To register the validator to SPUC service, add the following code in <strong>FeatureActivated </strong>method of the feature in which this class is added:<em> </em></p>
<p><em><span style="color: #33cccc;">SPUserCodeService <span style="color: #000000;">sandboxService = <span style="color: #33cccc;">SPUserCodeService<span style="color: #000000;">.Local;<br />
<span style="color: #33cccc;">SPSolutionValidator <span style="color: #000000;">solutionValidator =<br />
</span></span> <span style="color: #0000ff;">new <span style="color: #33cccc;">SolutionValidator<span style="color: #000000;">(sandboxService);<br />
</span></span></span> sandboxService.SolutionValidators.Add(solutionValidator);</span></span></span></span></em></p>
<p><span style="color: #33cccc;"><span style="color: #000000;"><span style="color: #33cccc;"><span style="color: #000000;">To unregister the validator add the following code in <strong>FeatureDeactivating </strong>method:</span></span></span></span></p>
<p><span style="color: #33cccc;"><span style="color: #000000;"><span style="color: #33cccc;"><span style="color: #000000;"><em><span style="color: #33cccc;">SPUserCodeService <span style="color: #000000;">sandboxService = <span style="color: #33cccc;">SPUserCodeService<span style="color: #000000;">.Local;<br />
</span></span></span></span><span style="color: #33cccc;">Guid <span style="color: #000000;">solutionValidatorld = sandboxService.SolutionValidators[<span style="color: #ff0000;">"Custom Solution Validator"<span style="color: #000000;">].ld;<br />
</span></span></span></span>sandboxService.SolutionValidators.Remove(solutionValidatorld);</em></span></span></span></span></p>
<p><span style="color: #33cccc;"><span style="color: #000000;"><span style="color: #33cccc;"><span style="color: #000000;">Now deploy the solution and try to activate any sandbox solution in the solution gallery. You should be able to see the rules/logic you wrote in validator, governing the solution activation.</span></span></span></span></p>
<p><span style="color: #33cccc;"><span style="color: #000000;"><span style="color: #33cccc;"><span style="color: #000000;">Enjoy!</span></span></span></span></p>
<p><em>About the author:<br />
<strong>Saurabh Agrawal</strong> is a Microsoft Certified Professional Developer in SharePoint 2010 (MCPD) and Microsoft Certified Technology Specialist in SQL server 2008 (MCTS). He helps clients build efficient SharePoint based CMS and Enterprise wide applications, proposing architectures and solutions for their enterprise needs. He has worked on developing solutions on all major SharePoint versions like WSS 3.0, MOSS 2007 and SharePoint 2010. Along with SharePoint development, he has a broad knowledge of SharePoint administration, multi-tier farm setup, etc. His diversified business and technical skills include: Content Management, Portals &amp; Collaboration, FAST Search, Enterprise Federated Search, Business Processes &amp; Forms Management, Enterprise Social Networking and Enterprise wide SharePoint implementations.</em></p>
<p><em>More from this author:</em></p>
<ul>
<li><em><a href="http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-3-sandbox-proxy/">SharePoint 2010 Sandbox Solution 3 – Sandbox Proxy</a></em></li>
<li><em><a href="http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-2-architecture-and-execution-model/">SharePoint 2010 Sandbox Solution 2 – Architecture and Execution Model</a></em></li>
<li><em><a href="http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-1-overview-of-sandboxed-solution/">SharePoint 2010 Sandbox Solution 1 – Overview of Sandboxed Solution</a></em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-4-solution-validation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Congratulations to our 2nd iPad Winner of 2013!</title>
		<link>http://aspe-it.com/blog/2013/congratulations-to-our-2nd-ipad-winner-of-2013/</link>
		<comments>http://aspe-it.com/blog/2013/congratulations-to-our-2nd-ipad-winner-of-2013/#comments</comments>
		<pubDate>Fri, 10 May 2013 19:17:06 +0000</pubDate>
		<dc:creator>Traci Lester</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2081</guid>
		<description><![CDATA[We have our second winner of 2013! Congratulations to Mark McArthey of Oconomowoc, WI for winning the second iPad drawing of the 2013! Don&#8217;t fret! You still have one more chance to win! Enter NOW to win one of three iPads in 2013 from ASPE. The final winner will be chosen on June 14th. Sign [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.aspe-sdlc.com/blog/wp-content/uploads/2012/04/ipad-picture1.jpg"><img class="alignleft size-full wp-image-3160" title="iPad" src="http://www.aspe-sdlc.com/blog/wp-content/uploads/2012/04/ipad-picture1.jpg" alt="" width="255" height="271" /></a>We have our second winner of 2013! Congratulations to Mark McArthey of Oconomowoc, WI for winning the second iPad drawing of the 2013!</p>
<p>Don&#8217;t fret! You still have one more chance to win! Enter NOW to win one of three iPads in 2013 from ASPE. The final winner will be chosen on June 14th.</p>
<p>Sign up at <a href="http://www.aspeinc.com/ipad">www.aspeinc.com/ipad</a> for your chance to win one of three iPads, an exciting way to experience the web, email, photos, video, &amp; more.</p>
<p style="text-align: center;"><a href="http://www.aspeinc.com/ipad/"><strong>Enter to win a FREE iPad from ASPE!</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/congratulations-to-our-2nd-ipad-winner-of-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Sandbox Solution 3 &#8211; Sandbox Proxy</title>
		<link>http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-3-sandbox-proxy/</link>
		<comments>http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-3-sandbox-proxy/#comments</comments>
		<pubDate>Thu, 09 May 2013 18:56:15 +0000</pubDate>
		<dc:creator>Saurabh Agrawal</dc:creator>
				<category><![CDATA[Sandbox]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[ASPE]]></category>
		<category><![CDATA[ASPE-IT]]></category>
		<category><![CDATA[Sandbox Proxy]]></category>
		<category><![CDATA[Saurabh Agrawal]]></category>
		<category><![CDATA[SharePoint 2010 Sandbox Solution 3]]></category>
		<category><![CDATA[SharePoint 2010 Sandbox Solution 3 - Sandbox Proxy]]></category>

		<guid isPermaLink="false">http://aspe-it.com/blog/?p=2071</guid>
		<description><![CDATA[Now we are aware of the architecture and execution model of Sandboxed solutions. This blog is dedicated to a sample sandbox solution. Do you think it is required? I don’t think so because it’s a very straight forward task which doesn’t motivates me to dedicate a full blog J. Instead we’ll take another topic – [...]]]></description>
			<content:encoded><![CDATA[<p>Now we are aware of the architecture and execution model of Sandboxed solutions. This blog is dedicated to a sample sandbox solution. Do you think it is required? I don’t think so because it’s a very straight forward task which doesn’t motivates me to dedicate a full blog J. Instead we’ll take another topic – Sandbox Proxy or Full Trust Proxy.</p>
<p>If you want to execute full trust code in a sandbox solution then the only way of doing so is to write a Sandbox Proxy.<span id="more-2071"></span></p>
<p><a href="http://aspe-it.com/blog/wp-content/uploads/2013/05/image26.gif"><img class="alignnone size-full wp-image-2072" title="image26" src="http://aspe-it.com/blog/wp-content/uploads/2013/05/image26.gif" alt="" width="449" height="290" /></a></p>
<p>A sandbox proxy must be registered to User Code Host Service so that it can be called from a sandbox solution. Below are the steps to create and register a proxy:</p>
<h2>Step 1: Create a SharePoint Project</h2>
<ol>
<li>Create a new Empty SharePoint Project</li>
<li>Update the <strong>AssemblyInfo</strong> class file and add the following attribute to the class using Microsoft.SharePoint.UserCode;</li>
</ol>
<h2>Step 2: Create Argument Class</h2>
<ol>
<li>Add a new class “TestProxyArgs” with public access modifier</li>
<li>Add the following <strong>using</strong> statement:<br />
<em><br />
Microsoft.SharePoint.UserCode<br />
</em></li>
<li>Make the class serializable and inherit from <strong>SPProxyOperationArgs</strong> class, using the  following code:<br />
<em><br />
[serializable]<br />
</em><em><br />
<span style="color: #0000ff;">public</span></em><span style="color: #0000ff;"><em> </em><em>class</em></span><em> </em><em>TestProxyArgs : SPProxyOperationArgs { }<br />
</em></li>
<li>Add properties that you want to pass from the sandbox to the proxy. Only serializable types can be used as properties here.<span style="color: #0000ff;"><em>public string <span style="color: #000000;">TestArg { <span style="color: #0000ff;">get<span style="color: #000000;">; <span style="color: #0000ff;">set<span style="color: #000000;">; }<br />
</span></span></span></span></span></em></span></li>
<li>Add read-only properties for the type name and assembly name of the proxy operations class (which we will create in the next step). This is required in registering the proxy operation and when invoking the operation from sandboxed code. By adding these properties to the proxy arguments class, we ensure that they are available from all locations when required.</li>
<li>Add read-only properties for the type name and assembly name of the proxy operations class. The type name should be fully qualified and the assembly name should be the four-part strong name of the assembly:<br />
<em><br />
</em></li>
</ol>
<pre style="padding-left: 60px;"><span style="color: #0000ff;"><em>public</em><em> </em><em>static</em><em> </em><em>string</em></span><em> ProxyOperationTypeName</em></pre>
<pre style="padding-left: 60px;"><em>{</em></pre>
<pre style="padding-left: 60px;"><em>  </em><em><span style="color: #0000ff;">get</span></em><em> </em></pre>
<pre style="padding-left: 60px;"><em>  {</em></pre>
<pre style="padding-left: 60px;"><em>    </em><em><span style="color: #0000ff;">return</span></em><em> </em><em>"TestProxy.TestProxyOps"</em><em>;</em></pre>
<pre style="padding-left: 60px;"><em>  }</em></pre>
<pre style="padding-left: 60px;"><em>}</em></pre>
<pre style="padding-left: 60px;"><em> </em></pre>
<pre style="padding-left: 60px;"><em>public</em><em> </em><em>static</em><em> </em><em>string</em><em> ProxyAssemblyName</em></pre>
<pre style="padding-left: 60px;"><em>{</em></pre>
<pre style="padding-left: 60px;"><em>  </em><em>get</em><em> </em></pre>
<pre style="padding-left: 60px;"><em>  {</em></pre>
<pre style="padding-left: 60px;"><em>    </em><em>return</em><em> "TestProxy, Version=1.0.0.0, Culture=neutral,   </em></pre>
<pre style="padding-left: 60px;"><em>            PublicKeyToken=2dfe43bced7458f6";</em></pre>
<pre style="padding-left: 60px;"><em>  }</em></pre>
<pre style="padding-left: 60px;"><em>}</em></pre>
<h2>Step 3: Create Proxy Operations Class</h2>
<ol>
<li>Add a new class named <strong>TestProxyOps</strong> to the project.<br />
<em><br />
<span style="color: #0000ff;">public</span></em><span style="color: #0000ff;"><em> </em><em>class</em></span><em> TestProxyOps : SPProxyOperation {<br />
</em><span style="font-family: Consolas, Monaco, 'Courier New', Courier, monospace; font-size: 12px; line-height: 18px;"><br />
Override the Execute method:<br />
</span><em><br />
<span style="color: #0000ff;">p</span><span style="color: #0000ff;">ublic</span></em><span style="color: #0000ff;"><em> </em><em>override</em><em> </em><em>object</em></span><em> Execute (SPProxyOperationArgs args)<br />
</em><em><br />
{<br />
</em><em><br />
}<br />
</em><em><br />
}<br />
</em></li>
<li>In the <strong>Execute</strong> method, cast the <strong>SPProxyOperationsArgs</strong> parameter to your proxy operations argument type, which in this case is <strong>TestProxyArgs</strong>.<br />
<em><br />
<span style="color: #0000ff;">var</span></em><em> proxyArgs = args </em><em><span style="color: #0000ff;">as</span></em><em> TestProxyArgs;<br />
</em></li>
<li>Retrieve the arguments from the <em>proxy arguments</em> class and perform any full-trust logic</li>
</ol>
<pre><em><span style="color: #339966;">// Retrieve arguments from the proxy arguments class.</span></em><em> </em></pre>
<pre><em><span style="color: #0000ff;">string</span></em><em> testArg = proxyArgs.TestArg;</em></pre>
<pre><em> </em></pre>
<pre><em><span style="color: #339966;">// Perform full-trust logic; for example, call a WCF service.</span></em><em></em></pre>
<pre><em>FullTrustMethod(testArg);</em></pre>
<h2>Step 4: Register Proxy Operation</h2>
<ol>
<li>Add a new      feature named TestProxyFeature to the project</li>
<li>Make the      scope of the feature to <strong>Farm</strong></li>
<li>Add an event      receiver to the TestProxyFeature</li>
<li>Add the      following <strong>using</strong> statements to the <strong>TestProxyFeature.EventReceiver</strong> class<em><span style="color: #0000ff;">using</span> Microsoft.SharePoint.Administration;<br />
<span style="color: #0000ff;">using</span> Microsoct.SharePoint.UserCode;<br />
</em></li>
<li>Uncomment      the <strong>FeatureActivated</strong> method.</li>
<li>In the <strong>FeatureActivated</strong> method,      add the following code to retrieve the local user code service<em>SPUserCodeService userCodeSwervice = SPUserCodeService.Local;<br />
</em></li>
<li>Add the following code to create a new proxy operation type, based on your proxy operation class<span style="color: #0000ff;"><em>var <span style="color: #000000;">TestOperation = <span style="color: #0000ff;">new <span style="color: #000000;">SPProxyOperationType(<br />
TestProxyArgs.ProxyAssemblyName,<br />
TestProxyArgs.ProxyOperationTypeName);<br />
</span></span></span></em></span></li>
<li><span style="color: #0000ff;"><span style="color: #000000;"><span style="color: #0000ff;"><span style="color: #000000;">Add the following code to register your proxy operation type with the local user code service:<em>userCodeService.ProxyOperationTypes.Add(TestOperation);<br />
uswerCodeService.Update();<br />
</em></p>
<p></span></span></span></span></li>
<li><span style="color: #0000ff;"><span style="color: #000000;"><span style="color: #0000ff;"><span style="color: #000000;">Deploy your sandbox proxy to the test environment.</span></span></span></span></li>
</ol>
<h2><span style="color: #0000ff;"><span style="color: #000000;"><span style="color: #0000ff;"><span style="color: #000000;">Step 5: Use the Proxy from Sandbox Solution</span></span></span></span></h2>
<ol>
<li>In the sandboxed solution, add a reference to the sandbox proxy assembly</li>
<li>Create an instance of the <em>proxy arguments </em>class and set any property values<span style="color: #0000ff;"><em>var <span style="color: #000000;">proxyArgs = <span style="color: #0000ff;">new <span style="color: #000000;">TestProxyArgs();<br />
</span></span></span></em></span><em>proxyArgs. TestArg = <span style="color: #ff0000;">&#8220;Test Arg&#8221;<span style="color: #000000;">;<br />
</span></span></em></li>
<li> Call the <strong>SPUtility.ExecuteRegisteredProxyOperation </strong>method, passing in the assembly name of the proxy operation, the type name of the proxys class, and the <em>proxy arguments </em>instance. In this case, the assembly name and the type name are provided by static properties of the proxy arguments class, as descried in step 2.<span style="color: #0000ff;"><em>var <span style="color: #000000;">result = SPUtility.ExecuteRegisteredProxyOperation(<br />
</span></em></span><em>TestProxyArgs.ProxyAssemblyName,<br />
TestProxyArgs.ProxyOperationTypeName,<br />
proxyArgs);</em></li>
</ol>
<p><em>About the author:<br />
<strong>Saurabh Agrawal</strong> is a Microsoft Certified Professional Developer in SharePoint 2010 (MCPD) and Microsoft Certified Technology Specialist in SQL server 2008 (MCTS). He helps clients build efficient SharePoint based CMS and Enterprise wide applications, proposing architectures and solutions for their enterprise needs. He has worked on developing solutions on all major SharePoint versions like WSS 3.0, MOSS 2007 and SharePoint 2010. Along with SharePoint development, he has a broad knowledge of SharePoint administration, multi-tier farm setup, etc. His diversified business and technical skills include: Content Management, Portals &amp; Collaboration, FAST Search, Enterprise Federated Search, Business Processes &amp; Forms Management, Enterprise Social Networking and Enterprise wide SharePoint implementations.</em></p>
<p><em>More from this author:</em></p>
<ul>
<li><em><a href="http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-2-architecture-and-execution-model/">SharePoint 2010 Sandbox Solution 2 – Architecture and Execution Model</a></em></li>
<li><em><a href="http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-1-overview-of-sandboxed-solution/">SharePoint 2010 Sandbox Solution 1 – Overview of Sandboxed Solution</a></em></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://aspe-it.com/blog/2013/sharepoint-2010-sandbox-solution-3-sandbox-proxy/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
