Monday, August 31, 2015 - Duplicate Management, which objects are supported?

For's newest duplicate detection management, only certain objects are supported.  They are:

  • Account
  • Contact
  • Lead
  • All Custom Objects.

All other standard objects including opportunities is not supported.

Written by Prabha Krishnamurthy - How to use Partner Object in

This in-built object object will help to define mutual many-many relationship between account and opportunity object. Partner roles can be customized and a reverse role should also be defined for every partner role.

Steps to customize Partner role:

Click on Setup – Customize – Account – Partner Roles –

Click on New

Define the partner role and reverse role and we are all set to use it.

Written by Prabha Krishnamurthy - How to Add Additional Custom Fields to Salesforce Partner Object

The Partner Object itself does not have the ability to have custom fields added. However, if the field can be populated as part of Account and/or Opportunity, it can be added as a field to be displayed in related lists.  Here's how to select additional fields from account/opportunity object to show in Partner related lists:

Click on Setup – Customize – Account Layout – Related Lists

Go to Partner Related List –

Click on Settings icon. Select fields that needs to be displayed on Partner list and save changes.  

Written by Prabha Krishnamurthy


Say you have 10 Zoho CRM User licenses... one employee is leaving the company and another is joining, and you want to transfer Accounts/Contacts (records) ownership from the old employee to the new employee.  You have to delete the old employee first to make room for the new employee, right? And you think that that action will somehow mess with the old employee's record ownership, but it doesn't!  The system maintains knowledge of the old employee, they are just considered a deleted employee.

to make the transfer:

  • Click the Accounts Tab in the top nav bar
  • Click the Account Tools Drop down (upper right) and select Mass Transfer Accounts
  • Click the spy glass next to the Transfer From field to display the list of users
  • By default active users are displayed
  • Change the display to Deleted users by using the drop down in the upper right hand corner (as shown).
  • Repeat the same for the Transfer To selection, selecting your new active user.
  • You also have the option of defining criteria for the transfer 
NOTE - by transferring accounts, all related contacts, potentials and activities are also transferred.

ZOHO - Navigating to other Zoho Applications from Zoho CRM

When you sign up for a Zoho CRM account, you are really signing up for a Suite of Zoho Applications.  Many of these additional applications integrate very nicely and enhance the functionality of your CRM.

If you go to and sign-in you'll see a nice display of icons, each representing a difference application.

If you go to you USED to see the list of applications down the right hand side and other "Settings" type links in the main view to managing your account.  Now when you go to, you'll see the Settings-related features in tiles on the main screen, but what happened to the list of applications??

They are hiding right here: (upper left)

Simply click the Grid icon to display a list of all the Zoho Applications organized by function:

ZOHO CRM - Calendar Integration Trick

To add Events created in Zoho CRM to your "other" calendar you use, simply invite yourself to the event as a participant!

  • Create the Event as you normally would
  • Under the Participants area click the Add link
  • Add you email address (either in the top part under Users, or in the "Invite by Email Address")
  • When you save the event, choose Send Invites.
  • You'll get an email with an .ics file you can double click to add to your calendar!

Thursday, August 27, 2015

GoldMine : Requiring Input

When customizing your GoldMine record layout, you can make any field "required". This means that the user will not be able to navigate away from the Contact Record until the field has been filled.

To do this;

1. Enter Customization Mode by right-clicking on the Contact Record and selecting "Screen Design".
2. Find and right-click on the field you'd like to make Required.
3. Select "Properties".
4. Go to the "Security" Tab.
5. Check the box which says "Required Data Entry".

"Ok" your way back out. Users may need to restart their GoldMine to get the new changes.

GoldMine : Using Duration for Whatever you Want

I've had a few calls over the last couple weeks with folks who'd like to use their histories in GoldMine to generate billing for clients. I actually do this myself every week. Where the challenge lies is in the fact that the "Duration" field on a History item reads like this: "00:30:00" (30 minutes).
This makes any totaling of these durations (say, on a report or within a query) difficult to say the least.

I find it much easier to enter in "Decimal" times for my histories. So, instead of using "00:30:00" for a half hour, I use ".5" Note that the Duration field is a simple text field, and will accept almost any input you give it. So my 01:45:00 becomes 1.75 and so on.

This way, any totaling you want to do becomes easy. It is possible to "parse" out the HH:MM:SS duration value, but you'll spend more time doing  that than working on the report itself...
This also brings up a good concept; whenever possible, structure your data entry model to make reporting easier.

Try it, and have fun!

GoldMine : To Code or Not to Code

We're going to wax philosophical here for a minute. I've done a lot of service this week for clients that like to use "codes". That is, a lot of Activity Codes and Result Codes. I've seen a bazillion of these over the years and two camps emerge; those with too many and those with not enough. Too many and a system is needlessly complex; too few and the system is literally useless. But where do you draw the line?

It's all about segmentation. 
Whenever we use the word "code", we really mean "category". And when we say "category", what we REALLY mean is "segmentation identifier". It's how we know a thing is a thing. We know a Contact Record is a Prospect or Customer because we fill in the "Customer Type" field. We know that something happened in the past because it's in the History Tab, etc.

This may sound trivial, but it is fundamental to any data model design. Segmentation drives list management. Think of how many times you sort by a column in a list. How many times you filter a list based on an identifier!

So, if we're going to use the Activity or Result Code fields on GoldMine calls, we should think about the following;

1. Do I need to sort on it? If I'm looking at a list of Calls, would it help if I could sort it a different way? A good idea might be to use Activity Code to track a "pseudo-stage", like "1ST" for First Introductory Call and "2ND" for Second Followup Call. Those two identifiers could be used to sort a list to see where sales or management should direct their attention.

2. Is it information I can get somewhere else? I see a lot of folks think they need to code calls as "PRO" for Prospect and "CUS" for Customer. Which is handy to have on a Call Report, but it's information already being tracked in Customer Type on the Contact Record. If we need to see that in a list, we can always grab it from there.

3. Don't feel obligated. You wouldn't believe how many "COM"s (for Completed Call) I see in Result Code. The fact that the Call is being Completed into History already segments it as a Completed Call. I almost think this is mostly because when folks start using the Activity Code field, an empty Result Code field looks, well, bare. Like it lacks symmetry. But remember, every code you force an end-user to plug in, the closer they get to overwhelmed.

4. Don't overwhelm end-users. Most of you out there are thinking to yourselves "these codes would be a nice problem to have because I can't get anyone to complete anything". Which may illustrate my point. End users can be resistant, especially to changes which don't obviously benefit them. For example, management forcing salespeople to track Product Model in Result Code for every new business call works better after you show them how to run and sort a list of calls. I see too many data models fail over this deceptively simple-to-address issue.

And, of course, start simple. Think about it, and have fun!

Wednesday, August 26, 2015

MSCRM 2015: JS to Disable Custom Quote Number

In my previous two posts, I discussed how to create a custom quote number and use it with revisions. Now I'm going to provide a bit of JavaScript that you can use to lock the field. You'll want to do this so that users can't modify the field themselves.

1. Edit the Quote form and go to Form Properties.
2. On the Events tab, add a Form library or create new one. Then add the following script to the library. The part in quotes will be the name of your custom quote number.

function disableCustomQuoteNum(){
  var quoteNum = Xrm.Page.getAttribute("new_customquoteid").getValue();
  if (quoteNum != null) {

3. Then add the function name, which is disableCustomQuoteNum, as an Event Handler.

4. Click OK then Save & Publish the changes to your form.

Now when we look at the quote, we can see that the Custom Quote ID field is locked.



MSCRM 2015: Using Revisions with a Custom Quote Number

In my previous blog post, I provided instructions on creating a custom quote number. Now I'm going to go into more detail about using it on your forms and with the revision ID that MSCRM provides.

In my case, the client wanted to use a custom quote number along with the revision functionality that Microsoft provides. In order to do this, I had to make sure that the custom quote number stayed the same if a quote was revised. I needed it to behave in the same way as the OOTB quote ID.

1. The first thing I did was hide the OOTB quote ID on my quote form. Edit the form then open the field properties to uncheck the box that says "Visible by default."

2. Next I modified my original workflow that creates and sets the custom quote number. I added a "Check Condition" clause that checks if the revision ID is 0 or blank.

3. Then the steps from my original workflow are executed within the clause. Here is what the workflow looks like now:
4. Now when I revise a quote, my custom quote number will stay the same but my revision ID will increase as intended.

MSCRM 2015: Creating a Custom Quote Number

I recently had a client request where they did not want to use the out-of-the-box quote numbers provided by MSCRM. Instead, they wanted to use a custom ID that would be a combination of letters and numbers. This may make sense for users if the quote number includes something meaningful like the date or a product line code.

In order to achieve this, I used the Auto Numbering feature of the Adxstudio Productivity Pack. (The Marks Group is not affiliated with this company.) Once you've imported the solution, you can use it in your workflows.

1. Create a new field for your custom quote number.
2. Create a new auto numbering definition by going to Settings > Auto Numbering Definitions. Give it a name and specify the format. My format is "Demo-{0}" where {0} will be the auto-generated number. In the digits field, specify the number of digits for your numbers.
3. Create a workflow that will set your custom quote number
4. In your workflow, set it to run after the record is created.
5. Add a step to your workflow that will create a record and choose Auto Numbering Request from the option set. Then fill in the name of your definition.

6. Next, add a step to the workflow to update the quote with your new quote number.

7. Activate your quote and test it out! You'll probably want to hide the OOTB quote ID but I'm going to talk about this and revisions in my next blog post. Stay tuned!