<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-30908170</id><updated>2024-11-08T07:26:11.451-08:00</updated><category term="CRM 4.0"/><category term="CRM 2011"/><category term="Fun"/><category term="Windows"/><category term="SQL"/><category term="Powershell"/><category term="Tools"/><category term="Visual Studio"/><category term="XML"/><category term="Gaming"/><category term="MOSS"/><category term="SharePoint 2010"/><category term="Homebrew"/><category term="Windows Phone"/><category term="Coding"/><category term="Security"/><category term="Source Code"/><category term="TFS"/><category term="WCF"/><category term="XAP"/><category term="YouTube"/><category term="asp.net"/><category term="Air Mouse"/><category term="Android"/><category term="C#"/><category term="MK808"/><category term="Maps"/><category term="RC11"/><category term="Rant"/><category term="Rockchip"/><category term="Virtualization"/><category term="Workflow"/><title type='text'>the null factory</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>81</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-30908170.post-7835888116093821850</id><published>2015-01-06T09:11:00.002-08:00</published><updated>2016-01-22T01:40:23.068-08:00</updated><title type='text'>Moving to http://www.nullfactory.net</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;br /&gt;
I have moved my blog to&amp;nbsp;&lt;a href=&quot;http://www.nullfactory.net/&quot;&gt;http://www.nullfactory.net&lt;/a&gt;. The transition is pretty much done and all new posts will be published to the new location.&lt;br /&gt;
&lt;br /&gt;
Enjoy!&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/7835888116093821850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/7835888116093821850?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/7835888116093821850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/7835888116093821850'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2015/01/moving-to-httpwwwnullfactorynet.html' title='Moving to http://www.nullfactory.net'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-8253135519851448031</id><published>2014-12-24T04:07:00.002-08:00</published><updated>2014-12-24T04:08:19.727-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Powershell"/><category scheme="http://www.blogger.com/atom/ns#" term="TFS"/><title type='text'>List of Files Changed Between Changesets in Visual Studio Online using PowerShell</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
So recently I had the requirement of getting a list of files that changed between two different releases. We wanted to use this list to act as a verification to ensure that all artifacts were included in a release package.&lt;br /&gt;
&lt;br /&gt;
I modified the code posted &lt;a href=&quot;https://social.msdn.microsoft.com/Forums/vstudio/en-US/f1a00836-cef3-419b-b768-3d1b6fa2b7bc/identifying-all-vb-files-changed-between-two-changesets?forum=tfsversioncontrol&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; in order to quickly write a console application to do the task. With the immediate problem solved, my colleges and I bounced the idea about porting the code into a PowerShell script which would allow us to enhance it better in the long run.&lt;br /&gt;
&lt;br /&gt;
The solution would be built around the Visual Studio Online(VSO) REST service. This reduces any dependency on Team Foundation Server(TFS) specific client side assemblies or tools. The limitation is that, at the moment, it is only supported in Visual Studio Online and not all features are supported.&lt;br /&gt;
&lt;h3&gt;
Pre-Requisites&lt;/h3&gt;
&lt;h5&gt;
Security and Credentials&lt;/h5&gt;
In order make things simple, let&#39;s enable Alternate Authentication for access the account. This enables the script to use Basic Authentication when making request to the VSO REST service.
This can be done by navigating to the profile page, selecting &lt;code&gt;Credentials &amp;gt; Enable alternate credentials&lt;/code&gt; and providing new credential information. More instructions available &lt;a href=&quot;http://www.visualstudio.com/en-us/integrate/get-started/get-started-auth-introduction-vsi&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The credentials will be collected using the &lt;code&gt;Get-Credentials&lt;/code&gt; &lt;a href=&quot;http://technet.microsoft.com/en-us/library/hh849815.aspx&quot; target=&quot;_blank&quot;&gt;cmdlet&lt;/a&gt;. This provides the standard windows credentials dialog for the user to enter information. Since this makes the script interactive, I debated about having the username and password as a parameter for the script, but in the end decided against it. Maybe the next improvement would be to include a silent version of the script.&lt;br /&gt;
&lt;h5&gt;
The REST call&lt;/h5&gt;
&lt;code&gt;Invoke-RestMethod&lt;/code&gt; cmdlet will be used to make the actual call to the REST service. So what&#39;s the difference between &lt;code&gt;Invoke-WebRequest&lt;/code&gt; and &lt;code&gt;Invoke-RestMethod&lt;/code&gt; you may ask? While similar, the &lt;code&gt;Invoke-RestMethod&lt;/code&gt; attempts to parse the returned JSON so that we do not have to do it manually within our script. Think of it as a super set of &lt;code&gt;Invoke-WebRequest&lt;/code&gt; just like &lt;code&gt;Invoke-WebRequest&lt;/code&gt; is a superset of &lt;code&gt;System.Net.WebClient&lt;/code&gt;. Read more about it &lt;a href=&quot;http://jamesone111.wordpress.com/2014/06/09/screen-scraping-for-pleasure-or-profit-with-powershells-invoke-restmethod/&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt; and &lt;a href=&quot;http://blogs.technet.com/b/heyscriptingguy/archive/2013/10/21/invokerestmethod-for-the-rest-of-us.aspx&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I ran into strange issue when attempting to authenticate the request. The&lt;br /&gt;
&lt;code&gt;Get-Credentials&lt;/code&gt; cmdlet would return a &lt;code&gt;System.Management.Automation.PSCredential&lt;/code&gt; object as expected, but when passed into into the &lt;code&gt;Invoke-RestMethod&lt;/code&gt; cmdlet, it was not generating the the basic authentication header token within the request. I still haven&#39;t figured out why this happens, but the workaround was to add the authentication header explicitly as &lt;a href=&quot;http://stuartpreston.net/2014/05/accessing-visual-studio-online-rest-api-using-powershell-4-0-invoke-restmethod-and-alternate-credentials/&quot; target=&quot;_blank&quot;&gt;shown here&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;$basicAuth = (&quot;{0}:{1}&quot; -f $username,$password)
$basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth)
$basicAuth = [System.Convert]::ToBase64String($basicAuth)
$headers = @{Authorization=(&quot;Basic {0}&quot; -f $basicAuth)}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;
Making the call to the service&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
First get a list of changesets related to the project within the timeframe that we&#39;re interested in.  
&lt;br /&gt;

&lt;pre&gt;&lt;code&gt;https://{account}.visualstudio.com/defaultcollection/_apis/tfvc/changesets?api-version=1.0&amp;amp;searchCriteria.fromId=100&amp;amp;searchCriteria.toId=200&amp;amp;searchCriteria.itemPath=$/{project}
&lt;/code&gt;&lt;/pre&gt;
It took me a while to figure it out but you should notice this call is only allowed to be made against the entire Team Project Collection. So in order to filter out the project, provide the project path via the &lt;code&gt;searchCriteria.itemPath&lt;/code&gt; filter. That is &lt;code&gt;searchCriteria.itemPath=$/{projectname}&lt;/code&gt; where &lt;code&gt;{projectname}&lt;/code&gt; is the one that you are interested in.&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;
Next iterate through each of the results to retrieve the detailed information on of each of the changesets. This result would include a collection of all the files that were affected.&lt;br /&gt;

&lt;pre&gt;&lt;code&gt;https://{account}.visualstudio.com/defaultcollection/_apis/tfvc/changesets/{changesetId}/changes?api-version=1.0&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
Again, iterate through each of the changes and extract the &lt;code&gt;path&lt;/code&gt; property of the json result set. This is the path and name of the file.&lt;br /&gt;

&lt;/li&gt;
&lt;li&gt;Remove duplicates entries and folder creation entries as necessary.   
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
Final Thoughts&lt;/h3&gt;
You can download my implementation &lt;a href=&quot;https://github.com/shanec-/powershell/blob/master/TFS/Get-FilesModifiedByChangeset.ps1&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
The next steps would make this to its own cmdlet in order to make it more reusable in other scripts. Also check out the &lt;a href=&quot;https://curah.microsoft.com/276618/list&quot; target=&quot;_blank&quot;&gt;Curah! page&lt;/a&gt; that I created while working on this.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;
References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://social.msdn.microsoft.com/Forums/vstudio/en-US/f1a00836-cef3-419b-b768-3d1b6fa2b7bc/identifying-all-vb-files-changed-between-two-changesets?forum=tfsversioncontrol&quot; target=&quot;_blank&quot;&gt;Identifying all .vb files changed between two changesets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/hh849815.aspx&quot; target=&quot;_blank&quot;&gt;Microsoft Technet - Get-Credential&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jamesone111.wordpress.com/2014/06/09/screen-scraping-for-pleasure-or-profit-with-powershells-invoke-restmethod/&quot; target=&quot;_blank&quot;&gt;Screen scraping for pleasure or profit (with PowerShell’s Invoke-RestMethod)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.technet.com/b/heyscriptingguy/archive/2013/10/21/invokerestmethod-for-the-rest-of-us.aspx&quot; target=&quot;_blank&quot;&gt;Hey, Scripting Guy! - InvokeRestMethod for the Rest of Us&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://technet.microsoft.com/en-us/library/hh849971.aspx&quot; target=&quot;_blank&quot;&gt;Microsoft Technet - Invoke-RestMethod&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://stuartpreston.net/2014/05/accessing-visual-studio-online-rest-api-using-powershell-4-0-invoke-restmethod-and-alternate-credentials/&quot; target=&quot;_blank&quot;&gt;Accessing Visual Studio Online REST API using Powershell 4.0, Invoke-RestMethod and Alternate Credentials&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/8253135519851448031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/8253135519851448031?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/8253135519851448031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/8253135519851448031'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2014/12/list-of-files-changed-between.html' title='List of Files Changed Between Changesets in Visual Studio Online using PowerShell'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-6802554648120636941</id><published>2013-02-25T01:23:00.000-08:00</published><updated>2013-02-25T01:43:14.781-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Air Mouse"/><category scheme="http://www.blogger.com/atom/ns#" term="Android"/><category scheme="http://www.blogger.com/atom/ns#" term="MK808"/><category scheme="http://www.blogger.com/atom/ns#" term="RC11"/><category scheme="http://www.blogger.com/atom/ns#" term="Rockchip"/><title type='text'>Bind Media Keys on the RC11 Air Mouse within Android</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div align=&quot;justify&quot;&gt;
I recently bought a &lt;a href=&quot;http://www.measy.com.cn/product/showproduct48_en.htm&quot;&gt;Measy RC 11 air mouse&lt;/a&gt; to complement the Rockchip MK808&amp;nbsp; and one thing I noticed right away was that the media buttons did not function. I guessed it had something to do with key mapping and learned that Android maintains mapping information within &lt;a href=&quot;http://source.android.com/tech/input/key-layout-files.html&quot;&gt;key layout files&lt;/a&gt; in the&amp;nbsp; path. My goal would be to edit the appropriate files to map the media buttons to the key codes (scancodes). &lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
I essentially followed the instructions provided &lt;a href=&quot;http://www.thriveforums.org/forum/toshiba-thrive-development/9626-how-create-customized-keylayout-any-usb-bluetooth-keyboard-rooted.html&quot;&gt;here&lt;/a&gt; while making slight adjustments to suit my own needs. The only prerequisite being that the device needs to be rooted.&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div align=&quot;justify&quot;&gt;
The key layout files themselves can be stored in various locations and Android refers to them in the following hierarchy:&lt;/div&gt;
&lt;pre class=&quot;brush: xhtml; toolbar: false&quot;&gt;/system/usr/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/system/usr/keylayout/Vendor_XXXX_Product_XXXX.kl
/system/usr/keylayout/DEVICE_NAME.kl
/data/system/devices/keylayout/Vendor_XXXX_Product_XXXX_Version_XXXX.kl
/data/system/devices/keylayout/Vendor_XXXX_Product_XXXX.kl
/data/system/devices/keylayout/DEVICE_NAME.kl
/system/usr/keylayout/Generic.kl/data/system/devices/keylayout/Generic.kl&lt;/pre&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
As Generic.kl file acts as the default file used in the case a mapping was not found, the documentation strongly recommends that we do not modify it.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
The first step in the process was to make myself a copy of the Generic.kl using &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.estrongs.android.pop&quot;&gt;ES File Explorer File Manager&lt;/a&gt;. Temporarily rename the copy to &lt;span style=&quot;font-family: Courier;&quot;&gt;Vendor_[VendorID]_Product_[ProductID].kl&lt;/span&gt;. The [VendorID] and [ProductID] will be replaced with the proper IDs once identified.&amp;nbsp; This will be our new mapping file.&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div style=&quot;text-align: justify;&quot;&gt;
Next, we figure out the the scan codes to the media buttons using the the &lt;a href=&quot;http://github.com/chrisboyle/keytest/downloads&quot;&gt;keytest&lt;/a&gt; app written by Chris Boyle. Fortunately, the scancodes generated from the RC11 didn’t differ from the generic mapping. I updated it with my preferred mapping:&lt;/div&gt;
&lt;pre class=&quot;brush: c-sharp; toolbar: false&quot;&gt;key 62    HOME
key 63    ENVELOPE
key 64    MUSIC
key 65    MEDIA_REWIND
key 66    MEDIA_PLAY_PAUSE
key 67    MEDIA_FAST_FORWARD
key 68    VOLUME_MUTE
key 87    VOLUME_DOWN
key 88    VOLUME_UP&lt;/pre&gt;
&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
Now we identify the keyboard vendor id and product id codes. To do this I installed a copy of &lt;a href=&quot;https://play.google.com/store/apps/details?id=jackpal.androidterm&quot;&gt;Android Terminal Server Emulator&lt;/a&gt; and used the &lt;span style=&quot;font-family: Courier;&quot;&gt;&lt;strong&gt;cat /proc/bus/input/devices&lt;/strong&gt;&lt;/span&gt; command to list the details about the devices attached attached. This contains the vendor as well as the product Id that we require. &lt;/div&gt;
&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
The output should look similar to the one below:&lt;/div&gt;
&lt;pre class=&quot;brush: c-sharp; gutter: false; toolbar: false&quot;&gt;I: Bus=0003 Vendor=0c45 Product=7403 Version=0100
N: Name=&quot;SONiX USB Device&quot; 

P: Phys=usb-usb20_host-1.1.1/input0
S: Sysfs=/devices/platform/usb20_host/usb2/2-1/2-1.1/2-1.1.1/2-1.1.1:1.0/input/input9
U: Uniq=
H: Handlers=sysrq kbd event1 keychord 

I: Bus=0003 Vendor=0c45 Product=7403 Version=0100
N: Name=&quot;SONiX USB Device&quot;
P: Phys=usb-usb20_host-1.1.1/input1
S: Sysfs=/devices/platform/usb20_host/usb2/2-1/2-1.1/2-1.1.1/2-1.1.1:1.1/input/input10
U: Uniq=
H: Handlers=kbd event2 keychord
B: PROP=0&lt;/pre&gt;
Identify your device from the list and rename your previously created file to include the vendor and product Ids. Mine is now called &lt;span style=&quot;font-family: Courier;&quot;&gt;Vendor_0c45_Product_7403.kl&lt;/span&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
Now all that remains is to deploy the changes to the &lt;span style=&quot;font-family: Courier;&quot;&gt;/system/usr/keylayout/&lt;/span&gt; path. You would require root privileges to write to this folder. Once file has been copied over make sure that Group and Other entities have read permission on the file, I spent quite a bit of time trying to figuring this one out. &lt;/div&gt;
&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
Rebooting the device or re-plugging in the keyboard receiver will cause the new mapping to take effect.&lt;/div&gt;
&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
While my experience is specific to the RC11, this process can be adopted to meet your own requirements. I’ve attached my key layout file for your convenience.&lt;/div&gt;
&lt;br /&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;120&quot; scrolling=&quot;no&quot; src=&quot;https://skydrive.live.com/embed?cid=50B6C58BA4B70EAE&amp;amp;resid=50B6C58BA4B70EAE%21178&amp;amp;authkey=AKhxxvt7Ay32Jzw&quot; width=&quot;98&quot;&gt;&lt;/iframe&gt;
&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
As usual, bad things can happen when modifying system files, so please make sure to take all the appropriate precautions as well as backups. I am not responsible for anything you might break.&lt;/div&gt;
&lt;br /&gt;
&lt;div align=&quot;justify&quot;&gt;
This has been a very fun learning experience for me. Look forward to more Android related posts from in the future.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;h2&gt;
References&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://www.thriveforums.org/forum/toshiba-thrive-development/9626-how-create-customized-keylayout-any-usb-bluetooth-keyboard-rooted.html&quot; title=&quot;http://www.thriveforums.org/forum/toshiba-thrive-development/9626-how-create-customized-keylayout-any-usb-bluetooth-keyboard-rooted.html&quot;&gt;http://www.thriveforums.org/forum/toshiba-thrive-development/9626-how-create-customized-keylayout-any-usb-bluetooth-keyboard-rooted.html&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://source.android.com/tech/input/key-layout-files.html&quot; title=&quot;http://source.android.com/tech/input/key-layout-files.html&quot;&gt;http://source.android.com/tech/input/key-layout-files.html&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.armtvtech.com/armtvtechforum/viewtopic.php?f=6&amp;amp;t=752&quot; title=&quot;http://www.armtvtech.com/armtvtechforum/viewtopic.php?f=6&amp;amp;t=752&quot;&gt;http://www.armtvtech.com/armtvtechforum/viewtopic.php?f=6&amp;amp;t=752&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://chris.boyle.name/2010/08/android-keymaps&quot; title=&quot;http://chris.boyle.name/2010/08/android-keymaps&quot;&gt;http://chris.boyle.name/2010/08/android-keymaps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/6802554648120636941/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/6802554648120636941?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/6802554648120636941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/6802554648120636941'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2013/02/bind-media-keys-on-rc11-air-mouse.html' title='Bind Media Keys on the RC11 Air Mouse within Android'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-6577147103599497524</id><published>2012-11-10T08:04:00.000-08:00</published><updated>2012-11-10T08:05:04.171-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="TFS"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>TF31003 Error: TFS + Visual Studio 2012 + Windows 8 </title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I think anyone who&#39;s worked with Team Foundation Server for significant amount of time has run into this or a similar variant of the &lt;span style=&quot;font-family: Courier New, Courier, monospace;&quot;&gt;(TF31003: Either you have not entered the necessary credentials or your user account does not have permission to connect to the Team Foundation Server at https://***.visualstudio.com/. Ask your server administrator to add the appropriate permissions to your account)&lt;/span&gt; error message at least once.&amp;nbsp;I ran into it earlier today while trying to connect to the online Team Foundation Service (&lt;a href=&quot;http://tfs.visualstudio.com/&quot;&gt;http://tfs.visualstudio.com&lt;/a&gt;) using Visual Studio 2012 running on Windows 8.&lt;br /&gt;
&lt;br /&gt;
As the error code to be a generic one and covers a wide variety of issues, it took a bit of trial and error before was finally able to narrow down the issue that was ailing me:&lt;br /&gt;
&lt;a href=&quot;http://stackoverflow.com/questions/11034882/tfs-in-visual-studio-2012-under-windows-8&quot;&gt;http://stackoverflow.com/questions/11034882/tfs-in-visual-studio-2012-under-windows-8&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
As suggested, clearing all the cookies in IE resolved the issue for me.&lt;br /&gt;
&lt;br /&gt;
Here is another link to the exact problem/solution that I found after the fact:&lt;br /&gt;
&lt;a href=&quot;http://caioproiete.net/en/error-tf31003-connecting-to-tfspreview-from-visual-studio-2012/&quot;&gt;http://caioproiete.net/en/error-tf31003-connecting-to-tfspreview-from-visual-studio-2012/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/6577147103599497524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/6577147103599497524?isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/6577147103599497524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/6577147103599497524'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2012/11/tf31003-error-tfs-visual-studio-2012.html' title='TF31003 Error: TFS + Visual Studio 2012 + Windows 8 '/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-3482238546852341993</id><published>2012-05-23T14:41:00.001-07:00</published><updated>2012-05-23T14:41:30.433-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fun"/><category scheme="http://www.blogger.com/atom/ns#" term="Homebrew"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone"/><category scheme="http://www.blogger.com/atom/ns#" term="XAP"/><title type='text'>Bookmark Organizer 0.2 with SkyDrive Integration</title><content type='html'>&lt;p&gt;I am pleased to announce the latest iteration of Bookmark Organizer. It now comes with the ability to synchronize your bookmarks with SkyDrive. Please read the &lt;a href=&quot;http://nullfactory.blogspot.com/2012/04/bookmark-organizer-01-for-windows-phone.html&quot; target=&quot;_blank&quot;&gt;original post&lt;/a&gt; for application pre-requisites and installation. &lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh5.ggpht.com/-1ONnu3vzOlA/T71ZLF7b8pI/AAAAAAAAGqw/R8FW2I9RzbU/s1600-h/SplashScreenImage2.jpg&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;http://lh6.ggpht.com/-rQq9EA3mFog/T71ZM48xSiI/AAAAAAAAGq4/cH8rTf2P7kw/SplashScreenImage_thumb.jpg?imgmax=800&quot; width=&quot;148&quot; height=&quot;244&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://lh4.ggpht.com/-gIuGNebddA8/T71ZRLQCHGI/AAAAAAAAGrA/aIkUNlL_0T8/s1600-h/Screen-Capture-52.jpg&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;http://lh4.ggpht.com/-NfEpXwkCgU8/T71ZStjEowI/AAAAAAAAGrI/I--c6z8jRJs/Screen-Capture-5_thumb.jpg?imgmax=800&quot; width=&quot;148&quot; height=&quot;244&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://lh6.ggpht.com/-HxF3BZzib20/T71ZVAAEE6I/AAAAAAAAGrQ/utadskR6gFk/s1600-h/Screen-Capture-32.jpg&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;http://lh4.ggpht.com/-1ciyoBoxK2s/T71ZWp8E_PI/AAAAAAAAGrY/_6fcYpcLKN0/Screen-Capture-3_thumb.jpg?imgmax=800&quot; width=&quot;148&quot; height=&quot;244&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://lh4.ggpht.com/-LsrT8YVUwmE/T71ZYuBIWOI/AAAAAAAAGrg/LTS_aTOlK8I/s1600-h/Screen-Capture-62.jpg&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;http://lh3.ggpht.com/-O-hgKR2wWHk/T71ZaIJZmFI/AAAAAAAAGro/L43KT7aq5eQ/Screen-Capture-6_thumb.jpg?imgmax=800&quot; width=&quot;148&quot; height=&quot;244&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://lh5.ggpht.com/-6u1h2y3EsG8/T71Zc6vQawI/AAAAAAAAGrw/BlqN7nQS0dg/s1600-h/Screen-Capture2.jpg&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;http://lh5.ggpht.com/-eq9_xqSzCTI/T71Zej9VRwI/AAAAAAAAGr4/PNLuFmlaTDw/Screen-Capture_thumb.jpg?imgmax=800&quot; width=&quot;148&quot; height=&quot;244&quot; /&gt;&lt;/a&gt;&lt;a href=&quot;http://lh5.ggpht.com/-Xi5DvoFb5OI/T71ZgZCSo3I/AAAAAAAAGsA/rJQVjhheeTA/s1600-h/Screen-Capture-22.jpg&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;&quot; border=&quot;0&quot; alt=&quot;&quot; src=&quot;http://lh3.ggpht.com/-70YYUkvKdQk/T71Zh8UeSLI/AAAAAAAAGsI/fTysmtAWKCs/Screen-Capture-2_thumb.jpg?imgmax=800&quot; width=&quot;148&quot; height=&quot;244&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;h2&gt;improvements&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;Ability to synchronize with SkyDrive &lt;/li&gt;    &lt;li&gt;Various bug fixes and performance improvements &lt;/li&gt;    &lt;li&gt;Update to &lt;a href=&quot;http://www.wp7roottools.com/index.php/developer-blog/83-new-version-of-wp7-root-tools-sdk-released&quot; target=&quot;_blank&quot;&gt;WP7 Root Tools SDK 0.2.1.0 alpha&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;New splash screen :)      &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;known Limitations&lt;/h2&gt;  &lt;ul&gt;   &lt;li&gt;Synchronization is limited to the root folder of SkyDrive. I might include the ability to choose the location if there’s demand for it. &lt;/li&gt;    &lt;li&gt;The app is limited to one way synching, its either Device to SkyDrive or vice versa. Source bookmarks are mirrored to the destination. &lt;/li&gt;    &lt;li&gt;The available sync file extensions are restricted. This is a limitation imposed by SkyDrive. Please read more about it &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/live/hh826545.aspx#fileformats&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;.       &lt;br /&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;h2&gt;disclaimer&lt;/h2&gt;  &lt;p&gt;The usual disclaimer applies; I am not responsible for anything you might break by using this application. Please use at your own risk. &lt;/p&gt;  &lt;h2&gt;download&lt;/h2&gt; &lt;iframe height=&quot;120&quot; src=&quot;https://skydrive.live.com/embed?cid=50B6C58BA4B70EAE&amp;amp;resid=50B6C58BA4B70EAE%21177&amp;amp;authkey=AHSYeOYRYS6ah-k&quot; frameborder=&quot;0&quot; width=&quot;98&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;  &lt;p&gt;Please feel free to suggest any improvements and I will try to accommodate you as best as I can.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/3482238546852341993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/3482238546852341993?isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3482238546852341993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3482238546852341993'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2012/05/bookmark-organizer-02-with-skydrive.html' title='Bookmark Organizer 0.2 with SkyDrive Integration'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-rQq9EA3mFog/T71ZM48xSiI/AAAAAAAAGq4/cH8rTf2P7kw/s72-c/SplashScreenImage_thumb.jpg?imgmax=800" height="72" width="72"/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-1245357054016676358</id><published>2012-05-07T10:03:00.001-07:00</published><updated>2012-05-07T10:03:02.725-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tools"/><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><title type='text'>xsd.exe and included schemas</title><content type='html'>&lt;p&gt;Today I learned that the xsd.exe tool &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/ew6ts9yw%28v=vs.80%29.aspx&quot; target=&quot;_blank&quot;&gt;ignores all xsd:import statements&lt;/a&gt;. And the workaround is to explicitly provide all the schemas as command line arguments.&lt;/p&gt;  &lt;p&gt;&lt;font face=&quot;Courier New&quot;&gt;xsd.exe MainSchema.xsd&amp;#160; Reference1.xsd Reference2.xsd&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;According to the post &lt;a href=&quot;http://www.hanselman.com/blog/XSDexeIsKickingMyButtManredux.aspx&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;, the fact that the W3C Schema spec describes the schemaLocation attribute as a &lt;em&gt;hint, &lt;/em&gt;not a true location might be a plausible reason to this behavior.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/1245357054016676358/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/1245357054016676358?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/1245357054016676358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/1245357054016676358'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2012/05/xsdexe-and-included-schemas.html' title='xsd.exe and included schemas'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-680665636042953926</id><published>2012-04-30T00:35:00.000-07:00</published><updated>2012-05-01T00:42:35.466-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>Visually Differentiate Dynamics CRM 2011 Environments (alternate)</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I am a big fan of &lt;a href=&quot;http://blog.sonomapartners.com/2010/05/visually-differentiate-your-crm-environments.html&quot; target=&quot;_blank&quot;&gt;this hack&lt;/a&gt; to visually differentiate CRM environments and have been using it religiously in all CRM environments I have worked on. &lt;br /&gt;
I have since found an implementation of for CRM 2011 &lt;a href=&quot;http://blog.dorrekens.com/index.php/list/81-environment-color-change&quot; target=&quot;_blank&quot;&gt;here&lt;/a&gt;. Although it served its purpose, I was not quite comfortable with changing the ribbon styles as it could be a annoyance when designing/implementing ribbon icons. So here is my take on it:&lt;br /&gt;
There are 2 files that require modification; &lt;b&gt;main.css.aspx&lt;/b&gt; and &lt;b&gt;theme.css.aspx&lt;/b&gt; (The theme.css.aspx file only needs to be modified if you want this to work with read-only forms). You can find them both under &lt;b&gt;%programfiles%\Microsoft Dynamics CRM\CRMWeb\_common\styles&lt;/b&gt; folder. &lt;br /&gt;
&lt;b&gt;&lt;br /&gt;main.css.aspx&lt;/b&gt;&lt;br /&gt;
&lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:929fbe38-563d-4b98-8607-4cf10ad334cd&quot; style=&quot;display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;pre class=&quot;brush: css;&quot;&gt;div.ms-crm-TopBarContainerGlobal
{
/* background-repeat: no-repeat;
background-color: #ffffff; */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=&#39;#00ff00&#39;, endColorstr=&#39;#0100ff&#39;,GradientType=1 ); /* IE6-9 */
}

div.ms-crm-TopBarContainerForm
{
/* background-repeat : repeat-x; */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=&#39;#00ff00&#39;, endColorstr=&#39;#0100ff&#39;,GradientType=1 ); /* IE6-9 */
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;b&gt;themes.css.aspx&lt;/b&gt; &lt;br /&gt;
&lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:cf9b6bea-4e4e-4aa0-8636-f114811f1d08&quot; style=&quot;display: inline; float: none; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;pre class=&quot;brush: css;&quot;&gt;div.ms-crm-ToolBar
{
&amp;lt;%--&amp;lt;% = this.GetStyleCss(CrmTheme.Current.Form.ToolBar) %&amp;gt;--%&amp;gt;
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr=&#39;#00ff00&#39;, endColorstr=&#39;#0100ff&#39;,GradientType=1 ); /* IE6-9 */
}&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
The gradients were generated using &lt;a href=&quot;http://www.colorzilla.com/gradient-editor/&quot; target=&quot;_blank&quot;&gt;CSS gradient editor&lt;/a&gt;. &lt;br /&gt;
&lt;br /&gt;
IIS Reset for the changes to take effect.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An here is the end result:&lt;br /&gt;
&lt;a href=&quot;http://lh4.ggpht.com/-RPTtSrGqro4/T5-S_oa6eOI/AAAAAAAAGkU/T9aruUpcF1g/s1600-h/image%25255B4%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;45&quot; src=&quot;http://lh4.ggpht.com/-6GH4A-hs0T0/T5-TBc_rX6I/AAAAAAAAGkc/KxRm4wlKPDQ/image_thumb%25255B2%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;528&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://lh5.ggpht.com/-l3VMGIeBrsg/T5-TDOINiyI/AAAAAAAAGkk/WvhmWfCwDPo/s1600-h/image%25255B23%25255D.png&quot;&gt;&lt;img alt=&quot;image&quot; border=&quot;0&quot; height=&quot;28&quot; src=&quot;http://lh3.ggpht.com/-HNt5huoQgM0/T5-TE7LEV-I/AAAAAAAAGks/QeMWLF0zn7U/image_thumb%25255B15%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;image&quot; width=&quot;529&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
As this is an un-supported change, you would not be able to implement this in a CRM Online environment. Here is an &lt;a href=&quot;http://crmblog.sentri.com/2012/03/differentiating-between-test-and.html&quot; target=&quot;_blank&quot;&gt;alternate solution&lt;/a&gt; that works well with CRM Online.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/680665636042953926/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/680665636042953926?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/680665636042953926'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/680665636042953926'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2012/04/visually-differentiate-dynamics-crm.html' title='Visually Differentiate Dynamics CRM 2011 Environments (alternate)'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh4.ggpht.com/-6GH4A-hs0T0/T5-TBc_rX6I/AAAAAAAAGkc/KxRm4wlKPDQ/s72-c/image_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-3080900392046364226</id><published>2012-04-28T14:28:00.001-07:00</published><updated>2012-05-23T14:54:17.095-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Fun"/><category scheme="http://www.blogger.com/atom/ns#" term="Homebrew"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone"/><category scheme="http://www.blogger.com/atom/ns#" term="XAP"/><title type='text'>Bookmark Organizer 0.1 for Windows Phone 7.5</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
&lt;div style=&quot;color: red;&quot;&gt;
&lt;b&gt;UPDATE: &lt;a href=&quot;http://nullfactory.blogspot.com/2012/05/bookmark-organizer-02-with-skydrive.html&quot;&gt; Version 0.2 is released!&lt;/a&gt;&lt;/b&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
I saw a tweet a few days back where someone wanted to sync favorites within windows phone. Unfortunately, the current iteration of the OS does not allow developers that level of access to their favorites. I was curious if it was still achievable, at least via un-supported means and this app was the result.&lt;br /&gt;&lt;br /&gt;
A little research revealed that the phone stores the favorites as &lt;a href=&quot;http://www.cyanwerks.com/file-format-url.html&quot; target=&quot;_blank&quot;&gt;url&lt;/a&gt; files within the &lt;span style=&quot;font-family: Courier New;&quot;&gt;&lt;b&gt;\Windows\Favorites&lt;/b&gt;&lt;/span&gt; folder and that Internet Explorer treats every file with a “.url” extension as a favorite entry. It was only a matter of reading and manipulating these files.&lt;br /&gt;&lt;br /&gt;
This initial version allows to do basic CRUD operations on the available bookmarks and also import from a hosted CSV file. The CSV file itself should be a valid 2 columned file containing the Title and Url of the bookmark.&lt;br /&gt;
The app is built around the &lt;a href=&quot;http://www.wp7roottools.com/index.php/downloads&quot; target=&quot;_blank&quot;&gt;WP7 Root Tools SDK 0.1.6.0 alpha&lt;/a&gt; which does most of the heavy lifting. &lt;br /&gt;&lt;br /&gt;
&lt;h2&gt;Pre-requisites:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;An Interop-Unlocked Windows Phone running Mango (7.5) &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.wp7roottools.com/&quot; target=&quot;_blank&quot;&gt;WP7 Root Tools by Heathcliff74&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h2&gt;Installation:&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Download and deploy the XAP file using your favorite deployment tool. &lt;/li&gt;
&lt;li&gt;Make &lt;i&gt;Bookmarks Organizer&lt;/i&gt; a trusted app using WP7 Root Tools &lt;/li&gt;
&lt;/ol&gt;
&lt;br /&gt;
&lt;h2&gt;Future version:&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The ability to do 2 way sync with a cloud service. &lt;/li&gt;
&lt;li&gt;Improved UI maybe? &lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h2&gt;Disclaimer:&lt;/h2&gt;
This app interacts with system files that were not meant to be accessed. I hold no responsibility if your phone gets ‘bricked’, blows up or any other unfortunate mishap by using this application. Please use at your own risk. &lt;br /&gt;
Please feel free to email me your comments, feature requests or bugs.&lt;br /&gt;&lt;br /&gt;
&lt;h2&gt;Download:&lt;/h2&gt;
&lt;iframe frameborder=&quot;0&quot; height=&quot;120&quot; scrolling=&quot;no&quot; src=&quot;https://skydrive.live.com/embed?cid=50B6C58BA4B70EAE&amp;amp;resid=50B6C58BA4B70EAE%21176&amp;amp;authkey=APpBPmqo8qYvx9k&quot; width=&quot;98&quot;&gt;&lt;/iframe&gt;  &lt;/div&gt;
&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/3080900392046364226/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/3080900392046364226?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3080900392046364226'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3080900392046364226'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2012/04/bookmark-organizer-01-for-windows-phone.html' title='Bookmark Organizer 0.1 for Windows Phone 7.5'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-3504692737389757816</id><published>2012-04-19T13:18:00.001-07:00</published><updated>2012-04-19T13:18:30.490-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Homebrew"/><category scheme="http://www.blogger.com/atom/ns#" term="Rant"/><category scheme="http://www.blogger.com/atom/ns#" term="Windows Phone"/><title type='text'>Flashing OEM ROM on Samsung Focus</title><content type='html'>&lt;p&gt;I flashed my Samsung Focus using the &lt;a href=&quot;http://forum.xda-developers.com/showthread.php?t=1131022&quot; target=&quot;_blank&quot;&gt;Rogers OEM ROM&lt;/a&gt; the other day and then followed the update method &lt;a href=&quot;http://forum.xda-developers.com/showthread.php?t=1306415&quot; target=&quot;_blank&quot;&gt;described here&lt;/a&gt; to get back to 7.10.8107.79 within 30 mins.&lt;/p&gt;  &lt;p&gt;Why? Because my Samsung Focus is finicky on the best of days. More so when it comes to pushing updates via Zune. It was a nightmare getting Mango on it when it was first release, I kept hitting the dreaded 80180048 error. And my slow as molasses internet connection was not helping; constantly re-downloading 160+ Megs of updates for each failure was painful to say the least. My best guess was something somewhere was timing out. And I was not too keen on going through that whole process again.&lt;/p&gt;  &lt;p&gt;Followed everything described on the thread. Although I didn’t install the OEM drivers that were provided, I let Zune pick them out for me and this is what it got me:&lt;/p&gt;  &lt;p&gt;This one brings the firmware up to 2124.11.8.1: &lt;a href=&quot;http://download.windowsupdate.com/msdownload/update/software/dflt/2011/08/404680_i917rrwckh1_prod.pks_c73375d693c8eae569b062eefedea268bbe907d1.cab&quot;&gt;http://download.windowsupdate.com/msdownload/update/software/dflt/2011/08/404680_i917rrwckh1_prod.pks_c73375d693c8eae569b062eefedea268bbe907d1.cab&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;And this to 2124.11.9.4: &lt;a href=&quot;http://download.windowsupdate.com/msdownload/update/software/dflt/2011/10/417964_i917rrwcki4_prod.pks_1636e51c72b74f38ddfdf77ee9bbf5b2efb1d732.cab&quot;&gt;http://download.windowsupdate.com/msdownload/update/software/dflt/2011/10/417964_i917rrwcki4_prod.pks_1636e51c72b74f38ddfdf77ee9bbf5b2efb1d732.cab&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The above links were not present on the original thread at the time of writing, I hope it helps someone else out there.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/3504692737389757816/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/3504692737389757816?isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3504692737389757816'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3504692737389757816'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2012/04/flashing-oem-rom-on-samsung-focus.html' title='Flashing OEM ROM on Samsung Focus'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-4814732161148668017</id><published>2012-04-13T03:47:00.001-07:00</published><updated>2012-04-13T03:53:18.322-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>Listing of Form Mode For Organization Users</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
With rollup update 7, Dynamics CRM introduced &lt;a href=&quot;http://blogs.msdn.com/b/crm/archive/2012/03/22/read-optimized-forms.aspx&quot; target=&quot;_blank&quot;&gt;Read-Optimized Forms&lt;/a&gt; and gave administrators the ability to set the default Form Mode for all users within the organization. It also provides the option to allow users to override this selection as well.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://lh3.ggpht.com/-aCHUvE8Aqts/T4gEEl0Y_rI/AAAAAAAAGck/p7vjZUXqC-E/s1600-h/Dynamics%252520CRM%252520Default%252520Viewing%252520Mode%25255B4%25255D.png&quot;&gt;&lt;img alt=&quot;Dynamics CRM Default Viewing Mode&quot; border=&quot;0&quot; height=&quot;224&quot; src=&quot;http://lh3.ggpht.com/-epLQlvRgryw/T4gEGmBMwSI/AAAAAAAAGcs/98WJJAvsnFE/Dynamics%252520CRM%252520Default%252520Viewing%252520Mode_thumb%25255B2%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;Dynamics CRM Default Viewing Mode&quot; width=&quot;471&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://lh5.ggpht.com/-xE2HDBjcLq4/T4gEIU3TgDI/AAAAAAAAGc0/cgpSy8FDtP0/s1600-h/Dynamics%252520CRM%252520Default%252520Individual%25255B8%25255D.png&quot;&gt;&lt;img alt=&quot;Dynamics CRM Default Individual&quot; border=&quot;0&quot; height=&quot;142&quot; src=&quot;http://lh6.ggpht.com/-ldQNWJXKzlY/T4gEKLQ1sNI/AAAAAAAAGc8/aj4_la9P7WQ/Dynamics%252520CRM%252520Default%252520Individual_thumb%25255B4%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-bottom-width: 0px; border-left-width: 0px; border-right-width: 0px; border-top-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;Dynamics CRM Default Individual&quot; width=&quot;332&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
If the latter option is enabled, I noticed that CRM does not provide administrators a way to view the user’s selection. This information is not available in any of the out of the box views nor can it be added as the &lt;b&gt;Form Mode&lt;/b&gt; selection is stored within the UserSettings entity. &lt;br /&gt;
The following FetchXml used within a SSRS report should fill the requirement gap:&lt;br /&gt;
&lt;div class=&quot;wlWriterEditableSmartContent&quot; id=&quot;scid:f32c3428-b7e9-4f15-a8ea-c502c7ff2e88:50eb9f06-03bb-4678-85fc-257f4bd6d21a&quot; style=&quot;display: inline; margin: 0px; padding-bottom: 0px; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot;&gt;
&lt;pre class=&quot;brush: xml;&quot;&gt;&amp;lt;fetch mapping=&quot;logical&quot; count=&quot;50&quot; version=&quot;1.0&quot;&amp;gt;
  &amp;lt;entity name=&quot;systemuser&quot;&amp;gt;
    &amp;lt;attribute name=&quot;address1_telephone1&quot; /&amp;gt;
    &amp;lt;attribute name=&quot;businessunitid&quot; /&amp;gt;
    &amp;lt;attribute name=&quot;fullname&quot; /&amp;gt;
    &amp;lt;attribute name=&quot;siteid&quot; /&amp;gt;
    &amp;lt;attribute name=&quot;title&quot; /&amp;gt;
    &amp;lt;filter&amp;gt;
      &amp;lt;condition attribute=&quot;isdisabled&quot; operator=&quot;eq&quot; value=&quot;0&quot; /&amp;gt;
    &amp;lt;/filter&amp;gt;
    &amp;lt;link-entity alias=&quot;settings&quot; name=&quot;usersettings&quot; from=&quot;systemuserid&quot; to=&quot;systemuserid&quot;&amp;gt;
      &amp;lt;attribute name=&quot;entityformmode&quot; /&amp;gt;
    &amp;lt;/link-entity&amp;gt;
  &amp;lt;/entity&amp;gt;
&amp;lt;/fetch&amp;gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;br /&gt;
&lt;a href=&quot;http://lh3.ggpht.com/-Z-kcNgpTc4I/T4gELuREHqI/AAAAAAAAGdE/8nbPz_CLALA/s1600-h/Read-Optimized%252520Forms%252520Enabled%252520Users%25255B4%25255D.png&quot;&gt;&lt;img alt=&quot;Read-Optimized Forms Enabled Users&quot; border=&quot;0&quot; height=&quot;186&quot; src=&quot;http://lh3.ggpht.com/-ytkI_BZWq74/T4gENhVAKkI/AAAAAAAAGdM/ffX_fm6Hflg/Read-Optimized%252520Forms%252520Enabled%252520Users_thumb%25255B2%25255D.png?imgmax=800&quot; style=&quot;background-image: none; border-width: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;&quot; title=&quot;Read-Optimized Forms Enabled Users&quot; width=&quot;484&quot; /&gt;&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And best of all, this method is fully supported.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/4814732161148668017/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/4814732161148668017?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/4814732161148668017'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/4814732161148668017'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2012/04/listing-of-form-mode-for-organization.html' title='Listing of Form Mode For Organization Users'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-epLQlvRgryw/T4gEGmBMwSI/AAAAAAAAGcs/98WJJAvsnFE/s72-c/Dynamics%252520CRM%252520Default%252520Viewing%252520Mode_thumb%25255B2%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-5908849728400399144</id><published>2012-04-12T04:29:00.001-07:00</published><updated>2012-04-12T04:29:00.804-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>Calculated Fields In Dynamics CRM Read Optimized Forms</title><content type='html'>&lt;p&gt;The latest &lt;a href=&quot;http://www.microsoft.com/download/en/details.aspx?id=29221&quot; target=&quot;_blank&quot;&gt;rollup update&lt;/a&gt; introduced a new feature called Read Optimized Forms. This enables a read-only version of the entity forms that optimized for users that want to rapidly read data instead of editing them. &lt;/p&gt;  &lt;p&gt;One of the pre-requisites in the current implementation is that the form should be devoid of all script customizations. If so, how would you work around a situation where the form requires values to be dynamically calculated.&lt;/p&gt;  &lt;p&gt;One of the &lt;a href=&quot;http://msdn.microsoft.com/en-us/library/hh913610.aspx&quot; target=&quot;_blank&quot;&gt;recommended approaches&lt;/a&gt;, as defined in the SDK, is to use a synchronous sandbox plugin running on the &lt;strong&gt;Retrieve&lt;/strong&gt; message of the entity.&lt;/p&gt;  &lt;p&gt;The following code snippet demonstrates this:&lt;/p&gt;  &lt;div style=&quot;border-bottom: #000080 1px solid; border-left: #000080 1px solid; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; color: #000; font-size: 10pt; border-top: #000080 1px solid; border-right: #000080 1px solid&quot;&gt;   &lt;div style=&quot;background: #fff; max-height: 400px; overflow: auto&quot;&gt;     &lt;ol style=&quot;padding-bottom: 0px; margin: 0px; padding-left: 5px; padding-right: 0px; background: #3f3f3f; padding-top: 0px&quot;&gt;       &lt;li&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;protected&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;void&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; ExecuteDynamicCalculationPlugin(&lt;/span&gt;&lt;span style=&quot;color: #efefaf&quot;&gt;LocalPluginContext&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; localContext)&lt;/span&gt; &lt;/li&gt;        &lt;li style=&quot;background: #333333&quot;&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;{&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; (localContext == &lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;)&lt;/span&gt; &lt;/li&gt;        &lt;li style=&quot;background: #333333&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;throw&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;new&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #efefaf&quot;&gt;ArgumentNullException&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #dca3a3&quot;&gt;&amp;quot;localContext&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;);&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&amp;#160; &lt;/li&gt;        &lt;li style=&quot;background: #333333&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #7d9b7d&quot;&gt;//The OutputParameters property bag contains the result of the core operation.&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #efefaf&quot;&gt;Entity&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; outEntity = localContext.PluginExecutionContext.OutputParameters[&lt;/span&gt;&lt;span style=&quot;color: #dca3a3&quot;&gt;&amp;quot;BusinessEntity&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;] &lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;as&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #efefaf&quot;&gt;Entity&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;;&lt;/span&gt; &lt;/li&gt;        &lt;li style=&quot;background: #333333&quot;&gt;&amp;#160; &lt;/li&gt;        &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #7d9b7d&quot;&gt;//Ensure values are valid to perform calculation&lt;/span&gt; &lt;/li&gt;        &lt;li style=&quot;background: #333333&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;if&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; (outEntity.Attributes.Contains(&lt;/span&gt;&lt;span style=&quot;color: #dca3a3&quot;&gt;&amp;quot;null_hours&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;) &amp;amp;&amp;amp; &lt;/span&gt;&lt;/li&gt;        &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;outEntity.Attributes.Contains(&lt;/span&gt;&lt;span style=&quot;color: #dca3a3&quot;&gt;&amp;quot;null_days&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;))&lt;/span&gt; &lt;/li&gt;        &lt;li style=&quot;background: #333333&quot;&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;{&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; hours = (&lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;)outEntity.Attributes[&lt;/span&gt;&lt;span style=&quot;color: #dca3a3&quot;&gt;&amp;quot;null_hours&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;];&lt;/span&gt; &lt;/li&gt;        &lt;li style=&quot;background: #333333&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;&lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt; days = (&lt;/span&gt;&lt;span style=&quot;color: #dac6a5&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;)outEntity.Attributes[&lt;/span&gt;&lt;span style=&quot;color: #dca3a3&quot;&gt;&amp;quot;null_days&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;];&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&amp;#160; &lt;/li&gt;        &lt;li style=&quot;background: #333333&quot;&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;outEntity.Attributes[&lt;/span&gt;&lt;span style=&quot;color: #dca3a3&quot;&gt;&amp;quot;null_hours&amp;quot;&lt;/span&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;] = hours * days;&lt;/span&gt; &lt;/li&gt;        &lt;li&gt;&amp;#160;&amp;#160;&amp;#160; &lt;span style=&quot;color: #d7d7c8&quot;&gt;}&lt;/span&gt; &lt;/li&gt;        &lt;li style=&quot;background: #333333&quot;&gt;&lt;span style=&quot;color: #d7d7c8&quot;&gt;}&lt;/span&gt; &lt;/li&gt;     &lt;/ol&gt;   &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;&lt;a href=&quot;http://lh3.ggpht.com/-fZgy2p1Xln0/T4a8c1RF6fI/AAAAAAAAGb4/AL6T_Z19I4g/s1600-h/crm2011%252520post%252520event%252520registration%25255B14%25255D.png&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;PostOutsideTransaction Retrieve Message&quot; border=&quot;0&quot; alt=&quot;crm2011 post event registration&quot; src=&quot;http://lh3.ggpht.com/-39n2vbo48g4/T4a8eaI37pI/AAAAAAAAGcA/gFRScPrk8qM/crm2011%252520post%252520event%252520registration_thumb%25255B10%25255D.png?imgmax=800&quot; width=&quot;545&quot; height=&quot;38&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And the plugin is registered as &lt;strong&gt;PostOutsideTransaction&lt;/strong&gt; on the &lt;strong&gt;Retrieve &lt;/strong&gt;event of the entity with the assembly under Sandbox isolation. This approach would also work on Online solutions as well.&lt;/p&gt;  &lt;p&gt;Please beware of long running calculations as they are now being done synchronously as opposed to being done asynchronously through JavaScript.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/5908849728400399144/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/5908849728400399144?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/5908849728400399144'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/5908849728400399144'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2012/04/calculated-fields-in-dynamics-crm-read.html' title='Calculated Fields In Dynamics CRM Read Optimized Forms'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh3.ggpht.com/-39n2vbo48g4/T4a8eaI37pI/AAAAAAAAGcA/gFRScPrk8qM/s72-c/crm2011%252520post%252520event%252520registration_thumb%25255B10%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-3175959187188109193</id><published>2012-04-08T03:56:00.001-07:00</published><updated>2012-04-08T03:56:02.083-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>Dynamics CRM Security Role with Minimum Permission</title><content type='html'>&lt;p&gt;When it comes to software solutions, it is always best practice to follow the &lt;a href=&quot;http://en.wikipedia.org/wiki/Principle_of_least_privilege&quot;&gt;Principal Least Privilege&lt;/a&gt;. This is no different with Dynamics CRM 2011. This post will provide you will basic instructions in creating a security role with the least privileges.&lt;/p&gt;  &lt;p&gt;The help page in the Security Role entity under the “Create or edit a security role” topic already provides a pretty good summary of the minimum privileges required:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;It&#39;s helpful to keep in mind the minimum privileges you need to define for some common tasks. These include: &lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;When logging in to Microsoft Dynamics CRM:        &lt;ol&gt;         &lt;li&gt;To render the home page: &lt;strong&gt;prvReadWebResource&lt;/strong&gt;, &lt;strong&gt;prvReadCustomization&lt;/strong&gt; &lt;/li&gt;          &lt;li&gt;To render an entity grid (that is, to view lists of records and other data): Read privilege on the entity, &lt;strong&gt;prvReadUserSettings&lt;/strong&gt;, &lt;strong&gt;prvReadQuery&lt;/strong&gt; &lt;/li&gt;          &lt;li&gt;To view single entities in detail: Read privilege on the entity, &lt;strong&gt;prvReadSystemForm&lt;/strong&gt;, &lt;strong&gt;prvCreateUserEntityUISettings&lt;/strong&gt;, &lt;strong&gt;prvReadUserEntityUISettings&lt;/strong&gt; &lt;/li&gt;       &lt;/ol&gt;     &lt;/li&gt;      &lt;li&gt;When logging in to Microsoft Dynamics CRM for Outlook:        &lt;ol&gt;         &lt;li&gt;To render navigation for Microsoft Dynamics CRM and all Microsoft Dynamics CRM buttons: &lt;strong&gt;prvReadEntity&lt;/strong&gt;, &lt;strong&gt;prvReadQuery&lt;/strong&gt; &lt;/li&gt;          &lt;li&gt;To render an entity grid: Read privilege on the entity, &lt;strong&gt;prvReadCustomization&lt;/strong&gt;, &lt;strong&gt;prvReadWebResource&lt;/strong&gt;, &lt;strong&gt;prvReadUserQuery&lt;/strong&gt; &lt;/li&gt;          &lt;li&gt;To render entities: Read privilege on the entity, &lt;strong&gt;prvReadSystemForm&lt;/strong&gt;, &lt;strong&gt;prvCreateUserEntityUISettings&lt;/strong&gt;, &lt;strong&gt;prvReadUserEntityUISettings&lt;/strong&gt;, &lt;strong&gt;prvWriteUserEntityUISettings&lt;/strong&gt; &lt;/li&gt;       &lt;/ol&gt;     &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;p&gt;So suppose I want a user to have minimum read permission to a Custom Entity and for him to view records that have been assigned to him. I would add the following permission:&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Basic Read Permission on your entity (&lt;strong&gt;prvRead[entityName]&lt;/strong&gt;)&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/-muhn3QbIgzU/T4FuW5XDIAI/AAAAAAAAGZk/4OOAZR7igL0/s1600-h/EntityReadPermission%25255B6%25255D.png&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;EntityReadPermission&quot; border=&quot;0&quot; alt=&quot;EntityReadPermission&quot; src=&quot;http://lh6.ggpht.com/-JcAXQ5pi3a0/T4FuanR2B5I/AAAAAAAAGZs/Rku66QdH58w/EntityReadPermission_thumb%25255B4%25255D.png?imgmax=800&quot; width=&quot;472&quot; height=&quot;61&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Access to Viewing the entity grid and entity forms (&lt;strong&gt;prvReadQuery, prvReadSystemForm&lt;/strong&gt;)&lt;/u&gt;     &lt;br /&gt;&lt;font size=&quot;1&quot;&gt;As well as the permissions that are added by default (&lt;strong&gt;prvReadSdkMessage, prvReadSdkMessageProcessingStepImage, prvReadSdkMessageProcessingStep, prvReadPluginAssembly, prvReadPluginType&lt;/strong&gt;) These permissions are required for smooth operations of internal operations such as core CRM plugins.&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-a_daRRshClk/T4Fudp4mjJI/AAAAAAAAGZ0/QCJ2aTkBvZE/s1600-h/Forms%252520and%252520Views%25255B5%25255D.png&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;Forms and Views&quot; border=&quot;0&quot; alt=&quot;Forms and Views&quot; src=&quot;http://lh3.ggpht.com/-GSR_g5zq5c0/T4FuhjMPbSI/AAAAAAAAGZ8/r1w3DNp_rO4/Forms%252520and%252520Views_thumb%25255B3%25255D.png?imgmax=800&quot; width=&quot;472&quot; height=&quot;374&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;The UserEntity UI Settings provides access to the functionality to remember the user’s last accessed Form (&lt;strong&gt;prvCreateUserEntityUISettings, prvReadUserEntityUISettings&lt;/strong&gt;)&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh4.ggpht.com/-PFYBcX-osh4/T4FujodMZfI/AAAAAAAAGaE/ixzQwFvQPUA/s1600-h/User%252520UI%252520Settings%25255B3%25255D.png&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;User UI Settings&quot; border=&quot;0&quot; alt=&quot;User UI Settings&quot; src=&quot;http://lh3.ggpht.com/-exyskQI3E0Q/T4FunZSULxI/AAAAAAAAGaM/xGwGjMQjO48/User%252520UI%252520Settings_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;470&quot; height=&quot;51&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Permission to access User Preferences (prvReadUserSettings)&lt;/u&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href=&quot;http://lh6.ggpht.com/-TSyexSB_53Y/T4FuqX__M5I/AAAAAAAAGaU/H8HtCkZh0YQ/s1600-h/UserSettings%25255B3%25255D.png&quot;&gt;&lt;img style=&quot;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&quot; title=&quot;UserSettings&quot; border=&quot;0&quot; alt=&quot;UserSettings&quot; src=&quot;http://lh5.ggpht.com/-eTatq98NkcE/T4Fuux_kd_I/AAAAAAAAGac/0iRlgxlzYH4/UserSettings_thumb%25255B1%25255D.png?imgmax=800&quot; width=&quot;472&quot; height=&quot;45&quot; /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also keep in mind that when designing security roles, a good understanding of the organization structure and deployed CRM solutions is key to success. As it is possible that there are additional plugins and workflows running in the background that require additional permissions.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/3175959187188109193/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/3175959187188109193?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3175959187188109193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3175959187188109193'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2012/04/dynamics-crm-security-role-with-minimum.html' title='Dynamics CRM Security Role with Minimum Permission'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://lh6.ggpht.com/-JcAXQ5pi3a0/T4FuanR2B5I/AAAAAAAAGZs/Rku66QdH58w/s72-c/EntityReadPermission_thumb%25255B4%25255D.png?imgmax=800" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-2592128057301582614</id><published>2011-02-10T10:34:00.001-08:00</published><updated>2011-02-10T10:34:51.564-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>Dynamics CRM 2011 Developer Training Kit</title><content type='html'>&lt;p&gt;Developer Training Kit has &lt;a href=&quot;http://blogs.msdn.com/b/girishr/archive/2011/02/09/dynamics-crm-2011-developer-training-kit.aspx&quot;&gt;just been released&lt;/a&gt;. Get it &lt;a href=&quot;http://blogs.msdn.com/b/girishr/archive/2011/02/09/dynamics-crm-2011-developer-training-kit.aspx&quot;&gt;here&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/2592128057301582614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/2592128057301582614?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/2592128057301582614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/2592128057301582614'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2011/02/dynamics-crm-2011-developer-training.html' title='Dynamics CRM 2011 Developer Training Kit'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-4542923342976672214</id><published>2011-02-01T22:14:00.000-08:00</published><updated>2011-02-01T23:25:24.746-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>Dynamics CRM 2011 Books</title><content type='html'>https://community.dynamics.com/roletailored/customerservice/b/cscrmblog/archive/2011/02/01/microsoft-dynamics-crm-2011-book-club.aspx&lt;br /&gt;&lt;br /&gt;Pretty impressive line up of Dynamics CRM 2011 books to be released during this year. Its going to be an interesting year ahead.</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/4542923342976672214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/4542923342976672214?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/4542923342976672214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/4542923342976672214'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2011/02/dynamics-crm-2011-books.html' title='Dynamics CRM 2011 Books'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-1433954902620260533</id><published>2011-01-16T21:52:00.000-08:00</published><updated>2011-01-16T22:00:48.442-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>Whitepaper for ISV and Developers</title><content type='html'>The November release of the Whitepaper for ISVs and Developers can be found here. Its a nice presentation of the available customization options without diving too deep into the technical details.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://community.dynamics.com/product/crm/crmtechnical/b/crmteamblog/archive/2010/11/10/new-microsoft-dynamics-crm-2011-whitepaper-for-isvs-and-developers.aspx&quot;&gt;http://community.dynamics.com/product/crm/crmtechnical/b/crmteamblog/archive/2010/11/10/new-microsoft-dynamics-crm-2011-whitepaper-for-isvs-and-developers.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/1433954902620260533/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/1433954902620260533?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/1433954902620260533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/1433954902620260533'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2011/01/whitepaper-for-isv-and-developers.html' title='Whitepaper for ISV and Developers'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-2494129996993951859</id><published>2011-01-14T06:17:00.000-08:00</published><updated>2011-01-15T06:18:31.626-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 4.0"/><title type='text'>CRM 4.0 Update Rollup 15 released</title><content type='html'>&lt;p&gt;I really appreciate the frequency in which the updates are released. Find more information about the update here:&lt;/p&gt;  &lt;p&gt;&lt;a title=&quot;http://blogs.msdn.com/b/crm/archive/2011/01/13/update-rollup-15-for-microsoft-dynamics-crm-4-0.aspx&quot; href=&quot;http://blogs.msdn.com/b/crm/archive/2011/01/13/update-rollup-15-for-microsoft-dynamics-crm-4-0.aspx&quot;&gt;http://blogs.msdn.com/b/crm/archive/2011/01/13/update-rollup-15-for-microsoft-dynamics-crm-4-0.aspx&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/2494129996993951859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/2494129996993951859?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/2494129996993951859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/2494129996993951859'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2011/01/crm-40-update-rollup-15-released.html' title='CRM 4.0 Update Rollup 15 released'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-5869337521942940181</id><published>2011-01-13T00:37:00.000-08:00</published><updated>2011-01-13T00:38:11.837-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>Count Down to Dynamics CRM 2011</title><content type='html'>&lt;img style=&quot;visibility: hidden; width: 0px; height: 0px;&quot; src=&quot;http://c.gigcount.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyOTQ5MDc3OTE*NDYmcHQ9MTI5NDkwNzc5MjkwNiZwPTE2MjEwNjImZD*mZz*yJm89NGIzMzcxOTEzMjAzNDZlM2Iz/OTY2YmI1NTQ1Y2NlNDImb2Y9MA==.gif&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; /&gt;&lt;object classid=&quot;clsid:D27CDB6E-AE6D-11cf-96B8-444553540000&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=FlashPlayer10,0,0,0&quot; id=&quot;Microsoft Dynamics CRM&quot; height=&quot;333&quot; width=&quot;252&quot;&gt;&lt;param name=&quot;movie&quot; value=&quot;http://crm.dynamics.com/online/flash/dynamicswidget.swf&quot;&gt;&lt;param name=&quot;quality&quot; value=&quot;high&quot;&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#ffffff&quot;&gt;&lt;param name=&quot;flashVars&quot; value=&quot;&quot;&gt;&lt;embed src=&quot;http://crm.dynamics.com/online/flash/dynamicswidget.swf&quot; quality=&quot;high&quot; bgcolor=&quot;#ffffff&quot; name=&quot;Microsoft Dynamics CRM&quot; flashvars=&quot;&quot; type=&quot;application/x-shockwave-flash&quot; pluginspage=&quot;http://www.macromedia.com/go/getflashplayer&quot; align=&quot;&quot; height=&quot;333&quot; width=&quot;252&quot;&gt;&lt;/embed&gt;&lt;/object&gt;</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/5869337521942940181/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/5869337521942940181?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/5869337521942940181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/5869337521942940181'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2011/01/count-down-to-dynamics-crm-2011.html' title='Count Down to Dynamics CRM 2011'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-5995137428663084559</id><published>2010-10-06T23:25:00.000-07:00</published><updated>2010-10-06T23:30:25.373-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>CRM 2011 Beta SDK Sept/Oct Refresh</title><content type='html'>I&#39;m not sure how I missed this, but there was a &lt;a href=&quot;http://blogs.msdn.com/b/crm/archive/2010/10/01/microsoft-dynamics-crm-2011-beta-sdk-update.aspx&quot;&gt;new update to the 2011 SDK&lt;/a&gt; a few days back.&lt;br /&gt;&lt;br /&gt;Most notably they&#39;ve added hands-on-labs and tons sample code. Sweet!&lt;br /&gt;&lt;br /&gt;Go get the latest version &lt;a href=&quot;http://go.microsoft.com/fwlink/?LinkID=200082&amp;amp;clcid=0x409&quot;&gt;here&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/5995137428663084559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/5995137428663084559?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/5995137428663084559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/5995137428663084559'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2010/10/crm-2011-beta-sdk-septoct-refresh.html' title='CRM 2011 Beta SDK Sept/Oct Refresh'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-1984595511103532931</id><published>2010-10-06T02:39:00.000-07:00</published><updated>2010-10-06T02:46:10.649-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Windows"/><title type='text'>Disable Aero Peek</title><content type='html'>Am I the only one that get easily annoyed by the Aero Peek feature in Windows 7? It gets pretty bad when you&#39;re working with multiple monitors and accidentally hover over a taskbar window icon. Its almost like a miniature light show. :/&lt;br /&gt;&lt;br /&gt;Here&#39;s how to disable all that craziness:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.howtogeek.com/howto/5473/make-aero-peek-display-instantly-or-disable-it-in-windows-7/&quot;&gt;http://www.howtogeek.com/howto/5473/make-aero-peek-display-instantly-or-disable-it-in-windows-7/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;/rant&amp;gt;</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/1984595511103532931/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/1984595511103532931?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/1984595511103532931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/1984595511103532931'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2010/10/disable-aero-peek.html' title='Disable Aero Peek'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-4042975105193794484</id><published>2010-09-09T12:37:00.000-07:00</published><updated>2010-09-09T12:48:25.652-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>CRM 2011 Beta Released</title><content type='html'>CRM 2011 beta is out now. Go grab you copy now!&lt;br /&gt;&lt;a href=&quot;http://crm2011beta.com/&quot;&gt;http://crm2011beta.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Download Links:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0c7dcc45-9d41-4e2e-8126-895517b4274c&quot;&gt;Microsoft Dynamics CRM 2011 Beta On-Premises Server and Client Bits&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://go.microsoft.com/fwlink/?LinkID=200082&quot;&gt;Microsoft Dynamics CRM 2011 Software Development Kit (SDK)&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://go.microsoft.com/fwlink/?LinkID=200050&quot;&gt;Microsoft Dynamics CRM 2011 Beta Implementation Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://go.microsoft.com/fwlink/?LinkId=200380&quot;&gt;Microsoft Dynamics CRM Online Beta Readme&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target=&quot;_blank&quot; href=&quot;http://go.microsoft.com/fwlink/?LinkId=200379&quot;&gt;Microsoft Dynamics CRM 2011 Beta Readme&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;CRM 2011 Beta forum:&lt;br /&gt;&lt;a href=&quot;http://social.microsoft.com/Forums/en-US/crm2011beta/threads&quot;&gt;http://social.microsoft.com/Forums/en-US/crm2011beta/threads&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Source:&lt;br /&gt;&lt;a href=&quot;http://blogs.msdn.com/b/girishr/archive/2010/09/08/microsoft-dynamics-crm-2011-beta-is-here.aspx&quot;&gt;http://blogs.msdn.com/b/girishr/archive/2010/09/08/microsoft-dynamics-crm-2011-beta-is-here.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/4042975105193794484/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/4042975105193794484?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/4042975105193794484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/4042975105193794484'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2010/09/crm-2011-beta-released.html' title='CRM 2011 Beta Released'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-638998224851956075</id><published>2010-08-30T08:14:00.001-07:00</published><updated>2010-08-30T19:32:20.565-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Coding"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><title type='text'>Debugging Tips with Visual Studio 2010</title><content type='html'>Some useful debugging techniques for Visual Studio:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://weblogs.asp.net/scottgu/archive/2010/08/18/debugging-tips-with-visual-studio-2010.aspx&quot;&gt;http://weblogs.asp.net/scottgu/archive/2010/08/18/debugging-tips-with-visual-studio-2010.aspx&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/638998224851956075/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/638998224851956075?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/638998224851956075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/638998224851956075'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2010/08/debugging-tips-with-visual-studio-2010.html' title='Debugging Tips with Visual Studio 2010'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-843679056007466934</id><published>2010-08-30T08:09:00.000-07:00</published><updated>2010-08-30T20:10:27.877-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Tools"/><category scheme="http://www.blogger.com/atom/ns#" term="Visual Studio"/><category scheme="http://www.blogger.com/atom/ns#" term="WCF"/><category scheme="http://www.blogger.com/atom/ns#" term="XML"/><title type='text'>Webservice Testing Tool - WcfTestClient</title><content type='html'>&lt;blockquote&gt;Windows Communication Foundation (WCF) Test Client (WcfTestClient.exe)  is a GUI tool that enables users to input test parameters, submit that  input to the service, and view the response that the service sends back.  It provides a seamless service testing experience when combined with  WCF Service Host. &lt;/blockquote&gt;I didn&#39;t know this tool existed until a few weeks ago. Apparently its a part of Visual Studio.  I&#39;ve started digging deep into WCF the last few days and its been an indispensable tool to say the least.&lt;br /&gt;&lt;br /&gt;More Info on the tool here:&lt;br /&gt;&lt;a href=&quot;http://msdn.microsoft.com/en-us/library/bb552364.aspx&quot;&gt;http://msdn.microsoft.com/en-us/library/bb552364.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Also on a side note, I used to be a big fan of &lt;a href=&quot;http://nullfactory.blogspot.com/2008/10/storm-replacement-for-aging.html&quot;&gt;storm&lt;/a&gt; and they seem to have a paid version &lt;a href=&quot;http://www.wcfstorm.com/wcf/home.aspx&quot;&gt;here&lt;/a&gt; which adds support to WCF. I don&#39;t know how it compares to WcfTestClient though.</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/843679056007466934/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/843679056007466934?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/843679056007466934'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/843679056007466934'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2010/08/webservice-testing-tool-wcftestclient.html' title='Webservice Testing Tool - WcfTestClient'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-2626020710032791078</id><published>2010-08-27T08:11:00.001-07:00</published><updated>2010-08-30T20:11:03.444-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Security"/><category scheme="http://www.blogger.com/atom/ns#" term="WCF"/><title type='text'>Could not establish trust relationship for the SSL/TLS secure channel with authority</title><content type='html'>I&#39;ve working on interfacing with a 3rd party web service recently. The development version of the service had an SSL certificate that was issued to different host than the one deployed on. This, as expected, was throwing out &quot;&lt;span style=&quot;font-style: italic;&quot;&gt;Could not establish trust relationship for the SSL/TLS secure channel with authority&lt;/span&gt;&quot; exceptions at run time.&lt;br /&gt;&lt;br /&gt;I did some research on how to overcome certificate issues and this &lt;a href=&quot;http://www.thejoyofcode.com/WCF_Could_not_establish_trust_relationship_for_the_SSL_TLS_secure_channel_with_authority.aspx&quot;&gt;link&lt;/a&gt; covers most of the  techniques available.&lt;br /&gt;&lt;br /&gt;More instructions on creating a temporary certificate for development:&lt;br /&gt;&lt;a href=&quot;http://wcfsecurity.codeplex.com/wikipage?title=How%20To%20-%20Create%20and%20Install%20Temporary%20Certificates%20in%20WCF%20for%20Message%20Security%20During%20Development&amp;amp;referringTitle=How%20Tos&amp;amp;ProjectName=wcfsecurity&quot;&gt;Create and Install Temporary Certificates&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Please understand there&#39;s a reason why the webservice call fails.  These techniques should only be used for testing in a dev environment against a trusted service.</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/2626020710032791078/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/2626020710032791078?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/2626020710032791078'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/2626020710032791078'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2010/08/could-not-establish-trust-relationship.html' title='Could not establish trust relationship for the SSL/TLS secure channel with authority'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-3769491251598139746</id><published>2010-08-26T06:08:00.000-07:00</published><updated>2010-08-26T06:22:35.262-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Coding"/><category scheme="http://www.blogger.com/atom/ns#" term="Fun"/><title type='text'>Styles of Programming</title><content type='html'>I came accross this link while cleaning up my bookmarks:&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.codeinstructions.com/2008/10/styles-of-programming.html&quot;&gt;http://www.codeinstructions.com/2008/10/styles-of-programming.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I think I fall somewhere between a Surgical and Butcher Programmer.</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/3769491251598139746/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/3769491251598139746?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3769491251598139746'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/3769491251598139746'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2010/08/styles-of-programming.html' title='Styles of Programming'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-30908170.post-8753717496432941574</id><published>2010-08-13T08:43:00.000-07:00</published><updated>2010-08-14T10:49:50.411-07:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="CRM 2011"/><title type='text'>CRM 2011 New Features And The Wait or Build Decision</title><content type='html'>Some interesting thoughts on whats new in CRM 2011 and how it affects applications we build today.&lt;br /&gt;&lt;a href=&quot;http://www.dynamicscrmtrickbag.com/2010/08/06/crm2011-waitorbuild/&quot;&gt;http://www.dynamicscrmtrickbag.com/2010/08/06/crm2011-waitorbuild/&lt;/a&gt;&lt;br /&gt;&lt;a href=&quot;http://www.dynamicscrmtrickbag.com/2010/07/25/taking-the-covers-off-crm-2011/&quot;&gt;http://www.dynamicscrmtrickbag.com/2010/07/25/taking-the-covers-off-crm-2011/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In my opinion, if time permits, I would always try opt for the wait; at least until the beta releases of the product come out.&lt;br /&gt;From my past experiences early adoption has worked out pretty good for us. It gives us the opportunity to offer the customer so much more value in their solution.&lt;br /&gt;&lt;br /&gt;The development cycle may not be the smoothest, but at the end of the day the rewards are worth it.</content><link rel='replies' type='application/atom+xml' href='http://nullfactory.blogspot.com/feeds/8753717496432941574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/30908170/8753717496432941574?isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/8753717496432941574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/30908170/posts/default/8753717496432941574'/><link rel='alternate' type='text/html' href='http://nullfactory.blogspot.com/2010/08/crm-2011-new-features-and-wait-or-build.html' title='CRM 2011 New Features And The Wait or Build Decision'/><author><name>shane carvalho</name><uri>http://www.blogger.com/profile/08664089142276533585</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='30' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjD93htopN7-jUeT1Hy4Mz0yzkf64taSTpl1ZtOqnZbRgljjvkWgX41QAhBHTBsUSESmUn98oTS_AVN1zjE88P9M8L5pFQq8gxhCk6jiDfW8mWnricy6MwFbqiEwuTD7Q/s220/shane_bust.jpg'/></author><thr:total>0</thr:total></entry></feed>