Category Archives: Company Update

Wedid: Mass Update Product Price list


The client would like to run batch updates on the product price lists quarterly. They have multiple price books and different currencies for each product price

For example:

Pricebook A

  • Product Id: AE110-B
  • Product Name: Door Trim (Black)
  • Unit price in AUD: 4,200
  • Unit price in GBD: 1,500
  • Unit price in USD: 4,000

Pricebook B

  • Product Id: AE110-B
  • Product Name: Door Trim (Black)
  • Unit price in AUD: 3,900
  • Unit price in GBD: 1,000
  • Unit price in USD: 3,700


  1. Install an app “Skyvva”.
  2. Build a job the updates the pricebook entries.
  3. Standardise the template used for the update process
Related Objects Product, Pricebook, Pricebook Entry
Components/App Skyvva
Complexity Easy

Salesforce: Skyvva IChained Interfaces

Scenario: Imagine if you have a spreadsheet that contains Account & Contact data. You would like to use Skyvva to run an insert for both Account and Contact.

Problem: The basic Skyvva setup will require you to create 1x job to insert Account and another 1x job to insert Contact. Therefore, everytime when you wish to run the job, you will have to first run the insert Account job then only run the insert Contact job. It is a hassle to go through two steps just to get things done.

How can we setup Skyvva to run the Account insert job and automatically triggers the Contact insert job in one go?

Solution: IChained Interface feature in Skyvva

Once you have created both Account & Contact Insert job, create 1x IChained Interfaces under Account Insert Integration job. Example:

IChained Interface


Note: Building IChained Interface does not mean that Skyvva will automatically park the right child under the right parent. You will still need a method / formula in your child job to specify which parent that the child belongs to.

Salesforce: Adding New Campaign Member Status

Why are we not able to insert new values to the Campaign Member status field via the Administrator Setup screen just like any other normal picklist field?

Campaign status picklists


This is because the status field picklist value is stored in a standard object called CampaignMemberStatus and it is campaign specific (this means that each Campaign record will have their own specific status picklist value).

How to add new status value?
1. View the Campaign record.
2. Click on the ‘Advanced Setup’ button.
3. Edit the Status or click ‘Add More’ for new status.

Data model relationship:
Campaign status relationship

Insert values using data loader:
Yes, you can use data loader to insert new records into the CampaignMemberStatus object. Note that you will need to include CampaignId field is populated because each status will need to be to related to one Campaign.

How to automate this:

You can try to search for any 3rd party app in AppExchange to automate the process.



Wedid: Salesforce as Property Tracking System


The company sells properties and property consulting services.

The company needs to use Salesforce to keep track on:

  • The list properties (Both sold and open for sale)
  • Information on property inspections (date, time, person in charge,  remarks)
  • Information on when and who that a particular property has been proposed to (properties that are still open for sale).
  • Number of properties (based on types) searched, reviewed and proposed for a each  clients.
  • Sales amount and actual sales amount


Create custom objects to store information on properties, inspection details and proposal details. Using validations rules, lookup are controlled/filtered to only lookup for available units (open for sale). Calculation of property selling prices and consultation services prices are done by introducing formula fields.

Related Objects Opportunity, Custom objects
Components Formula Fields
Validation Rules
Complexity Low

Salesforce: Formula Blank Field Handling

When we create a formula field, at the bottom of the page, there will be a section called the ‘Blank Field Handling’ section.


How do you want Salesforce to handle blank fields

Options Available:

  • Treat blank fields as zeroes - When the value inserted is blank or null, Salesforce will take it as a Zero (0).
  • Treat blank fields as blanks - When the value inserted is blank or null, Salesforce will take it as null or empty with no value at all.

Impact on Text Field Type:

Does not have much of impact when value received as blank. Whether if it should return blank or zero, when a blank text is received, Salesforce will by default return null value in the formula field.

Impact on Number or Currency Field Type:

It is important to choose wisely for a number or currency field because displaying as zero or blank effects the result of the formula.

ie: Create a formula field (Number_Formula__c) to add up two number field, Number_Field_1__c and Number_Field_2__c. Below shows the result when different choices is selected:

  • Treat blank value as zero:

1) Number_Field_1__c = 100

2) Number_Field_2__c = Null

3) Number_Formula__c = 100

  • Treat blank value as blank:

1) Number_Field_1__c = 100

2) Number_Field_2__c = Null

3) Number_Formula__c = Null

Therefore, it is important to choose the right handling method especially when the field involves with calculations of currencies or numbers.

Salesforce: Using Formula in Email Template

If you wish to use an email template to send email to your Contacts or Leads. Sample of the email template as below:


Hi {!Contact.FirstName},

Thank you for your enquiry. Our salesperson will be contacting you soon.


Problem: Above email template will not work when the email is send out from Lead level.

Solution: You can use formula to pull out both Contact & Lead information. ie: {!if(Contact.FirstName=””,Lead.FirstName,Contact.FirstName)}

Supported email type: Text, HTML (with letterhead), Custom (without letterhead), Visualforce.

List of supported formula: Any logic formula mostly supported. ie: IF(), NOT(), ROUND(), LOWER(), UPPER(), ISPICKVAL(), YEAR(), TODAY(), etc..

Salesforce Validation: Lock Field from Changing Value

This blog is to show you how to prevent user from changing a field value once it has been populated. For example, there is a date field in Opportunity and it should be locked once a date is populated.

A simple way is to use the validation. You can use the ISCHANGED and PRIORVALUE method in your formula.

Sample Formula:

AND( ISCHANGED( Registration_Date__c ), !ISBLANK(PRIORVALUE(Registration_Date__c)))


Salesforce Tips: Filter Opportunity Product Dynamically During Selection

We came accross a requirement to display only certain list of products dynamically for user to select when adding a new opportunity line item.

First thought was to use different Pricebook, however, this is not possible as the customer has an integration to sync all the product price into Standard Price Book.

The workaround is to create a new list button for Opportunity Product object that redirect the user to the Salesforce standard “add opportunity product” screen but with some predefined filter value. For example:


The new button will need to be added to the Opportunity page layout in the Opportunity Product related list.


Wedid: Microsoft Dynamics AX & Salesforce Integration


With the introduction of Salesforce in the company, the customer would like to move the maintenance of customer and merchant records from Microsoft Dynamics AX to Salesforce. However, some of the users (e.g, accountant) will still be maintaining the customer records in Microsoft Dynamics AX. Besides, the customer would like to sync the Sales Order information to Salesforce so that they can utilise the powerful reporting engine to generate the Sales report.



Purpose To sync the customer and merchant information between Microsoft Dynamics AX and Salesforce
To Sync the sales order to Salesforce
Applications Salesforce
Microsoft Dynamics AX
Versions Salesforce Enterprise
Microsoft Dynamics AX 2012
Tool Boomi
Information Microsoft Dynamics AX Customer <-> Salesforce Account (Customer)
Microsoft Dynamics AX Merchant < Salesforce Account (Merchant)
Microsoft Dynamics AX Sales Order > Salesforce Order and Order Line
Data Formats XML/td>
Volumes ~100day
Process Bi-directional sync of Customer record between Microsoft Dynamics AX and Salesforce
Microsoft Dynamics AX Sales Order to create/update Salesforce Order and Order Line
Schedule Every 15 minutes
Complexity Low


Salesforce: ‘New’ Button from Lookup Window

Scenario: Customer would like to create a new record directly from a lookup window.

To enable this, you will need to go to Setup -> Customize -> User Interface -> Show Quick Create. However, this button will only appear if the user have the permission to create record.

Although this feature is an alternative / short cut path in creating a record. However, below are a few current drawbacks of this feature:

  • Quick create will ignore any mandatory fields
  • Quick create will ignore any validation rules
  • Quick create will not display any custom fields