Sage CRM 7.2 : Shuffle that Workflow!

Workflows are an integral part of Sage CRM, and we all know how crucial they are to any business that relies on them to perform their daily processes.

In my experience as a consultant, there have been many times when users from client sites have contacted us to say that they have mistakenly progressed a workflow to an incorrect state and want to move it back to the previous state.

In today’s blog, I’ll be giving you step-by-step instructions on how you can ‘shuffle’ any workflow to the state your client user wants.

I’ll be taking an example of the Opportunity workflow and show how you can move it back from its current state to the previous one. We’ll assume a scenario where a lead is incorrectly set to “qualified” in the workflow; which means the workflow is in the ‘qualified state’, and we want to bring it back to the ‘lead state’.

So, let’s begin!

Step 1:

Let’s pick an opportunity in the Qualified state from a list of opportunities in Sage CRM. Now, when you hover your mouse on this opportunity, you will see a URL at the bottom of the screen that will tell you the Opportunity Id (Oppo_opportunityId – highlighted in green) for this particular opportunity. In this case, it is 22.

Step 2:

Having found the correct opportunity, it is time to look into the Opportunity table in your CRM database and find out its corresponding ‘workflow id’ (oppo_workflowid). In case you ever wondered what a ‘workflow instance’ was, this is it! You can find the workflow instance of an opportunity by executing the following SQL command.

SELECT  oppo_workflowid

FROM     Opportunity

WHERE  oppo_opportunityid = 22

The above SQL command returns the value of oppo_workflowid as 3165. With that information, we will now go to the WorkflowInstance table to get some more information about this workflow instance record in step 3.

Step 3:

There are two things that I always check in the WorkflowInstance table for a given workflow instance record

1. wkin_currentstateid, and

2. wkin_workflowid fields.

WkIn_currentstateid, is used to find out what current state the workflow under consideration is in, and WkIn_WorkflowId  helps me to figure out the right workflow, which in turn helps me to list down all the states for that workflow. You can find the wkin_currentstateid and wkin_workflowid by executing the following SQL command.

SELECT wkin_currentstateid, wkin_workflowid

FROM   WorkflowInstance

WHERE  WkIn_InstanceID = 3165

The above SQL command returns the values of wkin_currentstateid and wkin_workflowid as 11 and 2 respectively.

Step 4:

Now we will use the wkin_workflowid value, which is 2 in this case, from the above step, to list down all the states for this particular workflow from the WorkflowState table. You can execute the following SQL command for that.

SELECT *

FROM  WorkflowState

WHERE WkSt_WorkflowId = 2

Below is a snapshot of the result generated by the query above. As you can see, the table in the snapshot has got all the standard opportunity workflow states that comes with the vanilla Sage CRM install.

Step 5:

So as we know, this lead was incorrectly progressed to the qualified state, as you can see in the image below. We now have to bring it back to the lead state.

We can do so, by updating the current state field (wkin_currentstateid) for workflow instance 3165, which is 11 (Qualified state) at the moment, to 10 (Lead state). If you see in step 4, the state id (WkSt_StateId) for Lead is 10. Let’s write this in SQL

UPDATE WorkflowInstance

SET    WkIn_CurrentStateId = 10

WHERE  WkIn_InstanceID = 3165

Warning : It is extremely important to be certain of the workflow instance you will updating as a final step in the process, as updating the current state id of an incorrect workflow instance will progress another workflow created by someone else!

Now just right click on your browser and reload the frame, and you will see that this opportunity workflow is brought back one step to Lead state again as seen in the image below.

Similarly, you can ‘shuffle’ any workflow to any state you want by simply following the above 5 steps. I recommend you try this out on a test environment first to get a firm conceptual grasp of the steps above.

Let me know how you go. Questions, welcome!

Until next time…happy consulting!  🙂

Project Infinity – CRM Just Got Better

I have been working with Sage CRM for many years with a multitude of clients across various industries. One thing that all of them have in common is the requirement to provide a user interface that helps achieve business objectives. It makes perfect sense, that if the user interface is easy to use and has intuitive controls, then it will lead to increased user acceptance and data quality.

The new buzz word for this is UX, or user experience.

I believe that the keys to creating a good user experience are:

  • Simplicity – Give the user the information they need and nothing they don’t (e.g. do users need to see the reports section?)
  • Responsiveness – Both in speed and user feedback (e.g. clicking a button provides obvious feedback to indicate that it was clicked)
  • Timeliness – Provide functionality only where it is useful (e.g. pre-populate an address form, based on a selected suburb)

Customisation of Sage CRM
It is possible to create customised pages for CRM, which allows for the display and editing of multiple records from multiple tables. It takes a bit of coding, but it is completely doable with plenty of examples available on the web.

Over the years we’ve developed many custom pages, some very simple and some very complicated. There was some pretty cool code written, a lot of which was designed to be re-used over and over. We wanted to create a method that would allow our consultants to quickly develop new CRM pages, using the code that had already been written. This was the beginning of the Accsys Framework (which has recently been renamed Project Infinity).

Over time, this has evolved into something bigger than we ever imagined. We now have a fully working User Interface along with a Webservices Application to facilitate communication between the end user and the database. We are now focusing entirely on providing an unparalleled user experience with little or no training required for the end user. I’m not going to get into how it all works at the moment, other than to say that is built on AngularJS along with a custom built WebService. There will be more details on this in the coming months, but for the time being, just assume that it is all really cool stuff.

Building around a search engine
First and foremost is the search function. It is something people do every day and it has become a natural way to get things done. It goes without saying that CRM systems are a huge repository of data, but this is all but useless if it can’t be found easily and in a format that is useful to the end user.

So we replaced the search screens in CRM with one simple screen.




Wizards for Creating Records
Most processes in a business where data is being created involve multiple processes. For example, booking in a meeting with a new prospect can include:

  • Creating the organisation
  • Creating the key contact
  • Creating the Opportunity
  • Creating the Meeting

This can be reasonably straight forward in Sage CRM, all the user has to do is go through a few screens, then the workflow takes over and guides them.
What we have done by focusing on the end user, is to come up with a wizard driven process that is not only quicker but is also aimed at improving data quality / collection at the same time.




Dashboards
The current dashboards in CRM are useful, particularly the dynamic dashboards. We have recreated this mainly to keep it inline with our new UI. We are basing on Kendo reports and it allows some really cool reporting features.



Try it out
So after the big spiel above we would welcome you to take a look at what we have to offer. This is only the first cut of the new UX and was recently used as a demo for a potential client. We are very excited about what we have achieved to date, but even more so with what we plan to do with this project in the future.

If you would like a login please email me at josh.leighton@accsysconsulting.com.au and I’ll set it up for you.

Accsys Consulting – Project Infinity

You can also view the framework in a separate window, by clicking here “Sage CRM Infinity“.

 

Sage CRM 7.2 Client-Side API

Recently I was asked to hide the continue button on the ‘Case’ summary screen for one of our clients. As you can see in the image below, it is located on the top right corner of the screen.

'Continue' button on the top right corner of the screen.
Case summary screen with ‘Continue’ button

Since it was a client side customization, I was aware that it could be achieved by one of the many easy to use APIs released with the launch of Sage CRM 7.2. These new APIs can be accessed from http://help.sagecrm.com/js-api/classes/index.html

Sage CRM 7.2 client-side API
Sage CRM 7.2 client-side API

Coming back to our client’s requirement, I went to the above link, and found the ‘hideButton’ API to achieve the goal.

Having found the right API, following are the steps to plug it in Sage CRM 7.2

1.  Go to Administration -> Customisation -> Cases -> Screens

2. Select the correct screen you want the API to trigger for when it loads. Remember you can enable ‘inline customisation’ to find out the right screen.

3. Once you are sure of the screen name, select it from the list of screens in the Case entity (in my case it was ‘CaseWebPicker’). This will give you an access to the ‘Custom Content’ area where in you can type the following javascript code that uses the above API.

4. Code:

     <script>

                crm.ready(function()

                {

                                crm.hideButton(“Continue.gif”);

                })

   </script>

Click update and save the changes.

And voila! The continue button has disappeared!

Case summary screen without the 'Continue' button.
Case summary screen without the ‘Continue’ button.

Similarly, you can use many of the client side APIs with Sage CRM 7.2 to achieve your customisation requirements. The other benefit of using the new APIs is that they are browser independent, and you can use them across IE, Chrome or Firefox without any issues.

I would like to hear about you’ve leveraged Sage CRM 7.2 client side API. Feel free to drop in a line or two about your experience.

Happy Customising!

How to install Nagios XI ?

It’s time to check your IT infrastructure’s performance again!

Today’s blog is the second blog post in the infrastructure performance monitoring series. To recap, in my first blog we looked in brief about how businesses can harness the capabilities of a cool open-source performance monitoring tool – Nagios XI. For those who haven’t read my first blog post in this series can find it here.

In this blog, I’ll be walking you through the installation of Nagios XI step-by-step.  Nagios XI is available under GNU license. A lot of plugins are available and its sizeable community makes Nagios XI the biggest open source performance monitoring tool.

Before we dive into the installation process, it is mandatory you have the latest version of the Linux distribution, CentOS, running on your machine. For those who don’t, you will have to download it from here, and then set it up on your machine before following the steps to install Nagios XI. Setting up CentOS on your machine is beyond the scope of this blog and demands a little space of its own. You can find a detailed instruction manual on installing CentOS server here.

After you have CentOS up and running on your machine, you can start working your way through the steps below to install Nagios XI. So, let’s get going!

If you follow the instructions correctly, you will end up with the following information.

  • Nagios XI and its plugins will be installed under /usr/local/nagios directory.
  • Nagios XI will be configured to monitor a few services of your local machine (Disk usage, CPU load etc)
  • Nagios web interface will be available at http://localhost/nagios

To start with, we need to install required dependencies like Apache, PHP, and libraries like gcc, glibc, glibc-common, GD and its development libraries before installing Nagios XI 4.0.6. To do so, we can use yum package installer.

# yum install httpd gd gd-devel php gcc glibc glibc-common

Create a directory

# mkdir /root/nagios

Navigate to the ‘nagios’ directory you created above

# cd /root/nagios

Download nagios-core & plugin

# wget http://prdownloads.sourceforge.net/sourceforge/nagios/nagios-4.0.6.tar.gz

# wget http://nagios-plugins.org/download/nagios-plugins-2.0.tar.gz

Untar Nagios core

tar xvf nagios-4.0.6.tar.gz

Go to the nagios-4.0.6 directory

# cd nagios-4.0.6

Check all your Nagios XI core configuration settings

# ./configure

If the above configuration settings are as desired, then compile and install all necessary binary files for Nagios XI

# make all

Install all needed libraries in your machine

# make install

Install init scripts for Nagios XI

# make install-init

Install Nagios XI command line. This will enable you to operate Nagios XI from the command prompt.

# make install-commandmode

Install sample Nagios XI files

# make install-config

Install the cool web interface for Nagios XI. The following command will also create a web admin user- “nagiosadmin”

# make install-webconf

After this, we will create a new password for the newly created web admin user. You need to enter the admin password twice and also store it securely in a place for future reference as you will need it to login to the Nagios XI web interface.

# htpasswd -c /usr/local/nagios/etc/htpasswd.users nagiosadmin

Start the service and start it on boot

# chkconfig nagios on

# service nagios start

Now, compile and install Nagios XI plugins. We downloaded Nagios XI plugins in /root/nagios, so we will go to that location and install and configure it as below.

# cd /root/nagios

# cd nagios-plugins-2.0

# ./configure

# make

# make install

Start apache service and enable it on boot

# chkconfig httpd on

# service httpd start

That’s it! Now open your new Nagios XI web interface by typing http://localhost/nagios and provide the username “nagiosadmin” along with the password you created earlier in this process.

In my next blog, I’ll show you how you can use ‘bash-shell’ scripting to automate the rotation of performance logs from the CentOS server to your file server. Until then you can explore Nagios XI further and understand its basic configuration settings for start.

Let me know how you go with the Nagios XI installation. See you in my next blog!

Sage CRM and SSRS

In my last post I spoke about being able to use Crystal Reports through browsers other than IE. That got me thinking about the reporting options that are available in Sage CRM and the reasons that each of the different reporting options would be used. As I see it there are 3 different options:

  1. Standard CRM Reporting
  2. Crystal Reports
  3. Other reporting application

Today I will be discussing point 3 as not everyone has experience or access to develop Crystal Reports. The first reporting application that came to mind is SQL Server Reporting Services, or SSRS. The reason I will demonstrate how to use this one is because it is available for most installations utilising MS-SQL as the database engine. The advantages of using SSRS over other application reporting tools are as follows:

  1. Easy to deploy
  2. Easy export to various formats
  3. Reports can be run using report subscriptions
  4. Interactive sorting
  5. Drill down reporting
  6. Browser Based Interface

A lot of these functions are already available through the standard CRM reports or through Crystal Reports, however the decision to use SSRS over other reporting tools will be based on the end user requirements. To generate the report I will make use of the ability of Sage CRM to run ASP pages when they are stored in the reports directory. Jeff Richards wrote about this back in 2009, see here. This is done by saving the file in {CRM Install Director}/wwwroot/reports/{Report Category Name}.

To generate a report, I only need to create one asp page, which will contain 1 line which simply redirects to the report server. I won’t be going into how to create the SSRS report in the first place as there are plenty of resources on the web on how to do this and I would only be wasting my time trying to replicate what other users have already written. Microsoft has a useful guide on how to create the SSRS reports, so if you are new to SSRS then this may be a good place to start. This blog post also assumes that you have SSRS installed and working correctly. For this example I will simply be using the localhost installation.

To get started with a report you only need to create an asp page. This bit is actually really straight forward and can be done with 1 line of code. In this example I created an asp page called Sample Report.asp. The file contains the following:

<% Response.Redirect("http://localhost/ReportServer/Pages/ReportViewer.aspx?%2fOpportunity+Summary&rs:Command=Render") %>

This simply redirects to the report server making and displays the report. You should see something like this:

Step 1 - Sample Report

This report is based on the same report that I did in Crystal in a previous post, although that one was formatted a little bit better than this one. This sample works fine when there are no parameters, if I were to add parameters to the report the following would be displayed first.

Step 1 - Sample Report With Param

Then you can view the report by clicking on the View Report field. Using this reporting method adds a lot of functionality over the standard reporting in CRM, such as:

  1. Ability to sort the data
  2. Export the data into a variety of formats including
    1. XML
    2. CSV
    3. PDF
    4. MHTML (Web Archive)
    5. Excel
    6. Tiff
    7. Word
  3. Refresh the data
  4. Change the parameters used to run the report

So this bit is straight forward, however this is only the tip of the iceberg on what can be done. The next example will show a method on how to replace the Company Summary report that is generated out of CRM. The steps I went through were as follows:

  1. Create my SSRS report to mimic what is currently generated out of CRM. In this case I have done a very limited version of what can be done in SSRS, however it will illustrate the purpose.
  2. Create an asp page as follows:
<!-- #include file ="../eWare.js" --> 
<% var Id = new String(Request.Querystring("Key1")); 
Response.Redirect("http://localhost/ReportServer?%2fCompany+Summary&rs:Command=Render&
rc:Parameters=Collapsed&rc:Toolbar=true&comp_companyid="+Id) 
%>
  1. I saved the asp page in wwwroot\custompages\reports.
  2. Created a button group for the Company summary screen
  3. Added a link to the custom asp page that I created in step 2

As you can see it is quite a straight forward exercise adding in additional reports into CRM, regardless of the reporting tool that is being used.

Crystal Reports and Sage CRM

With Sage CRM now supporting browsers other than Internet Explorer, then can be issues when trying to run Crystal Reports. The issues stems from the fact that Sage CRM uses an ActiveX component to display the report. This ActiveX component is quite powerful giving you access to export the report to multiple formats, search for text, change the display, etc. Only problem is that it is limited to Internet Explorer only.

I personally have a problem with using IE and use Chrome on a daily basis. My main issue with IE is with the limited support for HTML5, particularly in older version of IE. I will concede that there has been an improvement in the latest version and I probably could use it without any problems, but I’ve now moved to Chrome and haven’t come up with a good reason to not to use it. There is a cool little website at html5readiness.com which outlines which features of HTML5 and CSS3 have been implemented in the main stream browsers. Speed is also another consideration and I think the image below sums it up perfectly.

Browsers

Now that I have had my little rant, I will move on to what can be done with Crystal and Sage CRM. In this blog post I will show how to generate a Crystal Report while using Chrome. Unfortunately we do have to forgo some of the functionality that is available through the ActiveX control, however I believe that being able to generate the report in the first place is a real plus.

When trying to run the report in Chrome you should see something like this appear.

Image 1
This is not really all that useful. As I mentioned before this is a problem with Chrome not being able to use the ActiveX components, or at least cannot use it when using a vanilla installation. There are a couple of options available here to get it working:

  1. Use an add in to allow ActiveX components to run, for example you can use IE Tab or ActiveX for Chrome
  2. You can change the way the report is generated and presented to screen.

Both options are valid solutions to the problem; however point 1 requires that software is installed on the workstations for it to work correctly. This blog post will go through point 2 and the changes that are required for a system wide solution.
To make this work you will need to edit the standard Crystal Report asp files that are provided with an installation of Sage CRM. These files will be found in {installation directory}\crm\wwwroot\reports\CrystalReportViewer. In this directory you will see the following files:

  1. Cleanup.asp
  2. RDCrptserver11.asp
  3. RunReport.asp

The only file that needs to be modified to work is the RunReport.asp. The modifications are reasonably straight forward and are documented below.

  1. Backup the RunReport.asp
  2. Find the linesession("oRpt").EnableParameterPrompting = False

    Add the following code:dim CrystalExportOptions
    set CrystalExportOptions = session("oRpt").ExportOptions
    FileNameExport = year(date())&"-"&month(date()) & "-" & day(Date()) & "-" & hour(Time()) & "-" & minute(Time()) & "-" & second(Time())
    FileName = Server.MapPath("../../") + "\Temp\" + FileNameExport + ".pdf"
    CrystalExportOptions.DiskFileName = Server.MapPath("../../") + "\Temp\" + FileNameExport + ".pdf"
    CrystalExportOptions.FormatType = CInt(31)
    CrystalExportOptions.DestinationType = CInt(1)
    session("oRpt").Export False
  3. Find the linesset session("oPageEngine") = session("oRpt").PageEngine
    End If
  4. Add the following code at the endResponse.Redirect("../../Temp/" + FileNameExport + ".pdf")

    dim fs
    Set fs=Server.CreateObject("Scripting.FileSystemObject")
    if fs.FileExists(FileName) then
    fs.DeleteFile(FileName)
    end if
    set fs=nothing
  5. This step is optional as it will run with the code still there, however it is no longer needed. To clean it up remove the script:<script language="javascript">
    function getQueryParam( name )

    </script>
    Leave the script that contains the function CallDestroy()

This will now produce a report below.

Image 2

Now because coding can be loads of fun, I have provided the modified file RunReport available for download. Feel free to use it at your own site(s), the only thing I ask is that if you come up with any cool features let me know so I can share it around.

This method does make use of the Temp directory that is within the Sage CRM website, however the files are immediately deleted after they are returned to the client. This method means that the reports are never stored in the CRM library, however the method for producing reports that are stored against the company or other entities will be investigated in future blog posts.

Some things that I have noticed when doing this is that you don’t need to have the Crystal Report Server on the CRM server itself, it will run using the Crystal Runtime files. This works really well in the situation where you have Sage CRM integrated with Sage ERP 300 as they are provided as part of the workstation installation. One other benefit that I have noticed is the speed at which the report is generated, it is surprisingly quick. I wish I could say that this was by design, but unfortunately it was just one of those items that was just plain good luck.

Please note that the change to these files won’t be supported by Sage, however we do have this running live at a lot of our sites with no issues. These files have been tested with Sage 7.1 and 7.2.

The next post will concentrate on how to generate a Crystal Report from the various screens within Sage CRM. This will concentrate mainly on using button groups for the standard entities and using the CRM.AddButton function for asp pages.

Accsys Framework Series: Sage CRM a New Look!

Welcome to our new series on the Accsys Framework. This is a new add on product that is currently in development by Accsys Consulting and we are giving you a sneak peak on what is coming up.

Sage CRM is a tool that can enhance an organizations business processes by handling the menial and tedious tasks that is necessary for a business to run smoothly by getting the data in order and organised. Accsys Consulting views Sage CRM as one of the most flexible business applications available in the market. This flexibility allows a business to customize Sage CRM to fit the needs of the organisation.

At its very core Sage CRM is an application with three different layers, the user interface, application logic, and the database engine. Making the application adhere to specific business processes requires customization of the three different layers. This customization is done through a variety of means, but most commonly through:

  • HTML
  • Javascript or JQuery
  • SQL Stored Procedures

One of the key advantages that Sage CRM has is the extensibility of the application, allowing businesses to do what they do best without having to change to fit the capabilities of the application.

Technically – extensibility is a system design principle where the system is made to grow and designed so that other components can added on to increase functionality. But if you’re a business partner like us, then you already know that Sage CRM can do that already and that this is nothing new. You can customize Sage CRM by adding new entities, new .asp pages to suit your needs, you can even have CSS to give it a fresher look, use different plugins and many other customization techniques.

Accsys Consulting has decided to take it a step further.

But before I go on with this ‘next step’ let me say why Accsys Consulting decided that we wanted to go down this path. It started as an idea to improve the UI in general of Sage CRM, to make it more up to date on the programming side of the spectrum we wanted to make use of HTML5, to allow business partners to deploy customisations quicker, easier, with more flexibility. In addition to improving the customization component, we were also aiming to improve the end user experience by speeding up data entry and making it as intuitive as possible.

The Framework isn’t a replacement for Sage CRM, instead we see it as an enhancement that builds on an award winning application by adding additional functionality. Our key goal is to provide a system that provides speed, scalability, and usability while taking advantage of the powerful features provided by Sage CRM.

 

 

Just to get you started, here is a taste of some of the features that we have implemented so far.

Logon Screen

We started with the login screen and made it possible to customize it so that the client can customize it to make it fit their needs. This is possible through the current login page, however we wanted to be able to add new features such as a new s feed for the organization.

 

LogonScreen

Dashboard

We have changed the dashboard so it is more intuitive, in the same fashion as the Dynamic Dashboard in Sage CRM. When a user logs in the Accsys Framework they are presented with the cases that they need to address. To access these cases there are the buttons at the top that indicate how many cases is assigned to the user. By clicking on this button it will point you to an ordered list of your cases

Dashboard

Cases

The first entity we put through the framework was Case Management. We needed this internally to help manage our own clients. We had attempted this a few occasions before, however we did have user adoption issues. When developing the case management screens our approach was to ask the technical consultants what they needed and designed the screens around these requirements. The result was a simple to use interface with as much information as possible on the same screen.

CasesSummary

 

Cases Comparison

In comparison with Sage CRM we have migrated a lot of the standard features to our framework, but added some little touches on the way through. For example, the workflow now shows where you have been and where you can go from the current state.

CaseComparison

Sage CRM with Accsys Framework

 

CaseComparison2

 

Find/Search – we have implemented a global search in the framework that searches through all the records in CRM (item 1)

 

Search

 

Workflow actions – Changed the look and feel of the workflow, this shows visibility with what steps have been taken and that the next steps can be done (item 2)

WF

Case menu Items – changed the menu items to be icons with tool-tips that shows the name of the tab when hovered (item 3)

notes

Notes tab – These tabs were designed in such a way so that the page itself doesn’t refresh every time a user clicks on the other tabs. This is due to the structure of the page altogether as the whole web page and the whole of the Accsys Framework is following the design pattern of MVC or Model-View-Controller. For each page in the framework we have separated parts to follow a certain model. So for instance in the Case Summary screen there are a number of different models with different controllers attached to different views. (item 4)

Default/Accsys Framework – a button to return back to the Default CRM or to go to the Accsys Framework. (item 4)

default

 

This is just a taste of the Accsys Framework and we are currently working towards having a full version released that will be available to other Sage Business Partners. In future articles we will discuss some of the key advantages of using the Accsys Framework and how the Accsys Framework works in conjunction with Sage CRM

Upgrade to Sage CRM 7.2!

Sage CRM 7.2, has been released for almost a year now. If you’re a business owner or an IT manager who rely on the earlier versions of Sage CRM to facilitate your day-to-day operations, then it’s about time you look into what Sage CRM 7.2 has to offer. This latest offering from Sage gives your organisation the edge to be able to communicate with your customers through mobility, social media and business collaboration.

In today’s blog, I’ll be walking you through a detailed procedure on how you can upgrade to the latest version of Sage CRM, version 7.2, and enjoy its new features. So, let’s get going!

Preparing for a Test Upgrade

Sage has released three hot-fixes since the release of Sage CRM 7.2 (b, c, d). Sage CRM 7.2d can be upgraded from 7.1 / SP1 / SP2. For any earlier version, it has to be first upgraded to 7.1. It is recommended to upgrade from 7.1 to SP1, and then to SP2 before upgrading to 7.2.

Before performing the upgrade, it is very essential that you build a test environment to mirror your production environment. This will enable you to test the upgrade in a controlled manner and also inform you about the possible issues that you may encounter during the live upgrade, in advance.

Prior to building the test environment, make sure you’ve got the following items in place:

System Requirements: You can refer to Sage CRM 7.2’s software support matrix to understand the server, client and integration platform which Sage CRM 7.2 will support.

License Key: The license key for version 7.2 can be acquired from Sage.

Hot-Fixes: The hot-fixes (b, c, d) can be downloaded from the Sage portal.

Server: If the existing production server does not match with the server requirements of version 7.2, then it’s recommended to prepare a new server before the upgrade.

Once you have the above things ready, it’s time to build a test server on which you will be performing a test upgrade. So let me brief you about one of the ways you can build one.

What is Hyper-V?

Hyper-V is Windows Server virtualization platform that is included as a role of Windows Server 2008 and 2012. It’s a cool technology, in which you can create multiple snapshots of your software installations (virtual machines), thus enabling you to build your test environment incrementally.

You can begin with installing the server operating system, database, and Sage CRM similar to the versions you have on your production environment. Following this, you can upgrade the Sage CRM to the desired version by running the correct service packs and patches.

You can divide the above installation in the form of ‘snapshots’ that allows you to revert back to the previous installation in case something goes wrong. Following is a screen shot of a Hyper-V interface. Creating virtual machines and snapshots in Hyper-V demands a separate space of its own, and I plan to write a small blog-tutorial on that very soon!

test

With the above things ready, you can take the following steps to perform a test upgrade on the virtual machine you’ve created in Hyper-V:

  • Backup the live database, registry, program files of the existing CRM system, and copy them in an accessible location on your virtual machine.
  • Install the existing version of Sage CRM on the test server.
  • Restore the backup of the live database in Sage CRM’s database created in the database server on your test server. You can run the following script for a hassle free database restore:

Use Master

ALTER DATABASE YOURDB

SET SINGLE_USER With ROLLBACK IMMEDIATE

RESTORE DATABASE YOURDB

FROM DISK =’C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\YOURDB.bak’

WITH REPLACE

  • Copy the backup program files (custom page folder etc.) to the relevant folder in the test environment.
  • Test the data, functions, reports and customisations in the test CRM system.
  • Change some fields in the Custom_SysParams table of the CRM database as required.
  • Upgrade to 7.1 / SP1 / SP2 if the current version is earlier than 7.1 and test the upgrade.
  • Upgrade to 7.2 from 7.1 SP2 and test the upgrade.
  • Outlook plugin may be applied to the client workstations as required.

Testing the exchange integration

It will be easier to test an exchange integration if the exchange server is on a local domain network. If it’s hosted outside, then you will have to liaise with your system administrator for SMTP access.

Live Upgrade

The procedure for performing a live upgrade is very similar to the test upgrade. Performing a test upgrade helps you to know the possible errors and corresponding solutions you might encounter during the live upgrade.

Hence, I will highly recommend you to document the whole test upgrade process and use it as a guide during your live upgrade.

You must be also very mindful of the CRM down-time during the live upgrade, as it is needed by your staff for daily operations.  The test upgrade should guide you well in this case.

Well, with that, I’ll conclude my blog. As discussed earlier, there are many ways you can create a test environment for performing a test Sage CRM upgrade. How about sharing your thoughts about the same? Let the good ideas flow!

You can also refer to this Sage article on the CRM community for further information:

https://community.sagecrm.com/partner_community/b/hints_tips_and_tricks/archive/2014/04/08/sage-crm-7-2-preparing-for-an-upgrade.aspx

Escalation Rules – The Basics

Escalation Rules

I.T. based solutions and I.T. software in general came about as a need to automate tasks. It allows businesses to focus more on their business objectives and not worry about the system that supports it. Escalation Rules allows the creation of automated tasks from notifications, setting values on screen, sending emails given a particular criteria – tasks that users shouldn’t have to worry about in doing their job.

Services on CRM Server

Services

Escalation Rules is a windows service that gets installed by default with Sage CRM. This service is responsible for running any enabled escalation rules that have been set up in CRM. But before we delve into how to create them we need to look at the logical components of an Escalation Rule to avoid issues later down the track. These components are as follows:

  • Criteria
  • Control
  • Task

Criteria – defines the conditions of the Escalation Rule being triggered.

Control – this component ensures that the escalation rule doesn’t run forever (or if you want you can also make it run till the end of time!). This is especially crucial when setting up Escalation Rules that notify other users via email. Without the control component users can and will continue to receive emails until someone turns off the Escalation Rules Service.

Task – this component does the bulk of the work in an Escalation Rule whether it be sending emails, on-screen notifications or just changing a value on the screen.

Both the Criteria and the Control aspects of an Escalation Rule is used in tandem to create a SQL ‘WHERE’ clause

WhereTrigger

The task aspect is executed through a workflow action but without the use of a workflow. It follows the exact the same steps as to how a workflow action is created.

WFactions

 Setup

Let’s say as part of the business process a manager needs to be notified if a lead has a high chance of turning to an opportunity, better yet a client. In this situation we could automate this task by creating an Escalation Rule

  1. Ensure that the escalation service is running.
  2. Go to Administration > Advanced Customisations > Escalation and click on New on the top left side of the screen.
  3. Enter the table or entity that we want this rule to be applied for – in this case ‘Lead’
  4. Enter in  Rule Name ‘Lead Notification’
  5. Enter in the Trigger SQL Clause Lead_Rating = ‘High’ and Lead_deleted is not null and Lead_notified is null.

 

This will ensure that it will only perform our task (sending an email) when

  • The lead rating is set to High
  • The lead hasn’t been deleted
  • And the lead notified hasn’t been flagged

In this SQL clause the lead_rating and the lead_deleted acts as our criteria and the lead_notified (which is a custom field) acts as our control field.

The control works by ensuring not to send emails once it has been filled in with a value.

When you’re done entering the fields hit save.

Now that we have set up the rule itself we now need to add actions to this rule in our case we want an email and to modify our control field so as to not send infinite emails to the manager, which could have dear consequences.

newRules

Choose the new rule that you have created ‘Lead Notification’

  1. Scroll down at the bottom of the screen and hit ‘New’
  2. You will be presented to a screen with the possible workflow actions that we can do; for now choose ‘Send E-mail’
  3. Fill in the Details of the email by adding in the manager that needs to be notified and adding a message to the email. Make sure to fill in the ‘from’ field otherwise Exchange will not send the email out.
  4. Hit Save when you are finished.
  5. Now we have to create the second part of our control component for this escalation rule; again scroll down at the bottom of the screen and choose ‘New’
  6. Select the set Column Value action and choose the column ‘Lead_notified’
  7. Enter in the value ‘Yes’ in the value field
  8. Choose the Attribute as ‘Read-Only’
  9. Hit Save when you are satisfied.

Now we have our escalation rule! Make sure that the escalation rule is enabled otherwise it won’t run at all. Additionally I would advise to test this out so that your poor manager doesn’t get a billion emails about Leads with a High rating, we wouldn’t want him to give him false hope!

 

IT Performance Monitoring

In the current competitive environment organisations rely heavily on information technology to automate business processes, streamline operations, manage resources, and even store yottabytes of data. If you’re an IT or an infrastructure manager or a small or medium size business owner looking to grow then researching about keeping your systems healthy in the long run can be a good starting point and something worthwhile consideration.

Well with performance comes cost, and if you’re concerned about burning a hole in your client’s or your own pocket, then let me break the good news to you. Performance monitoring of your infrastructure doesn’t have to break bank account, and it can be achieved by some really cool tools out there available for free.

In today’s blog, I will give you a brief outline on a similar tool that can mind your servers while you’re peacefully sleeping (isn’t that so relieving?) along with some tidbits on what will be covered in future blog posts to keep you tuned. So, let’s get going!

What is Nagios XI?

Nagios XI is a comprehensive IT infrastructure monitoring tool that constantly checks on all mission-critical infrastructure components – including applications, services, operating systems, network protocols, system metrics and network infrastructure; thus providing you with a complete view of your entire IT operation network and business processes.

And guess what?! Nagios XI isn’t rocket science. Its integrated web-based configuration interface allows users to easily manage monitoring configurations through configuration wizards.

The other cool thing I like about Nagios XI is its notification feature, in which a user can set up alerts in form of emails being sent out to IT staff providing them with outage details so that they can start resolving issues immediately. Moreover, it also provides performance graphs which can be referred to in case of advance infrastructure planning.

What next?

In this series of blog posts, I’ll be taking you through a small step-by-step tutorial on how you can set up a Nagios XI for your business, followed by some advance configuration settings. In the end, we will sum up with an automation task that uses ‘Bash-Shell’ scripting to rotate server logs, download them and format them into a performance report.

Well the fun has just began! I would like to hear from you about how you are planning to monitor your IT infrastructure performance? Drop in a line or two. Meanwhile, I’ll get back to writing the second blog.