Subjects - MSCRM 4.0 takes two steps forward.

Submitted by Robert MacLean on Wed, 01/02/2008 - 09:14
Subjects in MSCRM are this interesting tree view structure which allows you to associate cases, kb articles and products in interesting ways. However they have never been customizable, which has limited the usefulness of them, in addition to a few interesting limitations they had. Well MSCRM 4.0 takes two steps forward into making subjects useful, namely:
  • You can now delete used subjects. In MSCRM 3.0 once you used a subject it was locked and could never be deleted, even if you updated all your cases etc... to another one. This made management of the tree a nightmare since it basically meant that you got one chance. In MSCRM 4.0, provided nothing is currently associated to the subject, you can delete it. If you try and delete one and it is associated you'll get an error message, simply fire up advanced find and remove/update the linked items and you will be able to delete the subject!
  • You can now associate subjects to other entities! But not with the full MSCRM 4.0 power. In fact the only thing is a one to many (1:N) relationship (see attached screen shot), many to one (N:1) and many to many (N:N) are not available. This means that your custom entities or system entities can now use the main subject tree too!
It's still not where it needs to be, namely support for multiple subject trees, customization support (even just adding attributes would help) and better display showing the full structures (ala X > Y > Z) but it is now much more usable than before.

UT3 Tweaker - Must Have

Submitted by Robert MacLean on Wed, 01/02/2008 - 09:00
UT3 is pretty (not Crysis pretty, but pretty enough), but the gameplay rocks and replayablity is high. The problem is to get it smooth enough for competitive gaming you need to tweak those INI files, well thankfully someone has built a tool to do it: UT 3 Tweaker

Microsoft Live Support = Worst Support: The Issue

Submitted by Robert MacLean on Fri, 12/28/2007 - 08:49

So I have a problem, just a small one, when I go to any Passport/Live site and sign in, it fails. Only the first time, second time always in. Nothing serious I can work, but I thought maybe I should log this with Microsoft and maybe they can fix it? Since it is happening across multiple machines I am sure it's an account issue.

So off I log the call with all kinds of info (including I use Vista solely now on my work and home machines) and go though a few simple check emails. Annoyingly I get a new person on each email. Maybe I am spoilt from partner based support where the same person responds and they know whats going on, but getting a new person who is obviously not checking what has been done before and simply sending crap is getting too much. The last email broke the camels back. Why?

THEY TOLD ME TO UNINSTALL IE7! I mean for fucks sake, it's been out for year and is a flag ship product for Microsoft and support thinks it's the cause!?!? Worst is (and bonus points for you if you picked this up) Vista ships with it, there is no uninstall back to IE 6!?!I've attached a screenshot of the email in case you think I am crazy.

 

.NET Framework 3.5 - Part 3: Extensions

Submitted by Robert MacLean on Thu, 12/27/2007 - 09:38
In my previous post I spoke about some of the new features in 3.5. For ASP.NET though there is more goodness coming in the form of the ASP.NET 3.5 Extensions package. This package contains some interesting bits I want to highlight.
  • ASP.NET MVC: This model view controller (MVC) framework for ASP.NET provides a structured model that enables a clear separation of concerns within web applications, and makes it easier to unit test your code and support a TDD workflow. It also helps provide more control over the URLs you publish in your applications, and more control over the HTML that is emitted from them.
  • ASP.NET Silverlight Support: With the ASP.NET 3.5 Extensions release we'll deliver support for easily integrating Silverlight within your ASP.NET applications.  Included will be new controls that make it easy to integrate Silverlight video/media and interactive content within your sites.
  • ADO.NET Data Service (codename "Astoria"): In parallel with the ASP.NET Extensions release we will also be releasing the ADO.NET Entity Framework.  This provides a modeling framework that enables developers to define a conceptual model of a database schema that closely aligns to a real world view of the information.  We will also be shipping a new set of data services (codename "Astoria") that make it easy to expose REST based API endpoints from within your ASP.NET applications.
There are a few more and Scott Guthries post will be good to cover if you are interested (all the info above is from him).

Now starting with Silverlight support thats a no brainer really. If your market is developers wanting great tools, then making them edit HTML to get your new platform is a little tougher than need be. The MVC is a nice thing if you believe the information on it (I haven't used it yet myself) but it basically is bringing a lot of the CCF/CAB ideas to the web in a elegant way. Lastly Astoria is a great technology (I almost built my own for a project but beta 1 came out and saved me from that) which gets your data from within the black box of servers on to the web in a way it can be consumed by client applications easily. Obviously performance doesn't compare to ADO.NET directly but if you don't have access to the server this is the way to share information.

Invalid object name 'Entity'.

Submitted by Robert MacLean on Fri, 12/21/2007 - 09:21

My first MSCRM 4.0 upgrade was last night and so was my first MSCRM 4.0 issue. The issue after upgrading MSCRM and going to the site was "System.Data.SqlClient.SqlException: Invalid object name 'Entity'.". Screen shot is attached to the post if you want to see that.

Straight away you can see it is a SQL error, so I whipped out SQL profiler to see what is going on. I first limited to the _MSCRM and _METABASE databases (remember this is an upgrade) and started to watch what is happening. What I noticed is that it is running a "select * from entity" so entity must be a table or view. Checking the DB though I can't find it and running the select statement myself also failed. I also noticed that the _METABASE is not being called at all.

So using deployment manager I created a new tenant to see what that looked like. First thing I noticed is no _METABASE for the new tenant, and that if I ran the select statement in the new tenant DB myself it worked. So I look through that and what do I find a table named entity. But wait whats this before it? Normally tables are prefixed by dbo this isn't it's prefixed by metabase something or other, and then I remembered my SQL 2005 training on schemas.

See MSCRM 4.0 doesn't need 2 databases anymore since it uses schema's to put both the metabase and data in one database and can control the security seperately on that! This is also why SQL 2000 is not support, since it doesn't have schemas (atleast one of the reasons).

To resolve this I made sure the network service account (since we upgraded with that) had the same permissions on the original DB as on the new tenant DB and viola it worked!

Using Excel 2007 and SSIS

Submitted by Robert MacLean on Thu, 12/20/2007 - 15:21
Since the Excel source component in SSIS (2005) doesn't support the XLSX formats from Excel 2007 you kinda have to kiss that away (hopefully SSIS 2008 is better). So to load it you can use ODBC to create a system or user DSN to the XLSX file (office 2007 installs the ODBC drivers needed) and then using the data source reader component connect to the data source and viola! XLSX goodness and a fraction of annoyance.

I must admit that it seems slow though, but I am not sure if that is because I never needed to load 200000 records out of Excel before our my laptop has enter the Christmas spirit mode already.

If you have any better ideas or ways of doing this, I would love to hear about it.

Update: This may also be of help to some people, drivers for OleDB etc...
http://www.microsoft.com/downloads/details.aspx?familyid=7554F536-8C28-4598-9B72-EF94E038C891&displaylang=en

It is definately the size of the spreadsheet which is killing it. Made a new one with one record and it works fine.

Essential Developer Tools - Part 3: UDL Files

Submitted by Robert MacLean on Wed, 12/19/2007 - 14:03
One thing about being a developer is that at some point you will have to work with databases/datastores. It's a fact of life (like death and taxes). The thing about these databases is that they all have connections strings to get to them, but the problem is how do you get the connection string? A popular website is http://www.connectionstrings.com/ which lists them and you can then copy, paste and modify those for your own needs.

However there is a problem with this, in that it's open to errors during the modification (assuming you can copy and paste without error) and that there is no nice test system for your environment. Well fear not, Windows (I've known about this since Windows 2000 and can confirm it works on XP, Vista and 2003 fine) has a great feature for finding out connection strings, and testing them.

To do this you create a new empty file somewhere (desktop is good, cause you can go right click New -> Text Document). The trick is to make sure the file extension is udl (i.e. connection.udl). Now you can double click this file and using the (possibly) familiar connection wizard/odbc thing to set and test the values the values:
Once you click OK the window disappears.

So what good is that? Well if you now open that file in notepad you'll find the connection string in plain text right there! With all the right values for your environment! Anyway happy connecting!

Update 10 Jan 2008: If you are doing this on x64 machines and getting issues this may help: http://blogs.msdn.com/snehadeep/archive/2008/01/10/running-a-32-bit-data-link-properties-udl-in-64-bit-box.aspx

.NET Framework 3.5 - Part 2: What's new in it?

Submitted by Robert MacLean on Mon, 12/17/2007 - 11:50
For the sake of the series I am going to just highlight a few points. For real concrete stuff see:

There is a lot of new language features in 3.5, most important to highlight for this series is LINQ. Moving along to the more shiny information there is significant work put into integration of AJAX, WPF (XBabs support in Firefox, can work with cookies now), WCF (more WS* support, general syndication support, special model for web development,  and Silverlight. WCF + WF and WCF + AJAX now play very well together (lots of support for each other now). There is also support for new cryptography stuff (nice), peer to peer development. Interesting WinForms now supports the same model as ASP.NET for authentication.