Using Custom Metadata Types and Custom Settings in Salesforce

Custom Metadata is one of the new features that released at Summer’15 of Salesforce, which is customizable, deployable, packageable, and upgradeable application metadata, and it supports the following custom field types.
  • Checkbox
  • Date
  • Date and Time
  • Email
  • Number
  • Percent
  • Phone
  • Picklist
  • Text
  • Text Area
  • URL

The setting page of Custom Metadata is similar to Custom Object’s as the following image:
Custom Metadata Type  Country   Salesforce   Developer Edition
It also supports Page Layouts Assignment, as the below:
Country   Salesforce   Developer Edition
And the data(records) of Custom Metadata Types can be edited directly as Metadata from Sublimie Text 3. Sublime Text 3

Differences between Custom Metadata and Custom Settings

So which one should we choose between Custom Metadata and Custom Settings?
Here is some comparisons between these two.

Functionality Custom Settings Custom Metadata
Unlimited calls/queries
CUD from Apex
Currency type field
Picklist type field
Associate for an organization,
profile, or specific user
◯(Hierarchy)
Metadata deploy Only definitions Definitions and records
Apex tests Needs to create test data Directly access
Translation Workbench Not supported Still not supported
(Maybe will be supported in the future…)


Enjoy It!

Related Post

Salesforce Mass Editor (Chrome Extension) – ... This's my second Chrome Extension (First one is HERE) this year, named "Salesforce Mass Editor" and it supports for doing the below things : ・Makes any Salesforce list view to be a powerful mass editor. ・Mass insert, mass clone, mass update, mass delete, ALL-IN-ONE. ・Export record data to CSV fi...
Setup an awesome Salesforce developer environment ... Why Sublime Text 3 ? I've been working with Force.com for about 2 years, and always using Eclipse+Force.com IDE(See here, Eclipse Force.com IDE Installation)as my development environment. I don't think it is difficult to use, but it could more friendly. For example: 1. It doesn't support APEX an...
Instantiating an Apex class based on dynamic strin... Somtimes we need to instantiate a Apex class by dynamic value in Salesforce, which can make our program more modular and more readable, such as the below case : 1. Each Contact has its socail fields : "Type__c" and "AccessToken__c" 2. Needs to request its profile via socail api in Apex Firs...
Using Aggregate SOQL queries/results in Batch Apex In previous post, we had created a schedulable batch apex that implements Database.Batchable in Salesforce, but if you want to use SOQL having aggregate functions like SUM(), MAX(), COUNT() on results grouped by “GROUP BY” clause in start execution, changing to interface Database.Ba...