– so much more than just a CRM

Posted by jack on April 26, 2013

One issue that deters organisations from adopting Salesforce is the higher cost of licences – if you do some simple arithmetic you quickly end up with a formidable number – especially when comparing Salesforce Enterprise with much of the competition. And the saas model means after spending all that money you don’t even own a copy of the software!

There are a number of reasons why this kind of comparison can be a bit misleading – for example the phrase “perpetual licence ” may legally mean effective ownership, but in practical terms unless you have support and maintenance in place (and the cost of this is normally 20 – 30% of the original box price per year)  then the value of what you purchased quickly decays – even with s&m it is easy to get trapped in  old versions of software due to the costs of upgrade – one client I worked for had a highly configured Pivotal installation that ran their business and could not upgrade it. They were running CRM without email integration!

Like much of IT, software packages of any type do not have as long a life as other assets – which is why accountants tend to write them off over many fewer years than they take for fixed plant for example.  With saas like Salesforce (other brands are available) you are always on the latest version for as long as you subscribe.

But the accounting cost of software is not the theme I wanted to address now, but how Salesforce can quickly become a key component well outside the core CRM use when integrated to other systems, and how that in turn can enrich the CRM. My example is a recent development for a client selling hotel rooms, but can apply to many other businesses.

Hotel rooms can be booked using a wide variety of rate codes; some rates can include or exclude items like breakfast or late check-out, can  be exclusive to specific consumers or travel agency groups, or special offers (effectively sales prices). The number and variety of rates is constantly changing as all those concerned in the business seek new ways to grow their business.

As the use of these rates changes, so do the information reporting requirements for monitoring performance. With several thousand rates in use, rather than individually select every rate required in every different report, the client’s data warehouse has evolved a set of reporting flags and descriptions to allow rapid production and one-point maintenance of such reports.

But the data warehouse has no user front end, so each time a new rate is required, or an existing one is moved into or out of a selected group of rates for a specific requirement, the poor data warehouse manager must be asked to adjust the values in this reference data –  and I have an aversion to being included in business processes and repeatedly doing simple dull SQL updates. Other users were asking the report writer to manually include/exclude rates to get the reports they want quickly – neglecting update of the reference data and causing different reports intended to be comparable to end up including different sets of rates.

In essence, a single table of reference data can be represented as a single object in Salesforce enterprise – so I could rapidly design a new object based on the data fields in the SQL table, using entirely drag & drop customisation. The natural candidate for the Salesforce object Name is the rate code itself (as that is the one fixed value in the table) but Salesforce does not allow imposition of the Unique constraint on object  Names, so I did have to apply a trigger to prevent duplicates.Here is the code for my trigger (Rate_Code_Description__c is the name of the custom object:-

trigger rateCodeDuplicatePreventer on Rate_Code_Description__c (before insert, before update) {

Map<String,Rate_Code_Description__c> rateCodeMap = new Map<String, Rate_Code_Description__c>();
    for (Rate_Code_Description__c rateCode : {
    // Make sure we do not treat a rate code that is not changed during an update as a duplicate
    if (( rateCode.Name != null) && (System.Trigger.isInsert || (rateCode.Name !=
    // Make sure another new rateCode isn’t also a duplicate
        if (rateCodeMap.containsKey(rateCode.Name)) {
            rateCode.Name.addError(‘Duplicate rate code in the same batch’);
        } else {
                rateCodeMap.put(rateCode.Name, rateCode);
    //using a single query, finad all the ratecodes with the same name
    for (Rate_Code_Description__c rateCode : [SELECT Name from Rate_Code_Description__c WHERE Name IN :rateCodeMap.KeySet()]){
    Rate_Code_Description__c newRateCode = rateCodeMap.get(rateCode.Name);
    newRateCode.Name.addError(‘This rate code already in Salesforce’);

Standard salesforce drag & drop form design allowed me to group the various checkboxes into related sections to help users manage their own rates – in this client there is good data discipline and cross-functonal cooperation, so I have not chosen to apply varying field level security – but I could have done so with a little more time.

Integration between salesforce and the data warehouse was undertaken using Cast Iron – the integration is 2 way but not symmetrical, since with the exception of the rate code (object Name) itself, we wanted all the other entries to be mastered in Salesforce, even if originating from the data warehouse table.  And we need to ensure that users get confirmation that entries put in Salesforce have correctly updated the data warehouse table.

New rates can be input in the data warehouse – this happens automatically where a new rate code is in use in incoming reservation data but does not exist in the reference data table – in this event a stub record is created using globally applicable rules to set a few flags to sensible defaults and taking a description from the first incoming reservation record. This new rate then is synched by IBM Cast Iron using a Poll Inserted Rows database activity into Salesforce. Once in salesforce a workflow rule sends an email to a responsible member of staff (identity varies according to the value of rate code input) so that person can then correct the description and set flags to the appropriate values.

The Salesforce object is connected to a second Cast Iron orchestration using a Poll Updated Objects activity – this then send the updated values back to the data warehouse table. Finally, the response from the update activity is used to update the Salesforce object in a single date field to confirm to the user that all the integration has worked correctly and their input has updated the data warehouse table.

Total time taken to develop, test and implement this is less than two days, and the job of maintaining the rate related data is put firmly where it should be – with the business users.

Now, here is the gravy – now that we have all this rate code information in Salesforce I can leverage this to improve the CRM – providing users with information on customer, partner and supplier related activities based on both this rate code data and the other objects already in Salesforce. We’ve not done that part yet, so I will write about that another day.








Comments Off on – so much more than just a CRM

Albacore Ltd for Salesforce with data integration using IBM Cast Iron

Posted by jack on February 2, 2013

For 2013 Albacore Ltd is focussing on the use of IBM Cast Iron to integrate cloud applications with internal systems. is the leading Cloud application, and Albacore Ltd has over three years experience in architecting solutions that configure Salesforce and integrate to back office systems using IBM Cast Iron Live.

If you are a UK based organisation considering  Salesforce* then get in touch at

*NOTE: For data integration you must have Salesforce Enterprise or Unliimited licences; small business and workgroup editions do not allow data integration.

Comments Off on Albacore Ltd for Salesforce with data integration using IBM Cast Iron

Using Cast Iron to integrate Salesforce to the data warehouse

Posted by jack on February 12, 2012

I integrate Salesforce Enterprise to the SQL Server based data warehouse using IBM Websphere Cast Iron Cloud Edition.

Cast Iron includes a built-in connector for Salesforce and what they term a “secure connector”, being an applet you install inside the firewall on the secured LAN that connects to the Cast Iron service on the Internet using a secure key to enable encrypted data communications without making holes in firewalls.

Synchronising the data warehouse with Salesforce

My normal approach is a standard data warehouse one; each Salesforce object is mirrored by a staging table in the data warehouse that has the same data elements as the Salesforce object.

Cast Iron is configured to synchronise data between Salesforce and staging tables at regular intervals.

Errors in copying from Salesforce are posted to a custom error object in  Salesforce (why? Because one possible error is loss of availability of the data warehouse – not much point trying to posting to the data warehouse in those circumstances).

Copying data from the data warehouse to Salesforce

Customer transactions are copied into the data warehouse from other applications, and from there loaded into Salesforce.

Cast Iron  triggers stored procedures to start a load process (or we can use SQL Server Agent or another local mechanism – but it is sometimes neater to keep all the data integration processes within Cast Iron).

Errors in this case are posted to the data warehouse (since one possible error is loss of availability of Salesforce – not much point trying to posting there in those circumstances).

Closed loop feedback

All applications are occasionally subject to non-availability – in these circumstances some records may get missed from synchronisation. For critical records I deploy a feedback loop along these lines

  • Source record changes are synchronised to the target
  • The target is itself a source for a second synchronisation of a skeleton record (Primary key and datetime stamps only)
  • The target for this skeleton is alongside the original source records
  • A regular process re-sends any record updates included in the source but not the target skeleton records.

Since data synchronisation over the Internet take place over an interval this is not an instant correction, but I have found it works well where a one hour delay in synchronisation accuracy is acceptable.





Comments Off on Using Cast Iron to integrate Salesforce to the data warehouse

Personal service in an age of automation

Posted by jack on February 12, 2012

I recently helped a client automate the operation of a loyalty programme – so that when the customer crosses a threshold in terms of purchase they automatically receive an email advising her of a benefit she is entitled to on any subsequent purchase.

This was simple enough to program in Salesforce using workflows and email templates, and the move from effectively a static marketing list to an interactive membership club has had a discernible positive impact on customer activity. Without the automation this move would have been impractical.

There were two other effects that this automation triggered:-

  • Much closer attention to the accuracy of individual’s details –  improving the quality of the data and flushing out shortcomings in the data integration and processing.
  • More personal service delivery to the most valuable customers.

This last is both a source of costs (staff time) and also a mark of distinction in a market notable for the increasing use of clever automation to give the impression of treating customers as individuals whilst avoiding the costs that real individual treatment can involve. Perversely, one source of positive feedback is in the resolution of customer issues caused by the misfiring of automated systems – turning initial negativity into positive advocacy by the provision of old-fashioned personal service.

We are all, as consumers, getting smarter at detecting the operation of these clever automated systems – and increasingly irritated when attempts to get human customer service are thwarted by  call management systems that try to persuade us to accept the actions of a computer instead. Perhaps the powers that be should occasionally take a break from ever-reducing costs through automation to consider how to benefit from real human interaction and improve the perception of their brand.

If you can focus some of the expensive service staff released by automaton  on the potentially most important customers, the impact on the bottom line can be better than pursuing a purely cost-saving approach to automation.




Comments Off on Personal service in an age of automation
Categories: CRM

Head in the Cloud?

Posted by jack on May 13, 2011

We have been undertaking a lot of work “in the Cloud” in the last year. For anyone who has been in a coma for the last five year, cloud computing is “where it’s at” – meaning all the vendors are jumping up and down shouting “me, me, me!” to anyone they think might influence a purchasing decision – like all new(ish) frontiers, fortune favours the early leaders.

One early leader in the Cloud, Salesforce, has shown a clean pair of hells and is almost over the horizon before the CRM competition got going – for Microsoft this must be a bit sad, since their conventional in-house CRM offering had finally seemed to be gaining traction after a very slow start (not helped by early versions of Microsoft CRM lacking some basic requirements for a not particularly cheap enterprise CRM). Whilst there are one or two competitors which also have cloud-based CRM, Salesforce is now a dominant market leader – and taking a leaf out of the old Microsoft book, they have made sure that new users can buy a pretty low-priced licence for a basic version, whilst pouring resources into improving the more expensive editions to raise the bar for the competition.

For any sort of sophisticated use and particularly for enabling data integration and multiple user roles, most organisations will choose the Enterprise version, and this carries a rather higher licence fee – and looks expensive compared to much of the competition until you take account of the overhead in servers and IT support in-house systems require – but Salesforce have ploughed much of the revenue back into developing their product – and it is now pretty good (at a price).

There are two common stated objections to Cloud computing – “we can’t trust a third party with our data out on the Internet” and “we need our CRM to integrate with other systems,  and feed our data warehouse/reporting”. These can both be overcome, provided the unstated third ob jection “what about our jobs in IT?” is dealt with first.

I am convinced that the Cloud does NOT mean redundancies in IT (though there is, as always, some retraining), but Salesforce do not make it easy to convince my colleagues by bandying about terms like “No Software” – of course this is not really true on any level

  • Salesforce is software, you just don’t install it on your server
  • If you want to integrate email from Outlook, then you have to install an ActiveX plug-in on each client (= software)
  • If you want to change the look and feel, you need to write some code (= software)
  • If you have particular requirements for data validation or automation, you need to write some code (= software)
  • If you need to undertake data cleaning or integration to other systems, you will need more software.

What is true is that you do not have to install on servers,  manage upgrades or servers, and that is a real saving you can balance against the higher annual costs of the user licences.

For smaller organisations wanting to check out Salesforce, I recommend going to to look at the options – note that

  • Contact Manager doesn’t do much
  • Group is limited to a maximum of 5 users
  • Professional is more expensive but not limited to a user count
  • Enterprise is twice as much as Professional, but what you need for integrating into your other systems.

You can get a free trial period for any edition and I suggest you do that for the cheapest edition you think might meet your needs.

Albacore Ltd offers consultancy and implementation support for SMEs in the London area on Salesforce – but if your needs are pretty straightforward or you have your own CRM technician with or without Salesforce experience then you can almost certainly do without our help.



Comments Off on Head in the Cloud?
Categories: CRM

Why I like Gold-Vision CRM

Posted by jack on May 5, 2010

For some years I have been looking after the CRM for a customer who uses Gold-Vision CRM. The customer, a growing owner-run business, had already purchased Gold-Vision when I arrived for the first time soon after the Millenium – initially to sort out their email, which ran for 30 staff from a single Windows SBS 2000 server sat in the middle of a top floor office with no air-conditioning and a poorly insulated flat roof – so as a result their server overheated and cut out in the middle of each summer day.

Emergency over, (thanks to TNSC, a warmly recommended infrastructure maintenance services company) the next job was to sort out the CRM.

Now, in a previous life I had some mixed experiences with Goldmine – I have not had anything to do with Goldmine for many years but back in the day it was very poor…… the data model was a mess and it sold because it looked OK out the box and had a lot of claimed features, but never really did exactly what the business needed…..

So I though “mmmm – a low-cost CRM called Gold-Vision sounds like Goldmine – this is going to be painful” – but actually when I started looking into it the software was good – clean data model and a neat email integration that knocked the spots off what I was used to in Pivotal at that time. The big challenge was not the software but my client, who had loaded all their old Act! databases in and mixed up customers, suppliers, friends and staff in a glorious jumble of confusion.

What they really needed was a way to manage the services they provided to their regular customers, and once I had convinced them of this, cleaned up the data, removed the unwanted contacts and configured the system they were cooking with gas.

At that time (2004) the biggest issue with Gold-Vision we had was the lack of fields at the Account level – whereas in the higher-priced packages like Dynamics CRM, SalesLogix, Pivotal, and SalesForce there is the ability to add additional entities and fields, lower priced alternatives often limit the amount of customisation they enable. In 2004 we used every field provided at the account level.

But at that time it was enough, and over the years each time we got a new release of Gold-Vision we got a bit more of what we need to run a by now pretty organised high-value account management operation with a progressively enhanced data set. In the meantime the business has grown to the point where a lot of automated support is now required to maintain consistency; having a clean database model made it easy for me to automate links between the CRM and the company data warehouse to provide average revenue and other statistics into the CRM, and to take data collected in the CRM into the data warehouse to generate automated reporting and comprehensive customer dashboards. Other reports, delivered to fixed locations using a vb.NET managed set of Crystal reports, are accessed via weblinks built into the CRM.

With any software product, there are always times when I think “oh, what a pity it doesn’t do this!” Or “Why on earth did they make this process so clumsy?” – with Gold-Vision I send them an email and sometimes they actually make the change in a subsequent release….great.

So this is why I like Gold-Vision:-
* It is not too expensive
* It is not at all shoddy
* The customer support is good and individual (we know each other)
* The email integration is excellent and works without user cooperation
* I can manage the configuration using the supplied Admin portal
* I can link to the data tables using SQL, (and I even put some triggers in but don’t tell anyone)
*The version upgrade process is painless
*My users like it

If you are in a business where the entity model for CRM has to vary from the one in Gold Vision then maybe you should look at higher-priced alternatives like SalesForce, but do take a look at lower cost alternatives because sometimes simplicity is an advantage.

Here is a basic entity list for Gold-Vision – you do not need to use it all and you can change the names to suit
Users – User Groups – Accounts – Contacts – Activities – Mail items – Campaigns – (mailshot) Runs –
Events – Sessions (in Event) – Products – Product Groups – Projects – Quotes

There is only basic workflow but as administrator you can control write access to individual fields and visibility of entire entities. The application uses SQL Server as a database.

We have just started using the integrated Gold-Vision Connect email communications platform, early indications are positive, but I will come back to that in a later posting.

I am currently working on a SalesForce implementation, so I will share some thoughts on this in a later posting – SalesForce works out much more expensive than Gold-Vision, but it is horses for courses. .

I ought to end by saying that I have no specific connection with Gold_Vision other than as a happy customer.


Comments Off on Why I like Gold-Vision CRM
Categories: CRM