Monday, May 24, 2010
New Home For The CRM Diagnostic Tool (CrmDiagTool4)
This is appears to be the new home of the CRM Tool:
http://blogs.msdn.com/emeadcrmsupport/archive/2010/03/04/crmdiagtool4-for-microsoft-crm-4-0-available-now-on-the-emea-dynamics-crm-support-blog.aspx
Download it from the attachment section of the post.
Wednesday, May 12, 2010
CRM 4.0 Customizations Comparison Tool
The Customization Comparison Tool
"...tools that help you analyze the impact of customizations on the system and maintain consistent configuration data across multiple Microsoft Dynamics CRM systems."
The Data Migration Tool
...lets you export custom configuration data from a source Microsoft Dynamics CRM system and import it to a target Microsoft Dynamics CRM system.
http://blogs.msdn.com/crm/archive/2010/01/14/isv-utilities-for-comparing-customizations-and-transferring-configuration-data.aspx
Another tool to go into my tool belt.
Sunday, May 09, 2010
SharePoint 2010 Developer Environment Requirements
http://msdn.microsoft.com/en-us/library/ee554869%28office.14%29.aspx
I'm filing it away for future reference.
Friday, May 07, 2010
Dynamics CRM SDK 4.0.12 Released
The new Advanced Developer Extensions samples and walkthroughs look interesting.
Wednesday, May 05, 2010
CRM 4.0 Plug-in Filtering Attributes Limitation
Error Code:The the Filtering Attributes property basically tells the plug-in which specific field changes it should respond to.0x80044331A validation error occurred. The length of the 'filteringattributes' attribute of the 'sdkmessageprocessingstep' entity exceeded the maximum allowed length of '100'.
Investigating the issue it looks like its a limitation in the CRM web service. The web service limits the length of the field to 100 characters. Its strange that its not even the number of attributes that is the limitation but rather the concatenated length all the attribute names!
Interestingly enough the creation of Image Attributes support a total of 4615 characters: http://technet.microsoft.com/en-us/library/dd904023.aspx
Hopefully with CRM 5.0 around the corner this will all be addressed.
Sunday, May 02, 2010
CRM 4.0 Plug-in Development Best Practices
http://blogs.inetium.com/blogs/azimmer/archive/2010/01/25/plugin-best-practices-in-crm-4-0.aspx
Monday, April 19, 2010
CRM 4.0 Customized Webservice For A Specific Organization
To successfully build the source we need to add a web reference back to the CRM web service. The problem I ran into was that the default url (http://<server:port>/mscrmservices/2007/CrmServiceWsdl.aspx) returns a wsdl scheme with all its customizations. If you just need a clean proxy like I did then you need to create a new organization and then provide its name in the uniquename query string variable:
http://<server:port>/MSCrmServices/2007/CrmServiceWsdl.aspx?uniquename=OrganizationName
Thursday, February 18, 2010
List of SharePoint 2010 OOB Features
http://blogs.msdn.com/mcsnoiwb/archive/2010/01/07/features-and-their-guid-s-in-sp2010.aspx
This list might come in handy in the future.
Sunday, January 31, 2010
SharePoint 2010 Beta 2 SQL Server Version
I ran into some trouble getting SQL Server installed on the same box as SharePoint. It think it may have something to do with the order of installing applications. As a general rule of thumb make sure that you install from the oldest to the newest apps. This is especially true when working with beta software.
Running the configuration wizard I discover that SharePoint 2010 requires the latest SQL Server updates be installed.
SQL Server 2005:
SQL Server 2008:
Posting it here hoping it will save someone else some trouble.
Friday, January 29, 2010
SharePoint Workflow Versioning
Upgrading Workflows in an existing SharePoint site can be very tricky. Just copying in a new version is not the best practice. Depending on what changes were done to the new version of the assembly SharePoint may end up having trouble re-hydrating (deserializing) the currently in-progress workflows.
Here are some excellent articles I found recently on how to properly implement versioning, its potential pitfalls and how to overcome them:
- http://msmvps.com/blogs/theproblemsolver/archive/2008/09/10/versioning-long-running-workfows.aspx
- http://msmvps.com/blogs/theproblemsolver/archive/2008/09/11/versioning-long-running-workflows-part-2.aspx
- http://msmvps.com/blogs/theproblemsolver/archive/2008/09/16/versioning-long-running-workfows-part-3.aspx
- http://msmvps.com/blogs/theproblemsolver/archive/2008/09/22/versioning-long-running-workflows-part-4.aspx
Another alternative approach which I think is also a good solution:
Adding a new item to a SharePoint List
Using SPList.Items.Add() is not the best way to add a new item to a list. This is because the moment you access the get method on the Items collection it retrieves all the items into memory.
A quick peek at the Microsoft.SharePoint.dll assembly via reflector confirmed it:
You may not notice a difference in performance in the dev environment, but once your list starts to grow it will gradually degrade.
I recently learned this the hard way. This is the best way to add a new Item:
SPList list = _Web.Lists[LIST]; SPQuery query = new SPQuery();
query.RowLimit = 0;
SPListItem item = list.GetItems(query).Add();
item[TITLE] = “testing”;
item.Update();
On an unrelated note, executing a query with a RowLimit generates an underlying SQL query such as SELECT TOP X ..... where X is the RowLimit value.
I wonder if the behavior is still the same in SharePoint 2010. Hmmm...
References:
- http://blog.robgarrett.com/2009/02/25/efficient-way-to-add-a-new-item-to-a-sharepoint-list/
- http://www.infoq.com/articles/SharePoint-Andreas-Grabner
More best practices on SharePoint:
Saturday, August 08, 2009
Windows 7 Upgrade Scenarios
Microsoft has published the various upgrade paths for Windows 7. Its not as complicated as I expected, but still complicated for the average user. A visual representation here.
BY the way can someone explain to me the difference between “Upgrade to Windows 7” and “Anytime Upgrade to Windows 7”?
Friday, July 03, 2009
Adding outbound Windows Firewall rules using Powershell
This is something I wrote a while back, thought I’d post it here. It does exactly what the title says. Its basically a port of the following:
http://msdn.microsoft.com/en-us/library/aa364695(VS.85).aspx
Saturday, June 06, 2009
Media Coder Samsung P2 presets
I’ve been using Media Coder to encode videos into my P2 for a while now and its been a great alternative to what comes out of the box.
Well, all *was* great until I lost the presets for the P2! It took me an whole afternoon to reconfigure the settings that work with the P2. I’m posting the preset file here in the interest of saving someone else some time.
These setting work great for me. Your mileage may vary.
Creating “App Paths” using Powershell
I’m a big fan of Slickrun and its a tool I recommend everyone should have in their toolbox.
Unfortunately, working onsite on the client’s computers, installing third-party software is usually frowned upon. So I’ve got to make due by using the app paths.
The App Path technique of launching applications have have been around for a while. Read More:
http://www.tweakxp.com/article36950.aspx
The purpose of the script is to make the whole registry editing process a bit easier.
You can download the script here:
And execute it as such:
appPath.ps1 -key "notepad2.exe" "c:\windows\notepad2.exe"
or
appPath.ps1 -key "notepad2.exe" -path "c:\windows\notepad2.exe"
Where –key is the entry you would type in the Run dialog (please note that the extension is required). And –Path being the actual path of the file.
Disclaimer: This script modifies the registry. Use at your own risk, I will not responsible for anything that breaks as a result.
Friday, June 05, 2009
Troubleshooting Orphaned Users in SQL Server 2005 / 2008
A couple of days ago, I was tasked with moving a database from an older server to a new souped-up box. Unfortunately the transition was not as smooth as I had hoped for. After restoring the db into the new server I started running into trouble with orphaned users.
An orphaned user is basically just that, a database user without a corresponding server login. This usually happens when trying to restore a database into a new server, like what I was doing or accidently deleting the server login.
Luckily this issue can be solved relatively easy using the sp_change_users_login stored procedure.
First I get a list of orphaned users and their SIDs using the following procedure:
sp_change_users_login @Action='Report';
Next, I create the missing login from scratch (e.g. “NewLoginName”). The server mappings are not required as the database user roles are preserved in the database.
Then execute the stored procedure again with the following parameters:
sp_change_users_login
@Action='Update_One',
@UserNamePattern='dbUserName',
@LoginName='NewLoginName';
This re-jigs the broken “dbUserName” user with the newly created Server Login “NewLoginName”.
Its worth mentioning that even though there might be a login name existing on the new server identical to the database user name, they are not the same until linked together. You can find out for sure using the above stored procedure with the “REPORT” parameter.
Finally, hereare some instances where sp_change_users_login cannot be used:
- Cannot be used to map database users to Windows-level principals, certificates, or asymmetric keys.
- Cannot be used with a SQL Server login created from a Windows principal or with a user created by using CREATE USER WITHOUT LOGIN.
More information:
Tuesday, March 03, 2009
Microsoft End of Support Lifecycle Dates
Pretty Much all Microsoft Products
http://support.microsoft.com/gp/lifeselectindex
Servers - Service Packs
http://support.microsoft.com/gp/LifeSupSps#Servers
Non-Server Windows
http://www.microsoft.com/windows/lifecycle/default.mspx
Friday, December 12, 2008
Download YouTube videos using Powershell
Now that I'm back home in Sri Lanka, I'm getting re-accustomed to the slow Internet speeds over here. Slow internet speeds was the reason for me to write the YouTube downloader back in April.
So I spent a lazy afternoon today trying to port that code into Powershell. And here's the result:
How it works
The script first figures out the direct download link and then hands it off to a download manager which performs the actual download. You should be able to plug-in any download manager that supports command line arguments but I prefer to use wget for its simplicity.
Information on how the direct link is extracted can be found in my original post.
Use $downloaderPath and $downloaderArguments to configure the path of wget and its arguments respectively. The script also supports traversal through proxies and can be configured using the $proxy and $proxyPort variables.
The script accepts one parameter; the watch url of the video.
.\psVDownloader.ps1 http://www.youtube.com/watch?v=N_c60Sp7Gtc
.Please be aware that this script is purely for research purposes only. And I believe that you will be violating the YouTube TOS by trying to use its streams in ways other than intended.
