Microsoft Gold Certified Partner
Skip Navigation LinksMagnetism Blog

Magnetism Blog

  • Customer Relationship Management: What, Why, How

    In this, my final blog post for Magnetism, I would like to reflect on some key principles of Customer Relationship Management that I have learnt during my time in this role. Whether you are a CRM developer or sales person, an avid CRM user or a CRM newbie I think sometimes its good (and necessary) to return to the age old question “What is CRM and why do we do it?”

    My favourite definition of CRM comes from boostmyproduct.com’s Terms Glossary in which Customer Relationship Management is defined as “a business strategy designed to reduce costs and increase profitability by strengthening customer loyalty.” This definition also answers the question of why organisations all over the world are adopting CRM strategies and software – to reduce costs and increase profitability. Sounds great doesn’t it? I don’t know many organisations that have time and money to spare. If you are one of the majority that don’t have superfluous financial and time resources then the more pertinent question is not what or why, but how.

    The business axiom ‘you can only manage what you can measure’ is the part of the answer. CRM software allows you to measure and report on your business KPIs, thereby allowing you to manage your staff and resources to ensure your targets are consistently met. Once you have set up your CRM software to allow you to record the information relevant to your business’ health you are able to create dashboards and reports that will provide you with the real time information you need to develop forecasts and strategies for your organisation. By making informed decisions you are able to manage your resources to generate the maximum return.

    The visibility into your business that CRM software provides also allows you to recognise and utilise Pareto’s 80/20 principle to your advantage. Pareto’s principle states that for many events roughly 80% of the effects come from 20% of the cause (http://en.wikipedia.org/wiki/Pareto_principle). In business this may translate to mean that 80% of your revenue comes from 20% of your customers, or products. Once you know which 20% provides the most value to your organisation you are able to focus your efforts on that area.

    Image from http://www.strategex.com/profit_enhancement/pareto.php

    One of the most effective ways CRM software reduces costs and increases productivity is by allowing you to implement repeatable processes in your organisation through workflow and automation. Repeatable processes that deliver repeatable outcomes is an equation for success in any industry. When employees know exactly what they need to do to meet their targets they feel empowered and become more productive, meaning greater profitability for their organisation as a whole.

    I have seen Microsoft Dynamics CRM reduce costs and increase productivity for multiple companies during my time at Magnetism, with one of the most significant success stories being the New Zealand Red Cross’ return on investment figure of more than $600,000 in the 8 months following go live. If you are a CRM newbie reading this post and want to know more about how your organisation can see results like that contact us to find out more.

    Full story

    Comments (0)

  • LinkedIn Integration with Dynamics CRM 4.0 Accounts

    A few days ago I was reading a post by Marco Amoedo, where I found a very easy to use LinkedIn connector for the Microsoft Dynamics CRM 4.0 Accounts. By adding a few lines of code to the Account forms onload you are able to make a LinkedIn icon appear beside the account name once it has been saved, which when clicked will search LinkedIn for the account name, and show how many people work there, and will allow you to click on the name to open the account in LinkedIn.

    The code to use this is very easy, and it should work unchanged. Copy and paste the following code from http://marcoamoedo.com/ into the Accounts onLoad event, making sure ‘Event is enabled’ is checked.

    function LinkedInLoader(crmFormField) {

        var ll = this;

        ll.scriptSource = 'http://www.linkedin.com/companyInsider?script&useBorder=yes'

        ll.field = crmFormField;

        ll.container = crmFormField.parentNode;

        ll.nameToSearch = crmFormField.DataValue;

        ll.spanId = ll.field.id + '_linkedin';

     

        if (ll.container != null) {

            var span = document.createElement('span');

            span.id = ll.field.id + '_linkedin';

     

            var td1 = document.createElement('td');

            td1.innerHTML = ll.container.innerHTML;

     

            var td2 = document.createElement('td');

            td2.appendChild(span);

            td2.style.width = '15px';

     

            var tr = document.createElement('tr');

            tr.appendChild(td1);

            tr.appendChild(td2);

     

            var table = document.createElement('table');

            table.width = '100%';

            table.style.tableLayout = 'fixed';

            table.cellSpacing = 0;

            table.cellPading = 0;

            table.appendChild(tr);

     

            ll.container.innerHTML = table.outerHTML;

        }

     

        ll.ApplyCorrections = function () {

            var div = document.getElementById('company-insider-info-window');

            if (div != null) div.style.height = '275px';

            else window.setTimeout(ll.ApplyCorrections, 500);

        }

     

        ll.Enable = function () {

            new LinkedIn.CompanyInsiderPopup(ll.spanId, ll.nameToSearch);

            new LinkedIn.CompanyInsiderStylesheet();

            var span = document.getElementById(ll.spanId);

            if (span != null) span.attachEvent('onclick', ll.ApplyCorrections);

        }

     

        ll.OnScriptReadyState = function () {

            if ((event.srcElement.readyState == 'complete') || (event.srcElement.readyState == 'loaded')) {

                ll.Enable();

            }

        }

     

        ll.Load = function () {

            var script = document.createElement('script');

            script.type = 'text/javascript';

            script.src = ll.scriptSource;

            script.onreadystatechange = ll.OnScriptReadyState;

            document.getElementsByTagName('head')[0].appendChild(script);

        }

    }

     

    if (crmForm.FormType != 1) {

        // Set the field that contains the company name

        var linkedInLoader = new LinkedInLoader(crmForm.all.name);

        linkedInLoader.Load();

    }

    But as you may have noticed in the image at the top of the post, Account Name is Business Recommended, and that means you can save the form without filling in the Account Name, which would still make the LinkedIn icon appear, even though there is no Account Name.

    So just in case Account Name isn’t Required, what you can do is change the line highlighted to look like this:

    if (crmForm.FormType != 1 && crmForm.all.name.DataValue != null) {

    Now the LinkedIn icon will only appear when the form has been saved, and Account Name contains data.

    As I said earlier this code should work unchanged, but in case you have a different field you want to use it on, just change both instances of “name” to the field name.

    Thanks again to http://marcoamoedo.com for providing the solution!

    Want to find out more? Please contact us here!

    Full story

    Comments (0)

  • How to make a Dynamics CRM field always appear as a Footer at the bottom of a Form

    Just the other day, while adding some lengthy, complex java script to a form, I came across what I thought was a problem. I did end up fixing this problem but it wasn’t until I showed a few work colleagues that I realised that it wasn’t so much a problem but rather a cool feature if you are in the need for it.

    That feature is making a field always appear at the bottom of the form, or as we describe it, as a footer on the form.

    This is useful if you want a field on the form, but don’t want it to be the users primary focus point. For example, if you have fields on the form that only certain people in the business fill in, like admin staff, this will make the form still read clearly but provide a gap between general entry point and the admin entry point.

    To achieve this you will need to create the following attributes:

    • The fields that will be the Header

    • The fields that will be in the Footer

    • An ntext field that will cause this to happen.

    Place all these fields on the form with the ntext field being just above what you want to be the footer. See below for an example.

    Now for some formatting that you need to apply to the ntext field. Open the properties of the ntext field and change the following; on the formatting tab set number of rows to minimum (Which is 1) and tick “Automatically expand to use available space”. The form should now look like the following.

    On the onload event you now need to hide the ntext field so that you cannot see it when you open the form.

    You can do this with either of the following code:

    crmForm.all.<entityname>_c.style.display = 'none';

    crmForm.all.<entityname>_d.style.display = 'none';

    Outcome:

    or this

    crmForm.all.<entityname>_c.style.visibility = 'hidden';

    crmForm.all.<entityname>_d.style. visibility = 'hidden';

    Outcome:

    It is up to you if you want to to have the footer directly below the previous field or not.

    Want to find out more? Please contact us here!

    Full story

    Comments (0)

  • Increase Productivity with Microsoft Dynamics CRM

    There are many programs available to help increase Productivity. Although Dynamics CRM is not aimed specifically at increasing productivity in the work place, it has tools that help with productivity. It can also be customised so that the processes inside of CRM can be sped up and in turn increase productivity.

    In this post I am not only going to talk of ways that Dynamics CRM can improve productivity but also some shortcuts you can take within Dynamics CRM.

    Because CRM is based on a central database and is able to integrate with so many other systems it decreases the time it takes to do things. For example, here at Magnetism we have developed a CRM2XERO connector, this allows us to create an invoice in Dynamics CRM and once you tell it to it will automatically create that invoice in XERO without any interaction, and once it has been paid in XERO it will be marked as paid in Dynamics CRM.

    Even as a baseline system, Dynamics CRM will improve productivity because of the fact that you will not have to go looking through several different databases to find the information you need.

    One easy thing that you can do is to create a direct link to the new task function; this allows you to make a new task for yourself in one click. I have included instructions below.

    1. go to the desktop, right click then go to new>shortcut

    2. from there a window will pop up, you will then enter a file path like the one below

    "C:\Program Files (x86)\Internet Explorer\iexplore.exe"

    This file path will first open up internet explorer, after that you need to put a space and place the following file path in with your Dynamics CRM URL where it is highlighted

    "http://crm.sample.com/activities/task/edit.aspx"

    It should look like this:

    3. Press Next and change the Name to something like ‘new task’ and then finish.

    It will then appear on your desktop as with an internet icon like the one below to change this right click>properties and then change icon. Go on iconfinder.com as there are loads of icons that relate to a task or other such things. Select/browse for an icon that you have downloaded and the click ok and then ok once again to get back the desktop. This should then open in internet explorer and allow you to quickly create a new task.

    Remember this is just one way of making Dynamics CRM easier and quicker to use and, in turn, increasing productivity. There are many other ways to make Dynamics CRM help you increase your productivity either things you can do or other solutions that CRM specialists can provide.

    Want to find out more? Please contact us here!

    Full story

    Comments (0)

  • How can a Microsoft Dynamics CRM System improve your Customer Service?

    Although Microsoft Dynamics CRM does not speak and cannot contact your customers like a real person would, it can do something quite amazing. It creates a sales tool that is so useful to your business that once you start using it, you won’t be able to go back to the archaic days of not having a simple and centralized business process for your staff to follow. It gives a voice to your team to know the history you’ve had with the customer and what a likely future outcome may be to either sell or market to them.

    Customer service is not just slapping on a smile and always saying ‘yes’ to the customer. It knows them and their history with your company. Perhaps even knowing their buying patterns and what products you may be able to sell to them and when. Customer service has matured to be an actual relationship with your customer and the customer expects you to know them and their next step.

    Using Microsoft Dynamics CRM for customer service takes the mystery out of selling and you can stop guessing what you talked about last with your client. You can look through the history and see who on you staffs has been in contact with them, what has been said in emails and notes that another sales person has on the client. Dynamics CRM shows the products that you have quoted the customer and the items that were actually invoiced. Knowing all this information is useful not only to your sales team, but to new staff and management.

    The manager can now, better than before, pair certain staff with certain customers. This can all be based on the sales persons experience with a specific product or region that the customer may be from. It simplifies the guessing work for your team and the customer. Your customers expect your staff to have all the answers, and now you can easily place the customer with the person who knows best.

    It’s all in the CRM system. It’s simple, centralized and easy to use. Customer service can’t get better than Microsoft Dynamics CRM.

    Want to find out more? Please contact us here!

    Full story

    Comments (0)

  • Microsoft Dynamics CRM 4.0 Feature - Campaign Responses

    In my past three blog posts I have explained the very basics of Campaign features within the Marketing Module of Microsoft Dynamics CRM.

    To sum up these posts…

    Quick Campaigns – Used to create and distribute a singular marketing activity to a defined group.

    Marketing Campaigns – Organises all the details for a complete marketing effort including planning tasks and campaign activities.

    Campaign Templates – Allows you to design the skeleton of a campaign and save for use in future, similar campaigns.

    As I’m sure you are aware, the overall goal of any marketing campaign is to get measurable results. So, in saying that, it is also important to have the tools in place to be able to measure these campaign results. Microsoft Dynamics CRM 4.0 contains such a feature to help to measure the effectiveness of your marketing efforts. Campaign results are captured as ‘Campaign Responses’.

    How does it work?

    Once a Campaign is underway (i.e. the campaign activities have been distributed), the target group members will begin to respond.

    There are several ways to capture Campaign Responses:

    1. Record the response yourself by creating a ‘new campaign response’.

    2. Convert an activity, such as a phone call to a Campaign Response.

    3. If the marketing campaign was conducted outside your organisation you may import the campaign responses.

    4. If the campaign includes the customer responding via email the message will automatically be converted to a Campaign Response.

    This is all very well, but I bet you are thinking – so now what do you do with these Campaign Responses? Good question. Once you have gathered the responses to a campaign you can shift focus from an outbound marketing effort to an inbound sales effort.

    Options available to you in Dynamics CRM 4.0:

    • Convert the Campaign Response to a Lead, Quote, Order or Opportunity.

    • Use the Campaign Response to convert an existing lead to become an account, or contact.

    • Use the Campaign Responses to measure the effectiveness of the campaign by running various (and customisable) reports.

    When you have defined the campaign response you will be able to determine the appropriate follow-up to conduct and, in turn, hopefully convert the response into a sale.

    Want to find out more? Please contact us here!

    Full story

    Comments (0)

  • Keep your Dynamics CRM Extensions on Fire

    If you’re creating web applications using asp.net or you’re a user that is using ISV extensions you might be aware of the spin up delay.

    This delay has considerable impact on user experience when it comes to ISV extensions in Dynamics CRM. The delay is caused by the asp.net runtime serializing Microsoft.Crm.Sdk*.dlls. Sometimes this can take up to 60 seconds.

    The good news is that it only happens the first time the application starts up. What we do with our extensions is to create a keep-alive.aspx page which makes couple of requests to the Dynamics CRM web service every 5 minutes during business hours using a scheduled task through the windows task scheduler.

    Here’s the code for the console application.

    if (ConfigurationManager.AppSettings["urls"] != null)
    {
        // get all the urls we need to ping from the app.config file
        string[] sites = ConfigurationManager.AppSettings["urls"].Split(',');
        sites.ToList().ForEach(a =>
        {
            try
            {
                // app.config file dosn't like & symbols, so if you have a querystring with & replace it with |
                HttpWebRequest request = (HttpWebRequest)WebRequest.Create(a.Replace("|""&"));
                request.Credentials = CredentialCache.DefaultCredentials;
     
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
                Stream responseStream = response.GetResponseStream();
     
                responseStream.Dispose();
                response.Close();
     
                Console.WriteLine("pinged: {0}", a);
            }
            catch (Exception ex) // ignore errors
            {
                Console.WriteLine(ex.ToString());
            }
        });
    }

    And here is the code for the keep-alive.aspx page

    public partial class keep_alive : System.Web.UI.Page
    {
        protected override void OnInit(EventArgs e)
        {
            this.Load += new EventHandler(Page_Load);
            base.OnInit(e);
        }
     
        protected void Page_Load(object sender, EventArgs e)
        {
            var context = Helper.DataContextFromWeb;
            context.WhoAmI(); // awaken the serializer
     
            var contact = (from c in context.Contacts select c).Take(1).SingleOrDefault();
        }
    }

    Want to find out more? Please contact us here!

    Full story

    Comments (0)

  • Automatically Refreshing Microsoft Dynamics CRM 4.0 Forms from Custom Pages

    I recently created a custom ASPX page for the Opportunity entity in Microsoft Dynamics CRM 4.0. The logic behind this custom page is to allow a Dynamics CRM user to add products to the Opportunity, and click a button which would create the Opportunity Product records, and then close the Opportunity with a status of “won”. However, when the “OK” button was clicked and the page was closed, there was no immediate change to the Opportunity record, unless the user manually hit F5 to refresh the browser.

    It is very important to make sure that any custom pages that are created for Dynamics CRM mimic the out-of-the-box functionality as close as possible. Leaving the page alone would create great confusion and frustration for all users as they would think that the operation had failed, since the Opportunity will still appear to have a status of “Open”. To automatically refresh the parent (Opportunity) form, you’ll need to write something similar to the following C# code:

            protected void okbutton_Click(object sender, EventArgs e)

            {

                // add your custom processing here

     

                ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", "window.close()");

                ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", "window.opener.location.reload()");

            }

    Here is an example of this process in use.

     

    This will greatly improve the user experience by reducing any confusion with the current status of the Opportunity. The Opportunity form will reload when the “OK” button is clicked, and display each field in a read-only format.

    This is a very simple piece of code which you can use for any page that results in a status change for any entity record.

    Want to find out more? Please contact us here!

    Full story

    Comments (0)

  • Display vs. Visibility in Dynamics CRM 4.0

    You may have noticed that to make a field appear or disappear on a Dynamics CRM form you can use the JavaScript Display or Visibility. But often when you want to hide a field it is hard to know which one to use.

    Display:
    When using Display, the field being changed will be added or removed from the flow of the form, which means if it is not being displayed the field around it will move to fill in the space the field left behind. The same applies when the field is being displayed; in that the fields below it move down to make room for the field being displayed.

    Using display is good for when you don’t want there to be an empty white space where the field used to be when it is not being displayed, however it means all other fields below it move up or down, and can be confusing for users.

    If you set a field to not be displayed, and if there are any fields to the right of it, they will move left to fill in the space. If there are no fields to the right of it, the fields below will move up one line to fill up the empty line.

    The code for using Display is as follows:

    // Displayed

    crmForm.all.fieldname_c.style.display = "inline";

    crmForm.all.fieldname_d.style.display = "inline";

     

    // Not Displayed

    crmForm.all.fieldname_c.style.display = “none”;

    crmForm.all.fieldname_d.style.display = “none”;

     

    Visibility:
    When using Visibility, the field being changed will not be added or removed from the flow of the form, instead it will just leave a space when it is hidden, and all fields below will not move into its place, and when it is visible again, it will occupy the same space that it left when it was hidden.

    Using visibility is good for when you do not want to disrupt the positioning of other fields on the form, it will be easier for users to follow what is happening, and will be less confusing.

    When setting a field to be hidden, any fields to the right it will stay where they are, and will not move left to fill in the space, instead a white space will be left. If there is no fields to the right, then the line that the hidden field is on will be left blank, and any fields below it will not move up to fill in the space.

    The code for using Visibility is as follows:

    // Visible

    crmForm.all.fieldname_c.style.visibility = “visible”;

    crmForm.all.fieldname_d.style.visibility = “visible”;

     

    // Hidden

    crmForm.all.fieldname_c.style.visibility = “hidden”;

    crmForm.all.fieldname_d.style.visibility = “hidden”;

     

    When I am hiding fields I try and use Visibility when possible, but when it will leave a blank line in its place, some times using Display is more appropriate. It’s up to you which one you use, but hopefully this will give you some ideas of where and when to use each.

    Want to find out more? Please contact us here!

    Full story

    Comments (0)

  • How to connect a Silverlight Project to Dynamics CRM 4.0

    As I have been working a lot with Microsoft Silverlight lately, in this post I am going to explain how to connect a Silverlight project into Dynamics CRM 4.0. For the sake of this post I just created a simple ‘Hello World’ Silverlight project to demonstrate to you how to get this project to display in Dynamics CRM 4.0.

    Above is what the Microsoft Silverlight project looks like. Now, when I was trying to connect a Silverlight project to Dynamics CRM 4.0 I wasn’t aware that it is not as easy as copying your project files across, there are a few minor changes to make and you need to publish your project for external use.

    Now for the minor changes, you need to check your web.config file and change one little thing, this is what mine looks like:

    <configuration>

        <system.web>

            <compilation debug="true" targetFramework="4.0" />

        </system.web>

    </configuration>

    If you have this highlighted section in your web.config file you will need to delete it for this to work within Dynamics CRM 4.0. Now that you have done that, you need to save and build your project. So to do this, right click on the solution and then click build. After this has completed you then need to go and publish your solution for external use, to do this right click on your .web project and then click publish.

    When you do this a new dialog box will pop-up, this will give you four different publish methods; Web Deploy, FTP, File System, and FPSE. These give you different options if you wish to publish directly to your website or to your FTP. For this project I am using File System as I am using a VPC to demo this and need the files to cope to the wwwroot file. I then select the target location and click Publish.

    You will now need to move the files that it creates into the ISV file of your Dynamics CRM 4.0 files. This is the easy step is finished so let’s move on to the harder one. You need to export the sitemap from Dynamics CRM and do some editing to it.

    <SubArea Title="Hello World" Id="Silverlight" Url="/../ISV/Hello.World/Hello.WorldTestPage.aspx" />

    Here is the outcome.

    Want to find out more? Please contact us here!

    Full story

    Comments (0)

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. Next page