SalesLogix Quick Form Issue

I am working on a customization for a client and while making some changes to the Ticket Detail quick form and compiling I was getting a velocity exception as pictured here


I had been adding controls, and a new form load action when I got this issue so my first suspect was around the load action given the description. I systematically removed the script, and all of the newly added controls. To my dismay the exception continued to occur.  I then copied a fresh version of the TicketDetails smartpart/resx file back into the model and refreshed the project and the error went away.

It was then when I was re-cleaning the smart part when I found out what had happened. You see there is a contract lookup on the detail smart part. For this customization I had to remove it as it was not needed. When I removed it I was unaware that there was a reference to the control in a load action validation method. Since this reference still existed NVelocity could not resolve to the control hence the exception (though the error is not that descriptive). Once I removed the reference I was then able to recompile again.

So the Rule is: If you are removing a control from a smart part, ensure that there are no validation/property set actions referencing the control or you will see the above error.

MySlx, Do Overs and Next steps

Every time I start blogging again after a extended period away I mention that I will be working harder to create more posts. Surprisingly, or not so, I find it hard to find time to blog in a consistent manner. Mostly due to the fact that I am finding my day to day development efforts to be quite busy. That being said blogging and community is very important to me.

From time to time, I find that I would love to have days that would be considered a do-over. Nothing works as expected and the simplest work items are very difficult to effort. It could be environmental, lack of tooling, architecture or the product does not perform or is not at a place where it should be. These days can be tough for the most experienced of us as well as the new developer coming in trying to understand all of the underlying technologies. Yesterday was such a day, though the day was painful, there has been others and there will be more, ultimately I was able to move the product forward and solve some immediate customer pains.

It is unfortunate that these days exist, but they are a nature of the beast. We are working on complex systems with a myriad of technologies that are merged together to create some cohesive package. I think we understand this and I am fortunate that I have some very excellent customers, many of which I count as friends after many years of working together. What I am still struggling with is occasionally  the minimizing of the effort that it may take to get a development job done. It still gets me when someone, outside of the development fray can estimate an effort at 20-30% actual effort not bearing in mind all of the work items that need to be accomplished. Fortunately when these come along I do not have to engage in them as the risk is too high.

I count myself fortunate in that I have a geographically diverse customer base. I have clients in the USA, Canada, UK, and Germany. It has allowed me for the most part to ride out the difficulties in the economy. Somewhere in the next few weeks I am scheduled to head over to UK with a mid week hop to Denmark. It will be good to see parts of the world that I have yet to have been (its also nicer to get paid to do so).

SalesLogix 7.5.2 MySlx Types

SalesLogix 7.5.2 is due to be released soon and one of the new features is a simplification of some of the complexities of the platform. Note at time of writing MySlx Api components are in pre-release version and could have some changes by RTM.

So in a nutshell MySlx is start of wrapping some of the platform complexities into a set of cohesive, easily discoverable types. In its first release there are 3 types available for access as follows


  1. MySlx.Security
  2. MySlx.MainView
  3. MySlx.Data


Access to these types are available by default in the C# code snippets and full code complete support is provided.



Now here is an example of the Data type and a helper method to get back a list of ComponentView objects that can be directly bound to a grid. This allows for easier translation of current LAN client code to be consumed in the web client.


public static void GetContactThatStartWithA(IAccount account, out IList list)
    list = MySlx.Data.GetList(
                 "Select LastName, FirstName from Contact", 
                 new object[] { "LastName", "FirstName" });


Hopefully in the near future I can blog about each of the types and the methods that they contain.

Until then

– Mark