Profilo di AaronAaron Elder's Web LogBlogElenchi Strumenti Guida

Blog


14 febbraio

Dell Latitude E6400 Laptop with Nvidia NVS160 - Performance

I recently got a new laptop and this one is equipped with an NVS 160M GPU, as usually, find the 3D Mark specs for this chipset can be hard so I am going to publish them here.

Enjoy:

Chart

OS Driver Score
Vista 84.69 625
Vista 7.15.11.5655 1032
Windows 7 176.07 1846
02 dicembre

Consolidation is fun...

Over the years, I like many others have used CDs or DVDs to backup files.  Of course as videos, pictures, VHDs, ISOs, etc get larger and larger... the limits of these technologies result in a number of headaches.  Recently I decided to switch to doing all of my backups on external HDs.  You can now easily get a 250GB external USB drive for about $100.  At this price, it becomes feasible IMO to simply backup to two of these HDs instead of using 50 or so DVDs.
 
Consolidate
 
Cheers,
03 luglio

Cute - Fun with Office GUIDs

While trying to fix a corrupted Microsoft SharePoint installation, I noticed that there was something funny about the GUID used for the WSS SharePoint package:

 

MsiExec.exe /X{90120000-1014-0000-0000-0000000FF1CE}

 

The last 6 characters spell Office J

26 settembre

Dell D630 with NVS 135 Performance

I have now been able to get results of a Dell D630 with both the Intel X3100 and the Nvidia NVS135. See below for details on their 3DMark 06 performance. Please note that Dell has released an updated NVS135 driver, but not a X3100 driver yet. Sad

15 giugno

Dell Latitude - NVS110M vs Intel GMA950 vs Intel X3100

I have seen a lot of people trying to figure out the 3DMark06 performance of Intel's new "Santa Rosa" graphics chip the X3100 chipset.  I had the opportunity to test this on a Dell Latitude D630 (the replacement for the D620) so the results below are as apple-to-apple as you can get.  It is important to note that the machine was running the Dell A01 drivers (only one available since it is so new).  I have read that the current Intel drivers do not support HW T&L, but that the chipset does, so I would expect to see a jump in the numbers when the A02 drivers come out later this year.  If the "jump" is the same as Nvidia got last year, that means the 3DMark06 score will be over 1200; which is not bad.  The test was also run on Vista (32-bit), which to-date has been about 5% in 3DMark06 scores than XP.

Updated: Someone asked for the RAM speed of these machines.  Both the D620 and the D630 used the faster 667MHz memory.

Here are the results:

GPU

3DMark06

OS

Machine

Intel GMA950

230

XP

Dell D620

Nvidia NVS 110m (A1-83.13)

217

XP

Dell D620

Nvidia NVS 110m (A2-84.69)

625

XP

Dell D620

Intel GMA964 (X3100)

432

Vista

Dell D630

 

22 giugno

Dell Latitude - Nvidia NVS 110M vs. Intel GMA950

I have seen a lot of people ask the question, but I haven't seen anybody with the answer; so here it is!
 
Q: I am going to buy a Dell (or whatever) laptop and it comes with the Intel integrated GMA950 (256MB Shared) Video card.  For $60 or so more, I can get the Nvidia NVS 110M (256MB Shared).  Is it worth it?
 
A: Yes, but only if you get the latest drivers.
 
 
I recently had the opportunity of having two identical Dell Latitude D620 laptops side-by-side.  The only difference between the two was the video card.  I then ran 3DMark 2006 on each and here are the results:
 
 
 
You will notice that with the A01 drivers from Dell that ship with the laptop, the performance of the Nvidia card is actually WORSE than the Intel card!  But if you get the A02 drivers (Released 6/22/2006), things are MUCH better!
 
Cheers,
 
 
 
15 marzo

My CRM Blog is moving...

Hey everyone...
 
We just released our new corporate website and as part of this effort added a blog!  Going forward, I will be making all of my Microsoft CRM related posts on this new site.  For all of you with RSS feeds to this site, you may want to update your feed to point to this new site's RSS feed.
 
I will continue to post random development items and non-corporate or CRM things here... but for all my readers interested in Microsoft CRM, I encourage you to update your links.
 
 
Cheers
20 febbraio

CCleaner - It really is that good!

  This is a non-CRM bit, but I think it is worth sharing with the world.  CCleaner is hands down a fantastic tool.  I say this for several reasons:
  • It works
  • Its fast
  • Its easy
  • Its free
  • Its small and not bloated
  • It says what it does and it does what it says
Overview of CCleaner
"CCleaner is a freeware system optimization and privacy tool. It removes unused files from your system - allowing Windows to run faster and freeing up valuable hard disk space. It also cleans traces of your online activities such as your Internet history. But the best part is that it's fast (normally taking less that a second to run) and contains NO Spyware or Adware! :) "
 
I use this tool all the time.  As a software developer that is constantly switching from project to project of VPC to VPC, this tool is the next-best-thing to a re-format and it takes only a few seconds to run. 
 
 
 
 
Cheers,
16 febbraio

Microsoft Dynamics CRM 3.0 Virtual PC Demonstration

If anybody out there is using the Microsoft Dynamics CRM 3.0 Virtual PC Demonstration that is available here:
 
 
You should be aware of a few minor issues with this image.
 
Issue #1 - Its a bit bloated
Typically, sales people will use this image to demo Microsoft CRM and all its wonderful features.  Unfortunately, most sales peoples don't have laptops with 2GB+ of RAM.  This image, as currently configured, requires at least 1GB of RAM allocated to it to run.  This is because this image has SharePoint, Exchange, Microsoft CRM, SQL Server 2005, SRS and the Outlook Client on it.  In addition, it has a few things on it that really aren't needed in a "demo" environment.  Here is a quick list: 
  • Virus Scanner (taking this off makes the disk access much faster and frees up almost 30MBs of RAM)
  • Distributed File System Service (5MBs of RAM)
  • File Replication Services (1.3MBs of RAM)
  • SQL 2005 OLAP Services (22MBs of RAM)
  • SharePoint (58MBs of RAM) - Unless you need to demo it
  • A bunch of other random Windows Services (5MBs of RAM)
All told, turning off a lot of this stuff can free up an quick 120MBs of RAM that can really make a difference on a slow laptop.
 
 
Issue #2 - Odd installation locations
 
Typically CRM is installed here:
C:\Program Files\Microsoft CRM
 
But on this image it is installed here:
C:\Program Files\Microsoft CRM Client
 
Which makes for the really confusing location of the CrmWeb folder here:
C:\Program Files\Microsoft CRM Client\Microsoft CRM Server\CRMWeb
Note the "server" files under the "Client" folder... adding to this confusion... there is also an invalid CrmWeb folder here:  C:\Program Files\Microsoft CRM\CRMWeb
 
 
Issue #3 - MSXMLSQL.DLL is not installed correctly
 
Building on Issue #2, SQL Server seems to be installed in two locations.
C:\Program Files\Microsoft SQL Server
and
C:\Program Files\Microsoft CRM Client\Microsoft SQL Server
 
The problem is that the MSXMLSQL.DLL is not installed in the location that SQL Server expects.  This means that if you write code that makes use of this DLL and uses SQL XML, you will get the error:  "Failed to load MSXMLSQL.DLL".  Fortunately, the files are on the image... they are just in the wrong place.  The following script will fix this issue:
 

copy "c:\Program Files\Microsoft SQL Server\90\Shared\msxmlsql.dll" "c:\Program Files\Microsoft CRM Client\Microsoft SQL Server\90\Shared"

 

copy "c:\Program Files\Microsoft SQL Server\90\Shared\Resources\1033\msxmlsql.rll" "c:\Program Files\Microsoft CRM Client\Microsoft SQL Server\90\Shared\Resources\1033"

 

Updated (02.17.2006)

Issue #4 - SharePoint has not been updated.

This image has both SharePoint Services (WSS) and SharePoint Portal Server 2003.  Both are running the original RTM bits.  If you plan to demo / use SharePoint on this image, I recommend you move to SP2.  Which is available here:

WSS: http://www.microsoft.com/downloads/details.aspx?FamilyID=b922b28d-806a-427b-a4c5-ab0f1aa0f7f9&DisplayLang=en

SPS: http://www.microsoft.com/downloads/details.aspx?FamilyID=171dc9a7-b4ba-4759-bd64-6b7d851a97ef&DisplayLang=en

 

 

Overall this is an excellent tool that Microsoft has provided the partner community.

 

Cheers,

14 febbraio

You ever get this error?

I get this error all the time in Microsoft CRM 3.0 when loading an entity from the Settings | Customization | Customize Entities page:
 

"Error: An error has occurred. For more information, contact your system administrator."

 
If you turn on "Dev Errors" you see the following additional details:
 
Microsoft CRM Unhandled Error Details:

Server Error in '/' Application.

Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).

 

The error seems to be some form of timing issue.  If you wait for the "Customize Entities" page to fully load and then give it a second... the Entity Editor loads perfectly every time.  If however, you try to load an entity before the page is 100% done loading, you will get this error.  A quick look into the cause, shows that the URL that loads is different depending on whether or not you wait for the page to finish:

 

URL if you don't wait - This gives an error
http://crm/userdefined/edit.aspx?id=custom:{b5f1e023-4be4-48ba-a424-94f17e4be732}&etc=10003

 

URL if you wait - This one works
http://crm/Tools/SystemCustomization/Entities/manageEntity.aspx?entityId={b5f1e023-4be4-48ba-a424-94f17e4be732}

 

The work around is simple: Wait for the "Customize Entities" page to load and try loading the "Entity Editor" again.

 

 

Upgrading Supported Microsoft CRM 1.2 Environments to Microsoft CRM 3.0

"This white paper reviews the key components for you to prepare in your environment for a successful upgrade from Microsoft CRM 1.2 to Microsoft CRM 3.0. This white paper is a supplement to the Microsoft CRM Implementation Guide."
 
 
This is definately a good read.
06 febbraio

CRM 3.0 - Closing a Task generates an error

We ran into this problem on our production CRM system.  I haven't seen a Microsoft KB article on it yet, so I hope this helps anybody else that comes across this problem.

 

NOTE: This article is provided "AS IS" with no warranties expressed or implied

 

Summary

On systems that have been upgraded from Microsoft CRM v1.2 to v3.0, users may receive the following error when attempting to close a task.
Error Details
Crm Internal Exception: Picklists with more than one childAttribute are not supported.
0x80040250
Resolution

The reason for this is that in Microsoft CRM v1.2 the Activity Task Entity has a 'Direction' field on in.  This is used on most entities to say if the task is tracking an incoming or outgoing item.  While this makes sense for e-mails, letters and phone calls... it does not make sense for Tasks.  For this reason, this field has been dropped from the Microsoft CRM 3.0 Task Entity.  During the upgrade, CRM considers this field to be 'custom' (because it is not in the new schema) and as such creates the attribute CFSDirectionCode on the Task entity.

To fix this problem, follow these steps:

  • Verify that no Task activities make use of this field and backup your data as require
  • Load CRM
  • Go: Settings | Customization | Customize Entities | Task
  • Go to the 'Attributes' area and 'Delete' the field CFSDirectionCode
  • Publish the entity

Note: Be sure you are deleting the correct attribute on the correct entity.  This operation results in data loss and cannot be undone.  Generally speaking, this field should always be empty for all Task records in the system and therefore no actual data will be lost.

05 febbraio

Updated Microsoft CRM 3.0 SDK Released (3.0.3)

The Microsoft UE team has released another update to the Microsoft CRM 3.0 SDK.  This is version 3.0.3 and has a release date of February 1st, 2006!
 
The new SDK is available here:
 
 
Here are the release notes:
 

Version 3.0.3, January 2006 Callouts Added information about how to retrieve all attributes in a callout. Added note about callouts for system generated activities such as an OrderClose activity.
  AssignRequest Entity instances cannot be assigned to teams. Removed erroneous documentation.
  TimeBlock Clarifed information about changing styles for a TimeBlock.
    Fixed broken links throughout SDK.
  Class and Method Mapping

Quote Detail

Sales Order Detail

Opportunity Product

Changed RetrieveQuantity references to GetQuantityDecimal.
  InstantiateTemplate

SendEmail

Added reference sample code to messages.
  Download an Attachment Added sample code to demonstrate how to download an attachment programmatically.
  CRUD Operations Using Dynamic Entities Added sample code to demonstrate basic create, update, retrieve and delete operations using dynamic entity.
  Download an Attachment Added sample code to demonstrate how to download an attachment.
  Retrieve the Localized State Name Added sample code to demonstrate how to retrieve the localized state name
  Route an Incident from a User to a Queue Added sample code to demonstrate how to route an incident from a user to a queue.

Added a note to the Assign message regarding the use of the Route message for changing the ownership of an incident.

  Support and Certification Added a topic on Support for .NET Framework Versions.

Additions to Unsupported Customizations.

  Client Side Scripting Bug fix in sample code for the OnSave method.

Updated sample code for the Lookup field type.

  Execute Method Reorganized this topic for greater clarity.
  Helper Code for CRM Types Added missing examples and documentation for the CRM types helper code.
25 gennaio

CRM SDK Bug - How to upload files into CRM 3.0

The current CRM 3.0.1 SDK has several samples that explain how to make use of the following messages: 
  • UploadFromBase64DataAnnotationRequest
  • UploadFromBase64DataActivityMimeAttachmentRequest
  • UploadFromBase64DataSalesLiteratureItemRequest
 And they all provide samples that look something like this:
 
string data;// Variable declared outside of using statement

// Create an instance of StreamReader to write text to a file.
// The using statement also closes the StreamReader.
using (StreamReader sr = new StreamReader("temp.txt"))
{
   // Read in the file's contents
   TextReader reader = sr;
   data = reader.ReadToEnd();
}

// Encode the data using base64
byte[] byteData = new byte[data.Length];
byteData = System.Text.Encoding.UTF8.GetBytes(data);
string encodedData = System.Convert.ToBase64String(byteData);

// Create the Request Object
UploadFromBase64DataAnnotationRequest upload = new UploadFromBase64DataAnnotationRequest();

// Set the Request Object's Properties
upload.AnnotationId = annotationId;
upload.FileName = "temp.txt";
upload.MimeType = "text/plain";
upload.Base64Data = encodedData;

// Execute the Request
UploadFromBase64DataAnnotationResponse uploaded = (UploadFromBase64DataAnnotationResponse) service.Execute(upload);
 
 
Unfortunately, there is a bug in this code (highlighted in RED).  The problem is that if you try to upload binary data the method by which the data is read from the file system and encode is in adequate.  Using the above code will result in files that only contain a portion of the binary file that intended to attach.  I am partly to blame for this (as I helped write this sample) and the above sample works great if you are uploading plain text (as our unit tests proved ).  However, if you want to upload binary data... you will need to do two things.  First you need to be sure to set the MimeType properly (this should be obvious and is not a bug in the sample).  Second you need to use the following code to read-in and encode the binary data:
 
// Get a pointer to the file and open up a stream
FileInfo pointer = new FileInfo(file);
FileStream fileStream = pointer.OpenRead();
 
// Encode the data using base64
byte[] byteData = new byte[(int)fileStream.Length];
fileStream.Read(byteData, 0, (int)fileStream.Length);
string encodedData = System.Convert.ToBase64String(byteData);
 
// Close the stream
fileStream.Close();
 
Basically, this approach to loading the into the Byte Array actually works for binary data (thanks MSDN).  Now that we have all encodedData loaded correctly, the rest of the code works as expected.
 
Cheers,
 
16 gennaio

Debugging CRM and "Break into the debugger"

One of my favor features in the Microsoft Visual Studio debugger is the ability to have it "break into the debugger" when any exception occurs.  I find this feature to be a great way to quickly identify where an exception occurring in my code without having to set break points and step through it.  I can just say "break whenever you find an exception".  I then run my code as normal, when the exception occurs, VS will stop execution of the process and break into the source code where the problem occurs.  I can then go about my normal business of debugging. 
 
You can read about this feature here:
 
Now, it is all fine and good that I like this feature, but why is this important when debugging code that calls the Microsoft CRM 3.0 platform?  The answer is that CRM 3.0's web services have a nasty habit of throwing an exception almost every time they are called.  Here it is:

 

Image:


Text:

A first chance exception of type 'System.ObjectDisposedException' occurred in system.dll
Additional information: Cannot access a disposed object named "System.Net.Sockets.NetworkStream".
 
 
 
As a developer working on the Microsoft CRM application team, we simply got use to it and got into the habit of simply hitting "continue" (instead of break) whenever the platform threw this "bogus" exception.  I know the platform team did some research (and I am fuzzy on the details) but it turns out that this is actually a problem with the .NET Framework and the team made the call to not try to fix/workaround the issue (given the risk, the scope of the fix, the ship date, etc.) As a note, I completely trust that decision and you should too .
 
 
Anyway, I am posting this today so that people know about this exception and know that it is safe to ignore when it comes from a CRM 3.0 web service call.  Hopefully some developer that has run into this problem, will do a quick Google (or MSN) search, find this posting and save him/her self a good many hours chasing down a bogus exception.
 
Cheers,
08 gennaio

More - Localized versions of CRM 3.0 on MSDN

More Russian and Dutch versions are available on the MSDN subscriber download page.
 
 
01 gennaio

Microsoft releases localized version of CRM 3.0

Happy new year everyone! 
 
A small bit of news... the Spanish, Italian, Danish and Portuguese versions of Microsoft Dynamics CRM 3.0 SBE are now available for MSDN subscribers.
 
 
28 dicembre

Microsoft CRM v1.2 - Hot Fix Update Rollup #2

Update Rollup 2 for Microsoft CRM 1.2 (KB904435)

Brief Description
"Update Rollup 2 is a tested, cumulative set of updates for Microsoft CRM Server 1.2, Microsoft CRM Sales for Outlook 1.2, and Microsoft CRM-Exchange E-mail Router 1.2, including performance enhancements, that are packaged together for easy deployment."

http://www.microsoft.com/downloads/details.aspx?FamilyID=172861ae-d02e-4441-b432-26e88dd0ab14&DisplayLang=en

 

It is pretty safe to assume that this will be the last rollup for CRM v1.2 for a while and I would generally recommend it for all existing CRM v1.2 installs.

 

You can read about all the fixes in this release here:

http://support.microsoft.com/default.aspx?kbid=904435

 

Microsoft Dynamics CRM 3.0 Virtual PC Demo

Microsoft has put together a nice VPC with the good old "Adventure Works Cycle" demo on it!
 
Check it out:
 
It is pretty big and you need to have Microsoft Virtual PC 2004 installed to use it.  Here are the details:
 
"Microsoft Dynamics CRM 3.0 release Virtual PC Demonstration. This demo is a one computer setup with Microsoft CRM 3.0 server and Microsoft CRM 3.0 client for Outlook. This demonstartion also contains Microsoft Exchange Server 2003, Microsoft SQL Server 2005, and Microsoft Visual Studio 2005."
 
Posted: 12.19.2005
Size: About 3.8GB Compressed