A Programmer's Dream

Dynamics SL....

Posted by Stephen Wrighton on 24 Dec 2009

I'm currently stretched between two projects for work. One a rather long-term system to improve the efficiency of document creation for a local loan company and the other is to assist with the customizations inherent in a Microsoft Dynamics SL (Solomon) migration from version 6.5SP1 to 7.0FP1.

Now, it's that second one that I need to talk about right now, because there's something about this that I'm floored by. The fact that there seems to be absolutely no one talking about the problems/processes/and what not that they've stumbled across while dealing with Solomon.

For example, the system is very easy to customize via Visual Basic for Applications (VBA) and is in fact designed from the ground up for that purpose. You're able to move controls, add new ones, and even go so far as to add entirely new data structures to the database and gaining read/write operations against it.

But, then you have to wonder, where on earth these changes are stored, and the answered to that is within a database field.

Now, they shove the operations as binary data into a binary field, so looking just at the data structures one would think that there was 1 entry in this table per modification. One would think wrong, as the system would have no way of knowing what modifications would be applicable when or why or how. In fact that would be a nightmare. No, what's happening, and why there will multiple entries per screen into the customization table is that the system only stores a maximum of 30KB per record. So basically all the VBA is changed into a binary-encrypted string, and then chunked up and stored that way.

Also, there's no EASY way to identify which controls were added to the form, as it's up to the user to define the naming convention. This can lead to things being named in the same pattern as Microsoft uses to name its controls as well as things being called "Button1."

But, if you export the customization for that screen, then you'll see a list of changes that have been made against all the controls on the screen, and from that, one is able to look and find those controls that have the "Created=True" property. It is those controls that are created by the end-user via the customization screens.

That knowledge would have saved me days (as I was having search and compare the non-customized version of the screen to the customized version in order to document all the various customizations so that we could ensure they successfully made the migration), but it was no where to be found. At least out in the open where one can find it.

In fact, I gained the "Tumbleweed" badge at StackOverflow because a question I asked (which the above knowledge would have answered for me) received low views and no responses for a decent amount of time.

But hey, I'm here to spread the cheer I guess....

Tweet me @kidananubix if you like this post.