Dynalink 2014 – Small Changes

I’ve been working on a update to Dynalink 2014 and sometimes the smallest changes mean the most.

Change 1 – Job Status Window

Dynalink use to show each of the jobs in separate windows for each configuration. The more I thought about it the less it made sense. The window also would show some internal ids (task and map id) which does not actually make sense for a customer facing view. I have updated the window to now consolidate all running jobs on a given server and changed the columns to make more sense.

I have also moved the stop job menu item from the configuration list to the job status list.

Change 2 – Toast Messages

I have been playing around with the notion of making some of the notifications less intrusive. The one place that I was not happy about was when a job was started from the Administrator. When started a a modal message box was displayed that the user would have to close to continue on. Though not a bad thing I was annoying me enough that I wanted it changed.

As such we have added a Toast Service to our architecture that can be called in place of some of the dialog popups to remove the extra step of closing a status dialog.

I am sure there will be other changes over the next few weeks as we continue to improve DynaLink

ERPLink for Saleslogix 8.1

Currently it looks that there is an issues with the Saleslogix .net extensions that brings an incompatibility to any previous versions of a compiled extension. We can get around this issue by explicitly targeting the version of .net extensions that are supplied with 8.1. We are working on a solution but In the meantime if you are upgrading to Saleslogix 8.1 and require a copy of ERPLink get in contact of support and we can provide you a custom build (If you are a Bittelligent customer)

The Great Path Issue .. Crystal Sucks

wow its 2014 and we are still having problems with the path variable. I have installed ERP 2013/2014 to do some development and testing of ERPLink and was getting the Launcher could not be found error. I tried to Google the issue, and even use Sage KB/Sage city to get an indication why the issue would occur. Unfortunately I could not readily find an answer however a thought dawned on me and I decided to look at the path just for giggles and of course it was well over its usable limit. The biggest culprit was crystal reports/business objects. I resolved the issue by creating a new environment variable for CrystalPath and copied all of the business object path parts into the new variable. I tacked ;%CrystalPath% at the end of the Path variable and now ERP 2014 client opens and runs as expected.

Make sure you check your path if your having load issues with the client after an install!

Pruning the Bushes

From time to time we need to cut back the bushes and trees to make them more manageable in our garden. This also helps ensure that they do not grow too big for their surroundings. Once done we can sit back on our deck and have a nice cold drink and just enjoy the view.

With Saleslogix 8 some changes to the way of the product got delivered made be think of this analogy. Within that timeframe a decision was made to include several localizations out of the box (French, Italian, Russian, and Danish I believe). The VFS (where all the customizations were stored) grew from approximately 200 MB all the way to a whopping 1GB when exported to the file system. Now though I think for the community as a whole this is a good thing to ensure that all localized versions are rolled out at the same time it does have a cost for organizations that really only need one targeted language.

Interesting enough a solution is fairly simple before you start your development/upgrade scenario. Lets just do some pruning. Basically I recommend after backing up your VFS for safe keeping going in and purging the non needed localizations

The easiest way to start is to export the VFS to a file based model (FLS) through the workspace manager.This allows us to work locally and use simple search/delete from windows explorer.

The main resource files are scattered throughout the model so I will start at the root and of the model and using the search look for all the files that end with *.[locale].resx

I complete this search for the following terms:

  • *.de.resx
  • *.ru.resx
  • *.it.resx
  • *.fr.resx

Each search should return approx 1522 files. After each search select all the files and [delete]. Once you delete all of the resource files you have removed about 40MB of extra assets.

The next step I do is visit each of the portals in the model. There are 2 sub folders in each portal that we need to be thinking of.

  1. SupportFiles\Bin
  2. SupportFiles\Help

Each of these folders contain specific sub folders for each of the extra Lanages. In these folders select the \RU, \IT, \FR, \DE sub folders and delete them as well. Deleting the sub folders in the bin folder will save several MB however the real win is in deleting the localized help folders. In the SalesLogix client portal the help saves more then 350MB.

Ultimately once this is all done the size of the VFS goes down from 1.04GB to 448MB. Quite the savings and ultimately will aid in deployment times and storage backup needs. This should also lower the memory requirements in deployment as your removing 6+ K of files that need to be inspected for changes.

As always good development means good practices.

Small Business – Ebbs and Tides

The dreaded question, why should I renew my M&S – What do I get for it?

We all would like our businesses to run like well oiled machines. Software is built, and sold, M&S’s renewed, PSG group continues to grow as your name gets out is the dream but the path to the successful software business is paved with sleepless night, crunch times, mental exhaustion and exhilaration of seeing someone using your product and/or services and being so happy to recommend you to everyone you know. I have to say most days I love what I do, I get to work with lots of amazing people and to this day I actively develop tons of production code while growing BITtelligent.

For most of the history of the company we were and continue to be primarily services based. Having a long term relationship with Sage and more specifically the Saleslogix team I got to know and work with them with several of the Saleslogix technologies. I was asked to take over the Dynalink and ERPLink products and more then a year and half a go I acquired the IP rights to continue to move the products forward.

Its been a interesting year to say the least. During this time Saleslogix was acquired by Swiftpage and we have been lucky to be part of the NetSuite integration project and various other. I do really cherish  not only the working relationship but the friendships I have made with the teams over the years. We have been moving forward Dynalink and ERPLink in a slow and pragmatic way. I followed this approach as we had yet to identify the market of users and there was no transition plan of current Sage customers over to BITtelligent.

As much as we took a slower approach we had made material investments in tooling (3rd party libraries, equipment, licensing solutions), rebranded the product. Spent hours, days, weeks reworking UI, fixing defects, testing customer scenarios and adding new versions to the compatible list.

When it came to Dynalink we not only changed up the UI but we completely reworked the services engine, updated the scheduler, fixed defects, added custom actions, removed crystal reports so that we no longer had to deal with version conflicts and brought MAS 500 one way sync back in.

ERPLink went a bit differently as it really has a smaller community. The problem with synchronization platforms that are tied to specific endpoints is that your customer pool is much smaller then if you have a generic sync engine. Initially we had build (me specifically) a completely new administrator to remove any requirement on the Saleslogix sales client. To this day it remains about 90% complete but after much deep thought It was difficult to continue on without seeing a growing community. The fact is about the same time I took over ERPLink Sage put MAS 500’s future in doubt. I loved the workbench and what it offered but I could not see it providing a ROI even close to break even and had to make the heartbreaking decision to shutter it.

Interestingly not all is lost. We have been on a bit of a journey behind the scenes for the last little while and still have a ways to go to consolidate our applications (Dynalink, ERPLink, + Custom Platforms) into a more common synchronization platform so the initial vision of the workbench and consolidating our efforts will come to light.

That being said back to the initial line (what do I get for my M&S), being that we are hitting anniversaries for our first customers on M&S, the question arose. The standard answer is that for the M&S dollars the company has access to the latest builds of the product and access to submit defects and within a reasonable time obtain a resolution. The more complex answer is that the M&S dollars contribute to ensuring that the product continues to move forward, newer versions are built and compatibility is addresses before it is needed.

The reality is that M&S is rarely enough to cover the yearly costs as we really do not charge that much but it does help a bit.

Determining Features

Part of developing software is determining the right feature mix for the broadest customer base. The features are there to make it easier for the users, the internal support team or sales to generate new business. Finding the right feature that drives adoption and delights the end customer is a hard task indeed. This is more difficult when you have a smaller customer base as you now need to make sure that you can accurately cost the feature as well. Any small company needs to determine if the cost of developing and supporting the feature will be paid for within their sales and support base. As you can imagine there are a ton of features that never bear any return on investment.

BITtelligent tries its best to determine the right mix for Dynalink, Erplink and our next generation Sync platform. Unfortunately time from time a Feature does not get into the product because the cost of the feature is to high for our team to implement and current M&S/Sales will not pay for the development effort. It’s the reality of business that software development works this way and as a product vendor its difficult continue to build if there ultimately no financial reason to do this.

These decisions ultimately effect customers that may have certain business cases, or extensibility needs that could benefit with the addition of these one-off features. I have been thinking for a while how to address these needs while ensuring that we (BITtelligent) can justify the development costs. To that end I believe we are going to introduce the ‘Integration’ customization program where we can offer custom builds of our integration products allowing businesses to build off of the base functionality and where it makes most sense extending into their custom business domain. I have yet to work out the details however I believe a 2 tier method depending on if the customizations are owned by the customer or BITtelligent where the second choice would be a discount to the project rate.

Ultimately we would like to be as flexible as possible while being fair to all parties.

What do you think?

Saleslogix Conference Wrap up

As I prepare to leave the hotel to head home I am writing this. This week I attended the first Swiftpage run Saleslogix conference in Scottsdale, Arizona. I love the state, and the location always is a easy choice to host our group of Saleslogix partners, developers and Swiftpage employees.

For many of us in the community this was the first time to interact with the upper management, and hear the story behind the acquisition. The conference crossed a 2 1/2 day period and covered a myriad of topics. I was able to provide a talk on ‘.net extensions and SData’ . Although the time of my session was compressed as the earlier session ran on, I believe it was received positively. I hope to blog on the subject in the future.

I was happy to see a lot of old faces from the Saleslogix community past, and the story’s were abound by the fire pit over drinks. A lot of laughs were had, new friends made and the goal of networking succeeded.

The fact that Swiftpage had the conference with the  amount of work that each and every swifty has was incredible and should be commended. The primary importance this year was not content, or entertainment or any other indicator. The only importance here was for us, the most loyal of partners and those who invest their livelihood on the success of the platforms was  to meet the team who is running the company and understand how this story that began in May will play out. I feel in that respect I am more enlightened and can start to steer my company in the right direction.

I am hoping that there is a conference next year, and we can all sit by the fire and talk about how successful we and Swiftpage have become as partners in this journey together.

I raise a beer to the Swiftpage nation

My Thoughts–RIM/Microsoft

This morning I am feeling a bit Nostalgic. Maybe my age is showing or I realize how I grew my career though some many changes in technology. In the last few days BlackBerry formally Rim laid off 4500 people and then proceeded to enter into a agreement to sell itself to a Private Equity Firm. This hits home 2 ways. The first is because I am based in Cambridge, Ontario, just 15 short minutes drive to RIM part in waterloo. I have friends that work at BlackBerry who will be effected by the events. The second reason was that years ago I was heavily involved in BlackBerry development working on a Mobile platform before there were Mobile Platforms.

I have to say that I was quite proud of my effort on those projects and thrilled what was accomplished where our mobile tools could customize, compile, deploy and  run on both BlackBerry and Windows Mobile devices. Ultimately the company was purchases and that in itself I believe was an exciting thing to go through.

Now looking back at RIM and now Microsoft I find it interesting how much things Parallel between the two companies when it came to some of their mobile strategies. I believe I am I a position based working on the toolsets in the earlier years to comment. During that Time I interacted with both members of RIM and Microsoft and ultimately the lack of vision seems to have determined the fate of one company and severely impacted the other.

During our conversations neither customer could see their current demographics needs and it seemed at least to an observer they were unwilling to listen to their community. I also think that the earlier Microsoft devices were highly underpowered to handle the workloads that we needed in the business community. The earlier releases of .net on the devices were slow and missed many core features that the business community needed.With RIM we had been driving for on phone cameras, removable SD cards .. Things that if their phones had years earlier would have had a toe hold in the consumer market.

Now RIM has disappeared from its former glory and shortly we will see its fate shake out. With Microsoft they are pushing for their Mobile 3.0 strategy (I assume there are more tries there) with the purchase of Nokia and the release of Surface 2 devices. I am impressed on the hardware side of what Microsoft is building and thought the S2Pro at $1800 is pricy I more then likely will pick one up. The problem I have is with Microsoft’s  developer strategies of late. From the outside they seem unorganized and not as well thought out as one would think.I site the following

1. Killing off active development of Silverlight. Sure you cannot get it on IPad but that made it no less viable as a business intranet development strategy. Potentially continuing to re-invest for a few years more would have ensured that businesses continued to invest in there XAML based business apps pushing them to Win8 and not to Apple in the future. Prematurely EOL basically killed that potential upsell.

2. Charging organizations a side load license to create Win8/XAML applications for their LOB solutions. And on top of that creating what I understand a archaic license agreements where you have to buy a minimum number of licenses and on top of that you cannot transfer them. This means that I as a vendor cannot include a single license in the box to make it easier for a customer to buy our product.

3. Moving Scott Guthrie to Azure. I think Scott is awesome, but I think he was more awesome discussing the latest development tool feature (Silverlight, ASP.net…). Moving on Azure it seems more like marketing a product then the geek cred that I so liked him for. I know that MS needed someone with Scotts capability in the Azure team but personally. This is a personal opinion as is all of this blog 😉

Ultimately I think 1 and 2 push developers to HTML/JS or back into Winforms/WPF. If Microsoft wants corporate adoption en Masse I really think they need to rethink #2 Because we all have alternates now causing a barrier to entry does nothing to help the platform.

I did see some Tweet the other day saying that some form of Silverlight is coming back and that would be great but its time for Microsoft to re-embrace the developer community and as they say ‘Show them some Love’. There is a lot of us faithful but we are fickle and will move away.

Breaking Backwards Compatibility

is it sometimes it right to break compatibility of older versions of a software. This is a question that many of us struggle with. I am in the midst of that struggle as I push forward on the ERPLink release and determine the right answer.

Currently within the product there is a key component that serializes datasets to the database. These large blobs of xml data are not compatible with some of the forward technologies that we want to use in our different clients, let alone the format allows for a ease of getting more data then one really needs. This ultimately leads to longer the required sync times. I was never a fan of the storage of query data this way as it was pretty localized nor of the display format on the grid as it was never that clean however it was the way it was.

I am now at a point of changing that so that we can have a more structured data set. I am also going to break out child data tables from the parents allowing for at a time fetch support. This will ultimate lead to more records in the querydata table however pushing to structured data will lower the size of the data in the blobs and make it ultimate more consumable from other tools.

Ah to my tuesday …