Monday, March 30, 2015 How to override duplicate check during mass data loads?

Starting with Spring ’15, SalesForce has a duplicate management option to tighten the rules around data management to avoid duplicates. When this option is enabled, upon duplicate data creation, there is an alert for the user mentioning the potential duplicate record creation “You're creating a duplicate record. We recommend you use an existing record instead.” along with the option to override and submit.

The Standard Contact Matching Rule is “(First Name AND Last Name AND Title AND Company Name)”

However during, mass data loads, here are the steps to turn off the check:
  • Go to Setup -> management -> Duplicate Management -> Matching rules
  • Click on “deactivate” on the rule that is to be deactivated.

Once after the matching rule is deactivated, go to: 
  • Setup -> management -> Duplicate Management -> Duplicate rules
  • Select the duplicate rule to deactivate, and click on “deactivate” button.

SalesForce sends an email upon successful deactivation. Now, for mass loads, the duplicate checks will be ignored.  After the load, to activate the rule, follow the reverse order; Activate duplicate rule first and then matching rule.

Written by Prabha Krishnamurthy Quick tip to overcome event load issues with ActivityDateTime

During data migrations, there could be multiple data issues that we encounter. Here is one such issue related to loading events and steps to overcome the issue.

If the IsAllDayEvent is set to false on the event record, then, ActivityDateTime is required and either DurationInMinutes or EndDateTime is required.

However on instances where there is a timestamp for ActivityDateTime and no timestamp for EndDateTime, blank the EndDateTime and set DurationInMinutes to 1440. This will help to fix the data load issue around this.

Written by Prabha Krishnamurthy Difference between File and Attachment in SalesForce “Notes and Attachments”

Notes and Attachments is a standard object in SalesForce that is used to link notes and file attachments to various SalesForce standard and custom objects.

Notes are added with type “Note” and File attachments are added with type “Attachment”.

However, if you find a third type there as “File” with no actual attachment but with option to preview/download the document and wondering what that is and where it came from – That is a chatter file uploaded to the object.

Steps to upload a chatter file and link to an object – Click on the record to which a chatter file needs to be attached. You will see the below option at the top of record page.

Click on File and upload the file. These files are the ones that gets displayed in “Notes and Attachments” as records with Type “File”.

Written by Prabha Krishnamurthy

Friday, March 27, 2015

GoldMine : Phone Number Formatting in Userdefined Fields

This actually came up during a live GoldMine presentation at Villanova university.

If you create a new userdefined field and use the word "PHONE" in the FIELDNAME, the field will automatically format any inputted phone numbers.

1. Create a new userdefined field called PHONE4
2. Rebuild your database
3. Now, entering 5556667777 into the PHONE4 field results in (555)666-7777

Pro Tip : Always omit the first "1" in a long distance number in GoldMine, else it won't format it correctly.

GoldMine : Breaking the Notes Tab Habit

One of the constant struggles in my life is trying to force unwilling users to abandon use of the Notes tab. You know the one; sitting there all smug at the bottom half of the Contact Record, tempting our left-click, daring us to record our most recent phone call.

The Notes Tab whispers to us;

"Use me! It's so easy! ONE CLICK and your History is recorded!"

But what we know in our hearts is the Notes tab should NOT ever be used to record history. You can't report on it. You can't sort it. You can't filter it.  And the technical issues, especially if you're on older versions of GoldMine, are mind-numbing.

What the Notes tab excels at is keeping very general information. Driving directions, special handling instructions, that sort of thing.

If you're having issues training some users to break their Notes Tab habit, just turn it off for them.

In GoldMine;

1. Select Tools | Users Settings from the top level menu.

2. Find the user in question, select and hit Preferences.

3. Go to the Record Tab, click the Tabs button.

4. Uncheck the Notes item, OK your way out.

The user will need to restart their GoldMine to effect the change.

GoldMine : Discovering the xBase Expression Tester

Ah, secrets! Is there nothing more mysterious? For instance, did you know that you can use CTRL-ESC to mimic a windows key? Try it. Right now. Isn't that awesome?

There is a correspondingly cool secret in GoldMine; the xBase Expression Tester. (I still can't bring myself to call it dBase - xBase just sounds so much more cool)

In GoldMine (requires MASTER rights), hit;


to invoke the Expression Tester.

The idea is to enter an expression in the top half and evaluate it against the Current Contact Record. So, the expression;


should return the Primary Conract of the Current Contact Record. Caps are mine, lowercase is fine.

So now we can start using all those neat dBase functions like MID, LEFT, TRIM. For instance,

LEFT(CONTACT1->CONTACT, 5) returns the first five characters of Contact.

AT(" ", CONTACT1->CONTACT) returns the numerical character position of the first occurrence of " " within Contact.

So, to get fancy, we could do this;

LEFT(CONTACT1->CONTACT,  AT(" ", CONTACT1->CONTACT)) to return only the First Name of the Contact.

Once you're happy with an Expression, they can be used in;

- Merge Documents
- Filters
- Global Replace
...just to name a few.

Even if you don't have a serious need for this, you can't deny it's pretty awesome. 

More dBase documentation than you could imagine can be found here;

Thursday, March 26, 2015

Crystal Reports : Getting Creative with Parameters

Usually we think of Parameters simply storing values for selection criteria. Start Date, End Date, ad nauseam. But let us not forget a Parameter can store ANYTHING. Including "switches" which can then be evaluated by Formulas.


I want to include a parameter that specifies whether or not to calculate Tax for every line item on an invoice report. So, I create a Parameter called {?Tax} with two possible choices, "Yes" or "No".

So, then, my Tax Formula looks something like this;


I also use this trick to Hide or Suppress detail sections on reports with a lot of Summarizing.

Remember, a parameter that only drives Selection Criteria is dying to let it's full potential out!

Crystal Reports : The Data, the Text and the Ugly

Ok, so here is a constant problem; combining Data and Text. This can be difficult with dates, numbers and any Crystal object that will be changing size depending on the underlying data. You have but a few options, none of them perfect:

1. Drag your Crystal object into a Textbox. When you do this, you're able to place the object within any Text already present. This can be touchy, however, and you lose the ability to right-click the object and get Properties.

2. Place your Crystal object right next to the Textbox. This is easiest, but looks terrible. Getting everything to look just right can take much trial and error.

3. Create a formula to produce both Text and Object as one unified item. This is my favorite approach. Example;

If I need to print out "From xx/xx/xxxx to xx/xx/xxxx" I do this within a formula;

"From " + {?Starting_Date} + " to " + {?Ending_Date}

The "+" is a concatenator and also an operator, so beware when trying to combine text and numbers; Crystal will think you're trying to perform addition. Also, be mindful of where to put in your extra spaces. Notice that "to" has a space on either side of it. Otherwise it will be "crowded".

Now get out there and make it nice!

Crystal Reports : To Portrait is Easy, to Landscape is Divine

When you're working within the Designer, keep in mind that your "real estate" is dependent upon the currently selected printer. Crystal will honor both your Landscape/Portrait and page size settings.

Simply go to File | Page Setup and select your favorite settings!

Some helpful hints:

1. Landscape is almost always better. Portrait is for chumps. Especially when you're printing rows out of the Detail section. Even if you're not going to necessarily need all that room right now, you will someday.

2. Bigger is better; don't be afraid to increase your page size during development to make things easier to move around in the designer. I'm a big fan of Legal size. And you can always dial it back before deploying to production.

Have some fun and live large!   

Wednesday, March 25, 2015

MSCRM 2015: Synchronizing Tasks

A new feature in MSCRM 2015 is the ability to synchronize tasks created in Outlook and assigned to another CRM User.  The User who created the Task will remain the Owner of the Task in CRM until the task is accepted by the assigned User.  Prior to MSCRM 2015, tasks created in Outlook and assigned to another user were not synched to MSCRM when the task was created.  

This feature is only available if you have upgraded to CRM for Outlook 2015 and is turned OFF by default.  Enable this feature if your Organization generally creates tasks in Outlook instead of MSCRM.   Here's How:

Navigate to Settings>Administration>System Settings.  Click on the Synchronization tab, check the "Synchronize tasks that are Assigned in Outlook" check box:


MSCRM 2015: New Business Rule Feature- Addition of "OR" operator

Business Rules are continuing to evolve in MSCRM 2015.  One new powerful feature is the ability to group conditions by "OR".  Previously, conditions were limited to "AND".

For Example:  I'd like to lock a field for editing if the Job# on the record begins with "2015" OR the Date the Opportunity Won is after January 1, 2015.

Previously, I needed two Business Rules to accomplish this.  Now I can do this with one:


MSCRM 2015: New Business Rule Feature- IF Then Else

If your CRM Online Organization hasn't transitioned to MSCRM 2015 yet, it will sometime in the next 3 months.  There are some exciting new features in Business Rules, my favorite is the addition of the "Else" to the If-Then condition. 

I often use Business Rules to Show or Hide fields depending on the value of another field, for example, If x=y, show field a, otherwise hide field a.  Prior to MSCRM 2015, I needed two Business Rules to accomplish this- One with the logic "If x=y, Show field a" another with the logic "If x not equal y, Hide field a".

Thanks to the addition of the Else condition, I can now accomplish this with one Business Rule:

Note that The ELSE  can also include a condition (ELSE IF). 


Tuesday, March 24, 2015

ZOHO CRM - Setting the Default Value for a Picklist field

If you have a picklist field that for 80-90% of your records is typically one value, you can make data entry easier by setting that common value as the DEFAULT value for that field.  Here's how you do it (you will need admin privileges):

  • Setup->Customization->Fields
  • Select the data module where the field resides, to view the list of fields for that module.

  • Click the edit link next to the name of the field for which you'll set the default value

  • Drag the default value to the top of the list by clicking and dragging the "grab bar" to the left of the field in the list .
  • Click the "Use first value as default value" checkbox and click save.

ZOHO CRM - Can't View Activity Records in a Related List?

Have you tried to display your Activity Records  (Tasks, Events, Calls) by clicking on the link  in  a related list only to be faced with this message?
A possible, and most likely reason for this is that the Activity Type field was removed as a column from the related list.  To add it back in...

  • Setup->Customization->Related Lists
  • Choose Activities from the list of modules
  • Select Activity Type in the left hand column 
  • Click the right facing middle arrow to Add Activity Type to the list of displayed columns
Hope this helps solve a problem!

ZOHO CRM - Changing the Workflow Rule Order

The order in which Workflow Rules are executed can be VERY important, especially if you have multiple rules triggered by the same action.

For example, you might have a Custom Function that updates fields in a record when the record is created and you may also have alerts that are triggered when a record is created.  If the Alerts contain the fields updated by the Custom Function, you want to make sure that the Custom Function is triggered first, then the Alert so that the updated field information is included in the Alert.

The default is based on the order in which the Rules are created, but you can change the order after the fact.  Here's how:

  • Setup->Automation
  • Choose the module whose Rules you wish to ReOrder:
  • The Grey box turns into a Reorder Rules Button - click the button

  • Click and drag the rules to their desired order and click save.

Monday, March 9, 2015

Crystal Reports : Dates and the Math of Age

Yes, this old chestnut never stops being useful;

One of the many things you will want to do with a bona-fide date field is calculate age.
Crystal makes it easy for us here; as long as we're comparing two date type fields, we can perform simple math.
Let us suppose that the date field in question is {CONTACTS.SOURCEDATE}, which represents when a particular prospect was imported into our database.

1. We can see how many records were imported in the last seven days

{CONTACTS.SOURCEDATE} <= CurrentDate() - 7

2. Or how "old" any particular record is, expressed in days


3. To calculate the age in years, we must use the Crystal DateDiff function:

DateDiff("yyyy", {CONTACTS.SOURCEDATE}, CurrentDate())

The "yyyy" specifies we want the answer in years; "m" and "d" are also options (months and days, correspondingly)

Note: In order for Date Math to work correctly, all evaluated fields MUST be Date Types. Otherwise they must first be converted to Date Types using a Crystal Function like CDATE(). 

Crystal Reports : Hiding Scary Sections

While designing a report, you may find it helpful to Suppress (hide) sections, easily Revealing them later.

Within Crystal, right-click on the Section name on the left hand section of the designer.
Then select Hide or Suppress, depending on your need.

Hide will still allow you to "Drill Down" and see the section in question.
Suppress will not allow you to reveal the section at all until you right-click on it and select Show.

This technique is commonly used to reveal and/or hide "troubleshooting" areas of the report. For instance, I find it helpful to drag a few fields into the Detail section when trying to figure out why a Summary isn't totaling as expected. When I'm finished troubleshooting, I simply Suppress the Details section, in case I need easy access to that information again.

Pro Tip : Throw your troubleshooting fields into a new Report Section, insulating them from the rest of the report.  

Crystal Reports : The Importance of a Nice Line

Often it is the case that a complex report becomes too "busy" to read easily.

Let's say that we are grouping by State, but it's difficult to look at the page and know where one state ends and the other begins.

There are many ways to alleviate this, but one of my favorite and simplest is to Insert Line.
This will insert, as expected, a line into the report which you can place wherever you want.

Typically, you'll want it to be in a Footer. This way, the line is drawn after each group is printed, effectively separating the groups in a visual manner.

Other techniques to make a report easier on the eyes are:

- Make your Group Headers stand out by using a bigger/bolder font
- Stretch our your Details section just the littlest bit to get some more space between each line on the report
- Force page breaks in the Section Format Properties (right click on the report sections, select Format Section)

It may not seem like much, but for some odd reason nicely structured reports seem to communicate their data better to the reader. Make it easy for the end user to see at-a-glance where one section ends and another begins. It's totally worth it!

Thursday, March 5, 2015

MSCRM 2015: Multi-Entity Quick Find (aka Universal Search)

Another great feature in the MSCRM 2015 release is the Multi-Entity Quick Find.  Use this feature when searching across multiple entities.  The entities that are included in the search are defined in:

 Settings>Administration>System Settings:

Add the entities you wish to include in the Multi-Entity Search feature.  Custom entities may be added :)

The Multi-Entity search can be accessed from any screen as it is on the main Navigation Bar:

Type the text you wish to search for- in this example we're using a wildcard search for "test":

The search results are displayed by entity:


MSCRM 2013: Accessing CRM from the Office 365 Portal

If you log into your Microsoft Dynamics CRM organization through the Office 365 portal, you may have noticed that it has a new look and feel.  You may be wondering how to access your CRM, the CRM button is no longer on the top Navigation Bar!

To get to your CRM, click on the Office Apps icon:

Select CRM:

OR, expand the Admin area on the left navigation bar and select CRM:


MSCRM 2015: Account Hierarchical Structure

Microsoft Dynamics CRM 2015 has some exciting new features!  One that I especially like is the ability to view the hierarchy of a record and its parent child records.

Here's how it works.  In the Accounts area, if you see this icon next to an Account name:

...there are related Accounts.  Click on the icon to view the related Accounts and the hierarchical structure:


GoldMine : Setting your Default Username

Sick of having to type in your Username every time you start GoldMine?

From your desktop;

1. Right-click on your GoldMine shortcut, select Properties.

2. Append a "/u: to your Target.

For instance, my GoldMine shortcut has a Target of:


So I change it to:

     C:\GoldMine\gmw.exe /u:JUSTIN

3. Click on Apply, then OK.

Pro Tip: You can also specify the password by providing /p:

Have fun!

GoldMine : Too Many Codes

Here is something I see in the field occasionally; too many codes. Sometimes people can go nuts with them, especially if they are in the throes of the "New Toy" phase. It's incredible; you'll find yourself adding all sorts of crap you never cared about before. I once administrated a GoldMine install with a Reference lookup that literally went off the screen it was so big.

Which, I guess is fine if you need to do any kind of deep or advanced analysis. You could add codes to record a Prospects mood during every phone call and plot it to see the best time to speak with them. Or make a code for every possible reason a Prospect would refuse your business.

I bring up the Phone Call because History is where the trouble can easily start. There are five major ways in which to differentiate a History record;

- Activity Type

     The top-level. For the most part, self explanatory. But if you find yourself scheduling/completing a lot of "in house" or administrative activities, consider leveraging the Next Action or Other Action types. For instance, all of my client service is recorded as Next Actions. That doesn't mean I'm not talking to people on the phone. It's simply a very easy way to flag what is billable (administratively important) and what is not.

- Reference

     The slippery slope starts. Remember, when your end user is selecting a Reference, they still haven't even gotten to the Notes part yet. This works best as a general identifier of the context in which the time is being spent. It's okay to have some breadth here; it will be shown on the History Tab and should be informative. An example list could be;

     Sales - Cold Call
     Sales - 2nd Call
     Sales - Paperwork Followup
     Service - Warranty
     Service - Billable

     In this example, there are only a few different Sales and Service "codes"; this makes it reasonable to have everything in the Reference.

- Code and Result

     How much information can there possibly be about a Phone Call? Code and Result are just two more levels of differentiation. To make matters worse, they are only three characters long. So you end up with... Codes. You could have a code for every model number of equipment you sell and force everyone to choose the corresponding Code from the pick list. If it's important, that's fine. But-
     As always, keep in mind What You Are Doing. What is it that "cares" about Codes? Are there Reports that depend upon them? Do they flag records for administrative processing?
     A good, humble Result Code picklist might look like this;

     LVM //Left Voice Mail
     CFI //Confirmed Product Interest
     CNI //Confirmed Not Interested
     DNC //Do Not Call Requested
     Remember, anything preceded by "//" will be ignored in a picklist item. And also remember at this point we are just dealing with a Phone Call. Other important attributes of the Prospect are probably stored on a different level (i.e. Source, Interest, etc). My advice, keep it simple; expand when required.

     Have at it and have fun!

GoldMine : Process Monitor of the Damned

Do you hate the Process Monitor?

You know what I mean; that stupid floaty window that appears whenever you send an e-mail. On older systems, the length of "float time" required to show it could be ridiculous. And that's IF it appears where it should. Sometimes it will "get stuck" in the upper left hand corner. Occasionally it will also undock itself and be a general nuisance.

So, how do we control the Process Monitor?

1. Tools | Process Monitor
     This menu item turns the Process Monitor on or off.

2. Show as MDI Window

     Within the Process Monitor, right-click on the top grey bar (where the buttons are), and select "Show as MDI Window". This turns the Process Monitor into a tab, which is how I like mine.

3. [ProcMon] INI Settings

     If your Process Monitor is royally screwed up, consider deleting the [ProcMon] settings from your USERNAME.INI file. Depending on your version of GoldMine, [ProcessMonitor_MDIChild] may be present and should also be deleted. This will reset your Process Monitor preferences to default. Advanced users only; always backup before editing.

Have at it and good luck.

Wednesday, March 4, 2015 How to make standard fields mandatory?

Many a times we need to treat Salesforce Standard Fields as required.  To do this, we can create a validation rule for the field to ensure that a value is required to enter in there.  Here are the steps (in this example, we're making “Phone” required): 
  1. Go to Setup - Customize – Contacts
  2. Select Contact filed – “Phone”
  3. Create a validation rule

  4. Click Save.
Now if you try to create contact without a value for “Phone” it will show the error message.

Written by Prabha Krishnamurthy Eliminate Duplicate on Manual Data Creation

Sometimes it isn't easy to create duplicate detection rules on standard or required fields (last name for instance).  However, this can be done via workflow, to update another custom field and provide the warning of the duplication.  Here's how (using the contact object as an example):

The first step is to identify a field or set of field to determine the uniqueness of the record. Each business can define this uniqueness rule differently.

Let us consider “Last Name” as a field to be unique to a contact.
This standard salesforce field “Last Name” is mandatory.

Let us create a custom field of data type – Text with option – “Unique”

Let us create a workflow rule(WFR) for the duplicate check.
Go to Setup -> Create -> Workflow & Approvals -> Workflow Rules
Click on “New Rule”.
Select the object on which WFR needs to be added. In this case – “Contact”
Now set the rule as explained below,

Now let us specify Workflow Actions,
Under Immediate Action – select “New Field Update”,
Now save. Activate the WFR.
Now we are all set with WFR. Let us see how it works now.  I have an existing contact with the last name of Prabha.

Let us try adding another contact with Last name PRABHA.
It applies the WFR and stops user from entering duplicate contact names.  Here, the unique custom field we added in the beginning is made invisible, as I did not want on the page layout. Hence the error message mentions Hidden Field Value. However there are ways to customize error messages and make it more intuitive like “Contact already exists. Please re-check”.

Also, more than one field can be used to build the WFR to validate the uniqueness, using a concatenate formula to validate against (firstname&lastname for example).

Written by Prabha Krishnamurthy

Monday, March 2, 2015

ZOHO CRM - NOTES OPTIONS: Title and Attachments

With Zoho CRM you can add multiple Notes to any record by opening the record, scrolling down past the detailed fields (or hiding the detailed fields by clicking the ... symbol) and dropping your cursor inside the top, empty note field.  The NOTE you add is automatically time-tagged and you are automatically identified as the generator of the NOTE.

You can also

  • add a Title to the note by clicking the "Add a title" link,
  • add an attachment to the note by clicking the paperclip icon


Zoho CRM now has an Outlook Plug-in for MAC users.  To download the plug-in:

  • Setup->Apps and Add-ons->Other Apps
  • Choose Outlook Plug-in
  • Choose Microsoft Outlook for MAC 2011 and click the download button to download and install:

Once installed, open Outlook and click on the "Z" icon to access the Zoho CRM tools:

ZOHO CRM - Choose your Colors!

Go from Boring to Branded with Zoho CRM's Organization and Personal Settings!  Upload your Logo and choose the colors of your Navigation Bar and backgrounds to make your Zoho CRM feel like your own.

Upload a Logo: Setup -> Organization Settings -> Company Details Tab -> Edit button (on right)

Scroll down to the bottom and click Choose file:

A browser window will open and you can select an image from your computer to use as your company logo.  Logo image should be 190:65 pixels in size, cannot exceed 20KB and must be in one of the following image formats: .jpeg, .png, .gif.


Choose your colors: Setup-> Personal Settings ->Theme
  • Set Tab Bar Colors and font colors
  • Set background color