Stephen Smith's Blog

Musings on Machine Learning…

Posts Tagged ‘sage 100

Sage Mobile Service

with 22 comments


Last year at Sage Summit we showed proof of concept demos of a number of mobile applications we were developing. At this year’s Sage Summit we announced that these were now shipping. In this blog posting, I’m going to talk about one of these new mobile applications, namely Sage Mobile Service. This application dispatches technicians to perform work for customers and enables them to get directions, customer information and to collect payments.

Common users of this service would be plumbers or electricians. Where calls come into a dispatch center and they need to be scheduled to visit various sites. There they perform work and can collect payments. Hopefully any companies that perform work of this nature will find this App helpful.

This application consists of three parts: a web application to manage customers and dispatch work orders, an iPhone application for technicians to receive information and take payments and then a connection to your on premise ERP system to share transactions and data.

The Dispatch Web Site

The Dispatch Web Site is a standard web application that runs in any modern browser. From this website you can manage your customers and create work orders for your technicians to perform. Below is the welcome/dashboard home page for this website.


You can get lists of the current work orders along with lists of your customers and drill down into the detailed information of anything listed.


When a call comes in from a customer, perhaps for a plumbing problem, you can enter in all the information and then schedule a technician to perform the work.


As soon as the work order is saved with an assigned technician and scheduled time, it will be available on his iPhone so he can go do the work.

The iPhone App

The technician receives these service call requests from their iPhone via an App. This App lets them know where they should be and when. The App will present a schedule of the work they need to perform today, tomorrow and in the future. This gives the technician an idea of all the work they have to do today and how long they have been scheduled to perform that work. Below is a screen shot of a work order on an iPhone, you can scroll down for more information or tap to drill down for more detailed information.


They can also get additional information on the customer, like their location, directions and contact people. They can also bring up a history of service calls for that customer so they know ahead of time what work has been performed previously.


From the App they can also add work items and parts. So if they need to add their billable hours or add any chargeable parts then they can do this.

When the work is completed, the technician can either receive payment via swiping a credit card through a device attached to their iPhone or they can mark it on account. Of course all sales taxes will be calculated automatically as part of this process. If it’s on account then an invoice will be sent later. Next week I’ll talk about the Sage Billing and Payments web application which can be used to collect these invoices if they aren’t paid on time.

Connected to ERP

Where do the customers come from? Where do the payments made go? The answer is your on premise ERP system. A small connector is installed onto your on premise ERP system which is configured to communicate with your Sage cloud account. This connector will upload information from your ERP like your list of customers to the cloud and will download transactions as they are completed to the ERP. Initially we have connectors for Sage 100 ERP and Sage 300 ERP. We will have connectors for Sage 50 ERP (US and Canada) following shortly.


In the case of Sage Mobile Service all the customer information along with information required to fill out A/R Invoices is uploaded to the cloud and then A/R Invoices are downloaded and inserted into the ERP as transactions are processed in the cloud or on the mobile devices. The connectors for Sage 100 ERP and Sage 300 ERP run continuously as a Windows service and need to be installed on a server that is generally running. The Sage 50 ERP connectors are part of the product and need to be run manually every now and again.

All the requests are queued, so if one system or another is down, things will catch up again once it is available. The connectors only call up to the cloud, the cloud never calls down to the ERP. This means you don’t need to operate a web server and you don’t need to reconfigure your firewall. Installation is very easy and transparent.


Initially we have been rolling this out in North America. We will be rolling this out internationally, but first we have to provide the sales tax calculation engine (currently we use Avalara) and we need to provide integration to local credit card processors. Depending on the region, it might make sense to roll out the service, perhaps without credit card support, but this will be on a case by case basis. Fortunately most regions have simpler VAT type sales taxes rather than the crazy US system.


The world of mobile applications is opening up all sorts of new opportunities to expand ERP systems from beyond hidden backroom offices out into the real world. No one wants to have to enter data twice, so these applications are great mechanisms to get transactions entered directly into the ERP from the point of work and not relying on paper records that are later typed in (perhaps inaccurately). Sage Service Billing is one of our first wave of these applications with more to follow.

Written by smist08

August 10, 2013 at 7:26 pm


with 5 comments


There was a discussion on LinkedIn the other day, that was started since the latest version of Sage 100 ERP only allows one copy of itself to be installed on a given computer. Many programs operation this way such as most Microsoft products and other Sage products like Sage 300 ERP. The main reason for this is to avoid confusion for users when they are using integration technologies like COM or .Net. Since then it’s easy to know what you are talking to when you integrate from another program. This is also how the Windows Installer works, so if you want to use this technology then this is what you get.

But the topic came up as to what to do to support multiple customers? The answer given was to use virtualization. We use this fairly extensively here at Sage for Development, QA and Support. This blog posting is to cover a bit more fully our uses of virtualization and some of the things we have discovered along the way.



The Sage 100 and Sage X3 groups use Oracle VirtualBox. This one is nice because it’s open source (Oracle acquired it as part of Sun). I’ve run VMs created with this, but never created one myself or have too much experience with it.


The Sage 300 team uses VMWare. It used to be that you could use the VMWare player for free, but now it is only free for non-commercial use, but at least it’s fairly cheap. Generally you only need the Player and not the Workstation version. One nice feature is the unity feature which does an amazing job of integrating the virtual environment with your desktop environment which is good for demo purposes.


For server based VMs we use VMWare because our experience is that the memory usage is much better than the Microsoft Windows Server versions (but I haven’t played with Windows Server 2012 yet). The MS Server ones tend to force a lot of locked memory and you can’t run as many VMs. Our support department keeps a library of all supported operating systems times all supported versions installed, so if a client problem comes up say running XX version 3 on Windows XP 32-bit, then we boot up the right VM and try to reproduce the customer’s problem.

Generally we find it useful to create a base operating system image like Windows 7 (64-bit) and keep a clean copy that we update every now and then with Windows updates. Then when we want a VM we just get a copy of the base operating system and install what we want on top of it. (We also keep some images of popular operating systems with office and SQL Server as a better starting point). Generally to give a quick way to get running when a need arises.


We used to use MS VirtualPC a lot, but have moved away from it because MS doesn’t seem to be updating it anymore and it doesn’t support 64-bit client operating systems. This one is included with MSDN subscriptions, so it you have one of these, you probably have access to it.

It seems Microsoft is repurposing its VirtualPC software to their XP Mode feature to allow you to run Windows XP only software easily on Windows 7.

Client Operating System Licenses

Generally all the developers at Sage have an MSDN Universal subscriptions so this gives us the licensing to do what we need with the client operating systems. But for most development partners, there is a lot of benefit in having an MSDN subscription yourselves.

Hardware Requirements

One disadvantage of virtual machines in the past has been how large they are (usually around 32Gig). This uses up disk space fast, but with cheap 3TB hard drives, this doesn’t seem to be much of a problem anymore.

I’ve found the main thing you need for good performance in virtual environments is lots of memory. If your computer has 8Gig RAM then you can allocate 4Gig to the VM and still have 4Gig for your base operating system. Even though I find frequently switching back and forth between things in the VM and things in the base operating system can be slow, so I like to work for longer periods in on or the other.

Also quite a few laptops have hardware virtualization support turned off by default, going into the BIOS setup and turning this on can speed up VMs quite a bit.


To me virtualization software is quite amazing. I’m astounded that I can just run Windows 8 or Linux easily on my Windows 7 laptop. I think virtualization software has come a long way and is still progressing quickly. If you haven’t tried it out recently and you need to keep things separated, then you really should try one of these out. It saves a lot of headaches not having to worry about the installation of one thing messing up something else you have installed.

Sage Advisor Update

with 10 comments


There is a lot of debate on the relative benefits of installing software on-premise versus using a cloud or SaaS based product. Generally for SaaS based software you don’t need to manage backups or infrastructure, that is all done for you and you don’t need to perform software updates, they just continually happen in the background.  On-premise software then gives you more control of your environment, allows greater customization and you don’t need to worry about your data being in someone else’s hands.  The team at Software Advice wrote a good article on the benefits of on-premise software here.

One of the advantages of SaaS, is not having to install updates, just having them appear magically, ready for your use. On-premise software can do this as well via auto-updates. For instance the Google Chrome browser will silently update itself whenever it notices a new version is available and usually you never notice that it has updated itself. Other products let you set options on how they update or prompt you whenever an update is available, letting you choose at that point what you want to do it.

Sage is looking to add automatic software updates (similar to Windows Update) to all our products called “Sage Advisor Update”. A couple of Sage products like the Nonprofit Solutions already include this. Most other products will be rolling this out with their next release over the next year. When a Sage product with this capability installs, it will add a new Sage Advisor Update program to your Start Menu. Think of this like the Apple Software Update program. Below is a screen shot with some labels of this program:

This will give you a list of all the updates available for all your Sage products installed on this computer. From this program you can see what is available and then download the update and optionally also install the update. The Sage Advisor Update is aware of client/server type installations as well as security requirements for installation (like being an Administrator).

Starting Slowly

Sage has a large set of business applications, based on all sorts of technologies and using all sorts of customization schemes. Running auto-update on an ERP which has source code customizations will remove all those customizations. Installing a product update that includes Crystal Reports runs the risk of over-writing customized reports. Perhaps all the workstations need an update to match a server update and this needs to all be done at once rather than at the whim of a single workstation user. Plus most large business applications are integrated to all sorts of third party products and compatibility with all these needs to be checked.

These are all the sort of pain points that cause upgrades to be historically expensive. Ultimately we would like to be able to silently and frictionless install updates without any user intervention. But we will start slow. For the initial releases, Sage Advisor Update will notify you of updates and download them for you. However it won’t take the next step of automatically installing them. This then allows you to contact your business partner to confirm whether whatever needs installing is safe for you given the customizations, third party products or integrations you might be running. Additionally Sage Update Advisor is fully configurable so you can tell it what you want done or not done.

Perhaps it will be a while before we can perform a major version upgrade silently behind the scenes. However perhaps we can automatically install some critical hotfixes that we know won’t break customizations. Perhaps we can quickly reach the point of quietly installing product updates behind the scenes. Part of this is discipline on Sage’s part to be very careful in product updates that we aren’t doing anything that will break customizations.


All Sage products tend to have upgrade-safe customization and upgrade-unsafe customizations. Upgrade safe customizations will not be broken by Product Updates and new versions of the software. The other will (might) be broken (or will break the new version). For instance for Sage 300 if you customize a Crystal Report in the directory where its installed, then it is not upgrade safe since it will be over-written by a new version. However if you place that report in a customization directory then it is upgrade-safe since it won’t be over-written. Similarly for Sage 100, if you use the customizer tool, then you are upgrade-safe, if you modify the source code, then you aren’t.

As we move forwards we want to make all customizations upgrade-safe. This way new versions can be installed at a far lower cost than they are today. Ultimately then customizations won’t be an issue to upgrading and won’t be an impediment to the Sage Advisor Update program.

Frictionless Upgrades

Ultimately we would like to make the whole upgrade process frictionless and remove the current large cost in upgrading customer’s business applications. Sage Advisor Upgrade provides a tool that can notify you when upgrades are available, download them and possibly install them. The next step is ensuring that our product updates don’t cause problems with customizations. Either by investing more in upgrade-safe customization technology or by having the product update itself update customizations to work with the new update.

Another aspect of this is to make sure any new features are easily and naturally accessible as well as very easy to learn. To make upgrades truly frictionless, they shouldn’t require a large training effort to get everyone to effectively use them. Other aspects of Sage Advisor technology has the ability to watch how you are using the software and offer training tips to take better advantage of what you have. A very large percentage of new feature requests we receive are for features that are already in the product, so we need to do a better job of helping people make use of these.

Downsides to Avoid

That’s not to say auto-update can’t be annoying. When I returned form African Insights 2012, I booted up my home computer and then it proceeded to install Windows Updates, Apple Updates, Flash Updates, Acrobat Updates, etc., etc. Basically it took over an hour to boot my computer hand have it usable. Perhaps I shouldn’t have clicked the buttons to let all these updates proceed, but I like to stay up to date. Especially annoying are updates that require a computer re-boot to complete.

In Africa, several people I met never run Windows Update. This is because they access the Internet over the cell phone network and have very low download limits. If they let Windows Update run then it uses up their download limit and Internet access becomes quite expensive.

Of course a worse case is having some favorite program break, so you can’t use it until the next update or you have to manually un-install it and then manually install an older version. This has happened to me with Google Chrome a couple of times. Worse of course is when Windows Update messes up and you are stuck with re-installing Windows.

We need to keep all these things in mind when we deploy updates, that we aren’t just putting a lot of noise in front of customers. That we are respectful of people’s time and the fact that they need to get work done with their computer. That they may have restrictions like bandwidth limits and will need ways to work around these. We especially have to increase our product quality so that our automatic updates don’t break things and don’t cause problems. A certain number of current upgrade difficulties is due to Sage pushing upgrade tasks to Business Partners rather than automating the process; now, Sage needs to spend the time and make the investments to automate all these tasks.


I just updated my iPad and iPhone to iOS 5.1 and this was a fairly painless procedure. It took the device a little time to download and install the update, but it did it all without intervention from myself. It will be nice when upgrading large multi-user business applications is just as easy.

Written by smist08

March 10, 2012 at 6:22 pm