Category Archives: Salesforce

Create Chatter Group Using Apex

Sample Code:

//Create a chatter group
CollaborationGroup gp = new CollaborationGroup();
gp.Name = 'Test Group';
gp.CollaborationType = 'Public';//It can be 'Public' or 'Private'                   
insert gp;
//Add member to above created chatter group
CollaborationGroupMember gpMember = new CollaborationGroupMember();
gpMember.MemberId = userId;//User id which you want to add
gpMember.CollaborationGroupId = gp.Id;//Above created group id
insert gpMember;

Salesforce OAuth Endpoints

Endpoint Type OAuth Endpoint Description
OAuth 2.0 authorization endpoint The Salesforce instance’s OAuth 2.0 authorization endpoint. Connected apps send OAuth
authorization requests to this endpoint.
OAuth 2.0 token endpoint The Salesforce instance’s OAuth 2.0 token endpoint. Connected apps send OAuth token
requests to this endpoint.
Revoke endpoint The Salesforce instance’s OAuth 2.0 revoke endpoint. Send requests to this endpoint
to revoke a connected app’s access.
Profile information endpoint The OpenID Connect OAuth 2.0 user profile information endpoint. OpenID Connect
defines the UserInfo endpoint to get a user’s profile information.
Dynamic client registration endpoint https://hostname/services/oauth2/register The OpenID Connect dynamic client registration endpoint. Send requests to this
endpoint to automatically register connected apps with Salesforce.
Introspection endpoint https://hostname/services/oauth2/introspect The OpenID Connect token introspection endpoint. Send requests to this endpoint to
check the current state of an OAuth 2.0 access or refresh token.
OpenID connect discovery endpoint The OpenID Connect discovery endpoint. Send queries to this endpoint for information
about the Salesforce OpenID Connect configuration.
Authentication configuration endpoint https://hostname/.well-known/auth-configuration The authentication configuration endpoint. Send queries to this endpoint for
information about an org’s SAML single sign-on and authentication provider settings.

Get Dependent Picklist Values in Apex

Sample Code:

//Pass dependent field parameter e.g.: Account.YourDependentField__c
public static Map<Object,List<String>> getDependentPicklistValues(Schema.sObjectField dependentField){
        Map<Object,List<String>> dependentPicklistValues = new Map<Object,List<String>>();
		//Get dependent field result
        Schema.DescribeFieldResult dependentFieldResult = dependentField.getDescribe();
		//Get dependent field controlling field 
        Schema.sObjectField controllerField = dependentFieldResult.getController();
		//Check controlling field is not null
        if(controllerField == null){
            return null;
		//Get controlling field result
        Schema.DescribeFieldResult controllerFieldResult = controllerField.getDescribe();
		//Get controlling field picklist values if controlling field is not a checkbox
        List<Schema.PicklistEntry> controllerValues = (controllerFieldResult.getType() == Schema.DisplayType.Boolean ? null : controllerFieldResult.getPicklistValues());
		//It is used to decode the characters of the validFor fields. 
        String base64map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
        for (Schema.PicklistEntry entry : dependentFieldResult.getPicklistValues()){
            if (entry.isActive()){
			//The PicklistEntry is serialized and deserialized using the Apex JSON class and it will check to have a 'validFor' field
                List<String> base64chars = String.valueOf(((Map<String,Object>)JSON.deserializeUntyped(JSON.serialize(entry))).get('validFor')).split('');
                for (Integer i = 0; i < controllerValues.size(); i++){
                    Object controllerValue = (controllerValues == null ? (Object) (i == 1) : (Object) (controllerValues[i].isActive() ? controllerValues[i].getLabel() : null));
                    Integer bitIndex = i / 6;
                    Integer bitShift = 5 - Math.mod(i, 6 );
                    if(controllerValue == null || (base64map.indexOf(base64chars[bitIndex]) & (1 << bitShift)) == 0){
                    if (!dependentPicklistValues.containsKey(controllerValue)){
                        dependentPicklistValues.put(controllerValue, new List<String>());
        return dependentPicklistValues;

Database.Upsert – Get Which Records are Inserted or Updated Based on External Id

Sample Code:

Database.UpsertResult[] results = Database.upsert(accList, Account.ExternalId__c);
for(Integer i = 0, i < results.size(); i++) {
    if(results[i].isSuccess()) {
        if(results[i].isCreated()) {
            System.debug(accList[i].ExternalId__c +' was created');
        } else {
            System.debug(accList[i].ExternalId__c +' was updated');