SalesLogix and VS 2012 ASP.net 4.5

I like the latest and greatest toys to get my job done. All the new shiny attracts me but from time to time I get smacked down by making a choice by jumping on the new .. one such smack down was with VS2012 and ASP.net 4.5. A strange issue was occurring while compiling the web site whereas tables with runat tags would break. With SalesLogix there are several places where this occurs mostly to allow for the setting of the visibility of the table. This is a know issue with Microsoft and a HF will be released (or so it has been told) but in the mean time working with SLX should be done inside of VS2012 without ASP.net 4.5 installed on the machine.

BITtelligent ERPLink Update

One of the most requested features of late is web forms for ERPLink. They are a long time coming and I am happy to say great progress is being made on them. I want to give a bit of history behind the forms and then provide you with a glimpse of the new web forms that will be included in the next iteration of ERPLink from BITtelligent.

Initially the ERPLink web forms were a collaboration between a Business Partner and Sage in development. I was working on the Sage side to enable API access to the system. Progress was made and a iteration or 2 was provided out to the community to test and confirm the functionality. Not a lot of feedback came and other priorities took over in the mean time. One of the biggest problems with the web forms was the usability story. ERPLink is a pretty heavy sync engine that works in process meaning that it was quite possible that there could be lockups, timeouts and potentially crashing of the IIS process when doing a link and sync. Also most of the core functionality was provided through SalesLogix LAN client. Management and Loads would need the client to be installed even in a web only environment.

When we acquired the ERPLink and DynaLink IP some tough decisions had to be made, some I am still living with since we are not yet ready to come to market and we have done what we can to provide timely updates to the progress of the updates we are making to the platform, however the changes are quite substantial and take both time and effort (as well as $$s) to execute. We have finished principal development on DynaLink and are ready for providing CTP to customers who sign up to the BITtelligent software assurance program. It’s a great time to do so because the feedback will shape the product and the features in a meaningful way.

ERPLink however is taking a much longer time. It’s a bigger beast and we really want to make sure its completely ready for prime time. We have in the mean time built out a interim release based on the HF code release that is branded and includes some incremental fixes. This interim release will be provided to any existing ERPLink customers who sign up the the software assurance plan and they will automatically be eligible for future releases of the platform.

Now back on web forms. Though the team at Sage have created an incredible product in SalesLogix and I am very happy to work with all of them I had to make some critical decisions on how I was going to invest into ERP integration into the Web client. I mulled over the current smart part architecture and the bundler. Also how 3rd party functionality integrates and the development effort required. I also balanced it out on the product plans that Sage has publically stated for both MAS 500 (now Sage 500 ERP) and SalesLogix. Factoring in the future push for windows 8 and some more immersive UI’s and the goal of standardizing on a code base in the future for all of our integration platforms. Ultimately I had decided that for US (BITtelligent) a focus on XAML based UI technologies would give us the best in several worlds. For the following reasons we are picking Silverlight as the UI web forms technology for our ERPLink integration;

  1. Simpler packaging and distribution in .xap files where we do not need to worry about merge/upgrade issues with SalesLogix smartparts
  2. Silverlight currently has a greater published support lifespan then MAS500 (MAS 5+ years, Silverlight 10)
  3. Quicker development time. We can develop all of out UI code outside of the SalesLogix build/deploy cycle. There are robust tools and the code can be contained into 3 known tiers (UI/Services Façade/DB access)
  4. Easier to integrate both platforms in our UI. To reduce the sync cycles we will be adding dynamic queries as an option. Therefore there will be a huge win on the daily data request cycle.
  5. Though this is subjective I believe with XAML based tech we can provide a better UI with a greater ROI
  6. Shared code base. Moving forward a lot of the assets can be shared seamlessly between a win forms (WPF)/Web and future Win8RT client

and there are other reasons. Its always good to review product goals and ensure that the investments that we make coupled with the investments our customers make .. well .. make sense. Its tough to predict tomorrow but for our team we will need to focus on the consolidation of efforts and platforms and choose technologies where we can deliver the greatest value with the least effort.

This post includes some screenshots of the upcoming ERPLink web plugins. Hopefully you will like what you hear and see and I welcome your comments.

To Registry or Not To Registry

Dynalink uses the registry for storing configuration details. This includes runtime settings as well as paths to any of the configuration databases located on the system. While developing the new version of the platform several things bothered me about this approach but one thing specifically with handing different versions of the product on the same machine. Our goal is to allow for side by side versions of the service application. Each capable of service a different set of databases or versions of MAS. This would work well when testing new environments or migration work.  I am not a fan of the Registry and believe that having the configuration stored in the file system local to the runtime is a much more desirable solution.

To that end the latest build now uses local configuration files to handle the runtime details of the server.

My Head Hurts

No matter how much you might know about a given subject there are times when you cannot see the answer no matter how much you beat your head against the table.

Yesterday was one of those days for me and I lost several hours that I cannot get back. We are working on getting a build of ERPLink out and during some testing I could not get the .net extension part of the product to work. No matter what I tried I could not get them to work, however a set of the extensions build on my local machine worked without issue. Finally I decided to do a side by side comparison of the assemblies that worked vs. the broken ones. Everything looked the same, both having the same .Net version, references, and so on. However, after closer inspection of the Assembly info the one difference was in the assembly title, where the working set had a title and the non working was cleared. It seems that our Finalbuilder build was clearing out the title (we set other attributes like incremented version) and the title is required by SalesLogix .net Extensions. After getting the build fixed to ensure that title remained the system registered and UI elements showed up as expected in SalesLogix.

So make sure that the title attribute is set accordingly or your SalesLogix .Net Extensions will not be located by the runtime correctly.

ERPLink/Dynalink Update

The march to Summit is in full force here at BITtelligent Software.

As I mentioned in a earlier blog post we are re-developing Dynalink and ERPLink synchronization platforms. Technology IP that we had acquired from Sage Software. Since the short time when the acquisition completed both products have taken on significant transformations. The initial goal was to rebrand, refactor and introduce some incremental usability updates. Primarily with the refactor of the code I wanted both products to be in place for simple management and extension of new features, as well as putting in place robust testing around the sync logic.

We literally have 2 weeks to get the products ready for demo, and potentially sale. Creation of marketing material is also happening. Potentially we will be doing a web site revamp, however that may just have to wait until after I get back from Summit.

Transitional Time at BITtelligent

Has it ever been a rollercoaster of a ride at BITtelligent this month. So much has happened in the last month that is both exciting and scary at times. Earlier this month we acquired Dynalink and ERPLink integration platforms from Sage Software. We have been on a mad tear to get the products ready for Sale and its been an interesting run. I am pretty confident that we are close to signing off on the new Dynalink branding and UI as well as a rewrite of then communication pipeline from sockets to a more open WCF layer. Ultimately the goal is to be able to host Dynalink in cloud instances while continuing to have desktop productivity managing your jobs.

ERPLink has also been moving forward and we are seeing some great memory consumption and performance wins. There is still much to do with ERPLink on the road to Summit but I really believe that what we show will excite current customers and help bring new ones in.

During this time we also continued to support our other customers, doing several web upgrades, providing support and other custom solutions and kept the team at BITtelligent busy. Its such an interesting time and I am truly excited to see what comes next.

Mark

Its Been a while

Wow, long time since my last post. I guess its a mix of being busy on projects and being completely uninspired when it comes to writing any thing up here. This occurs mostly in the winter when I feel drained, and this winter has been pretty bad on me when it comes to my mental health. Thankfully we press through and just get stuff done.

Here at BITtelligent we focus on so many different things, and at times its hard to determine where the next focus point needs to be. Being a jack of all, with some razor focus on the SalesLogix product line I sometimes get lost without regards to the bigger picture. BITtelligent has become quite successful of late of SalesLogix web upgrades and almost have it down to a Science.

Over the next few months I hope to provide more details on the BITtelligent Integration Toolkit. A platform and set of services for creating custom/standalone integrations to various systems. Shortly we will be delivering our first mini-integration providing Microsoft Exchange to SalesLogix Ticket and History. We are very excited by these mini platform releases and hope to have a series of releases each year.

I will also be delving into SalesLogix 8. I have been fortunate enough to work with the team in Scottsdale on the product and provide hopefully great insight on how to get the most out of the platform.

Finally we at BITtelliigent will be adding some external competencies around ERP synchronizations specifically MAS90/200 and MAS500 through Dynalink and ERPLink product lines. Focusing on aiding support to the business partner and end customer community to get running and maintaining a working synchronization process.

Microsoft Build–Decision Time

Next week I will be in California at the Microsoft Build conference. The day the conference was announced and registration availability was opened I signed up. For the last few years the direction that MS was going to take moving forward in their platform and OS was, well cloudy. The company I operate offers development services for MS based services and visibility and direction is paramount when it comes to providing insight and solutions to each of our customers.

I clearly have a affinity towards .net and the stack that surrounds the runtime. Be it Win forms, web with MVC or Silverlight, and in the future Mobile, its how I and the developers working for me make their living. I liked what I saw in Silverlight from a productivity standpoint. The types of applications that you can write (note I said applications and not web sites) can have a usability and a ROI that beats so many other technologies out there. It has been Microsoft’s strength in the past, and hopefully in the future that they build developer tools that allow the millions of us to just get it done.

I will be blogging from Build, and of course the occasional tweet on the findings. I expect it to be a busy week and hopefully thought provoking and provide a nice jolt to get my creative juices flowing again.

Cheers

The Superhero is Dead

Without leadership who do we look to for inspiration

As I lie awake in bed I could only reflect on how much our community has change over the last few years. I assume its due to the reaction of our new reality and the economy in general. SalesLogix superheros are falling away. Not so much as leaving the product or community, just becoming invisible and insular. The fact is, to be a ‘hero’ or evangelist in any community takes a great commitment and in real terms dollars, that few are happy to part with.   For the longest time I had looked towards Ryan Farley, Mike Spragg, and Stephen Redmond for inspiration each supporting the community in providing a developer hub, writing the go-to book or the contributions to the forum, that greatly enhanced the skills of those who were seasoned as well as those coming into SalesLogix for the first time. We all came up through the product at the same time and my contribution at the time was the Legacy mobile platform. It was easier when I was promoting a product that I had a relationship with, and the capacity to announce/discuss whatever was happening in the development pipeline as soon as it was though up. The joys of a small company start-up was there was little communication filters so I was quite liberal on the conversation between myself, and the community as a whole.

Business partners I also observe like to keep their staff close to their vest, in as much as any work is done by the company and not individuals. For the most part there is no external promotion of the incredible skill and talent that does exist in our community nor is there any cross pollination.

I am lucky to say I also know some great people inside of Sage that I get to talk to regularly as I work on product for the team and there are several rock stars that I am happy to call friends, but what our community needs to true leadership outside of Sage to provide life and energy and excitement to all the incredible possibilities that the platform brings.

What do you think, is the SalesLogix superhero gone for good. Who do you derive inspiration from?

Extending the Silverlight Custom Control

Earlier today I posted about creating a custom control to Host Silverlight content inside of SalesLogix. The design time experience was less then desirable as the it looked like an unbound stock control. I really wanted it to stand out from the other controls so I decided to look in to how to control the rendered UI in the quick form editor.

The great thing is its pretty easy to do and in a matter of minutes I was able to get a look and feel that was different then the default.

As you can see from the image the control does not look anything like the standard bound control and makes it easier to call out on a given smart part.

So how did i do this. Easy override the Draw method and paint the region the way I want. The following is the code I used to pant the area.

public override void Draw(System.Drawing.Graphics graphics, System.Drawing.Rectangle clientRectangle)
{

using (SolidBrush backgroundBrush = new SolidBrush(Color.FromArgb(0xFF, 0xFF, 0x99)))
{
graphics.FillRectangle(backgroundBrush, clientRectangle);

using (SolidBrush foregroundBrush = new SolidBrush(Color.Black))
{
using (Font labelFont = new Font(“Arial”, 10))
{

string caption = “SilverLight [” + XapName + “]”;
var stringSize = graphics.MeasureString(caption, labelFont);

graphics.DrawString(
caption,
labelFont,
foregroundBrush,
new Point(
clientRectangle.Left + ((int)(clientRectangle.Width – stringSize.Width) / 2),
clientRectangle.Top + ((int)(clientRectangle.Height – stringSize.Height) / 2))
);
}
}
}
}

Hope this helps you create your own controls that are distinctly different.