Deepak
IndividualForum Replies Created
-
Deepak
MemberSeptember 16, 2019 at 1:36 pm in reply to: What is External Data Sources in Salesforce?An external data source is a connection to anexternal database. External data sources usually contain data that does not change very much or datathat is too large to bring into the Active Data Cache.
-
Deepak
MemberSeptember 13, 2019 at 1:15 pm in reply to: How much memory is allocated to the variable and methods in Apex salesforce?Execution Governors and Limits:
Total heap size Synchronous Limit: 6 MB
Asynchronous Limit: 12 MB
Email services heap size is 36 MB. -
With one click, Drawloop DocGen® inserts data from any object within Salesforce or other systems of record into any document template. Create, manage and generate document packages in Lightning or Classic, without losing the benefits of an easy-to-use and familiar user experience within Salesforce.
-
Deepak
MemberSeptember 13, 2019 at 1:11 pm in reply to: Explain the use of an Outbound Message in Salesforce?An Outbound message sends information to a specified URL endpoint. Information contains the fields specified at the time of creating an outbound message. It sends a secure, configurable API message(in XML format) to a designated listener. AnOutbound message is a part of Workflow and can be created for a Workflow rule
-
Deepak
MemberSeptember 12, 2019 at 2:20 pm in reply to: How do we expose functionality on Force.com to be consumed by external clients in Salesforce?This article lists a few ways of integrating Force.com using Web Services. We can distinguish between situations in order to identify the best possible way to integrate. For example, if we need to have a straightforward data exchange between a client application and Salesforce, we can go with Data Integration options like SOAP API, but in case we need to have some logic before or after the data is committed or sent out of Salesforce, we can opt for Business Logic Integration options like Apex Web Services or Apex Callouts.
Introduction
Most enterprise-level applications have a need to integrate with other applications used by the same organization. These integration usually cater to different layers, like Data, Business Logic, Presentation and Security, depending on the requirement. This helps organizations achieve greater levels of operational consistency, efficiency and quality.This article, the first in the series Learning Salesforce Integration, outlines a few of the options available for integrating other client applications with the Force.com platform. The main focus is on Web Service integration, including both inbound and outbound to Force.com. The client application considered in this article is Oracle Siebel CRM.
Possible Ways to Integrate with Salesforce Force.com
Speaking further on the different layers and integration features available at each level for an enterprise-level application, we have:User Interface
Business Logic
Data
User Interface Integration is one great way to surface various applications inside Salesforce with little redesign of each individual app. It provides your users a single point of entry into multiple applications. The most relevant example is Facebook Apps, which appears to be in the Facebook instance but in reality, the content is served from different application vendors.Source: https://developer.salesforce.com/page/Integration
Business Logic Integration uses Apex Web Services for Inbound and Apex Callouts for Outbound. It typically handles a scenario where business logic is spread across several applications to implement the complete end-to-end business process. An example would be building complex logic on the data received before committing it into Salesforce.
Data Integration uses SOAP APIs and REST APIs. It typically handles data synchronization requirements, where one application in an enterprise acts as the primary source for a particular business object, like Account. It requires no coding in Salesforce, which is an advantage, but then it cannot implement any custom logic.
As mentioned earlier, our focus for the rest of this document will be on the Business Logic and Data Integration layers, which implement Web Services.
Deep Dive
Business Logic Integration helps extend the business logic present in Force.com with outside platforms. In the case of inbound logic integration, it is handled using Apex Web Services.Apex Web Services allow us to write logic and expose it as a web service with external applications. It gives us flexibility in adding custom logic before modifying the Force.com standard or custom objects data. We can apply project-specific business logic while exposing web services.
It requires knowledge of Apex for writing the Apex classes that expose web services to be invoked by client applications. The steps involved are:
Creating a global class that is accessible across all Apex scripts and not just the source Salesforce application. It forms the container for everything else.
Creating an inner Apex class that forms the actual request message of the WSDL. Variables that need to be accessed by the other application through the WSDL should be mentioned here.
Creating an Apex method that is exposed as the web service. It defines data mapping the inner class variables to Salesforce objects and fields, any logic that needs to be implemented and the operation to be executed, like insert, etc.
Finally, generating the WSDL from the path Setup | App Setup | Develop | Apex Classes and sharing it with the client application.
Apex Callouts enable invoking external web services that utilize SOAP, and WSDL or REST Services. This way the outbound scenario for web service integration can be handled. Two ways to generate callouts are importing the WSDL into Apex or by HTTP (RESTful) Services classes.WSDL2Apex: Consuming the WSDL document provided by the client application automatically generates the Apex class. This Apex class handles the rest, like constructing the SOAP XML while invoking the web service, data transmission and parsing the response. You can even manipulate the HTTP Header while sending out a message.
HTTP Services: This is the other way for outbound web service integration that enables Salesforce to integrate to REST-based services. Apex classes like HTTP, HTTPRequest and HTTPResponse support the ability to initiate an HTTP request or response, develop HTTP requests and handle HTTP responses respectively.
Data Integration helps us in maintaining consistency in the application data between multiple systems that need to be in sync. One way we can achieve talking about real-time synchronization of data between systems is by using SOAP APIs, among other available options.SOAP API lets you create, retrieve, update or delete records, such as accounts, leads and custom objects. With more than 20 different calls, SOAP API also allows you to maintain passwords, perform searches and much more. Use SOAP API in any language that supports web services. It provides two WSDLs to choose from –
Enterprise Web Services WSDL – Used for building client applications for a single Salesforce organization. The enterprise WSDL is strongly typed, which means that it contains objects and fields with specific data types. Customers who use the enterprise WSDL document must download and re-consume it whenever their organization makes a change to its custom objects or fields, or whenever they want to use a different version of the API.
Partner Web Services WSDL – Used for building client applications for multiple organizations. As a loosely typed representation of the Salesforce data model that works with name-value pairs of field names and values, instead of specific data types, it can be used to access data within any organization. The partner WSDL document only needs to be downloaded and consumed once per version of the API.
To access the current WSDLs for your organization, log into your Salesforce organization and from Setup, click Develop -> API -> Generate Enterprise/Partner WSDL. In general, the enterprise WSDL is more straightforward to use, while the partner WSDL is more flexible and dynamically adaptable to different organizations, allowing you to write a single application that can be used for multiple users and multiple organizations.REST API provides a powerful, convenient, and simple REST-based web services interface for interacting with Salesforce. Its advantages include ease of integration and development, and it’s an excellent choice of technology for use with mobile applications and Web projects.
Security Considerations
Accessing Salesforce data or business logic via any of the above-mentioned inbound interfacing ways requires the client application to authenticate. This authentication is subject to the same security protections that are used in the Salesforce UI. Using valid credentials for the Salesforce organization being accessed, the server authenticates the credentials and, if valid, provides the client application with:
a sessionId, that must be set into the session header so that all subsequent calls to the web service are authenticated
a serverUrl, that is the end point for the client application’s web service requests
Additional security considerations include configuring profiles/permission sets with appropriate features, settings and objects enabled and assigning users to them. One such permission is API Enabled, which needs to be granted to the user for accessing the APIs.Testing with soapUI
Using the Salesforce-generated WSDLs is not straightforward and therefore, to have a feel for the same you can opt for soapUI as a testing tool before actually getting into real application integration development. The process remains the same, i.e., importing the WSDL as a new project in soapUI and modifying the request message. But few points to remember –
Independent of the path you are following to integrate, i.e., SOAP API or Apex Web Services, there are two steps to implement the inbound integration:Obtaining the session ID and the server URL using the SOAP API login() call
Using these details to invoke the actual operation, like create() or any custom operation exposed using Apex Web Services. The session ID is to be provided in the session header section and the server URL needs to be set as the end point for the actual operation.
Structure the request message per the object and fields that need to be exchanged. For example:Creating/updating relationships using the create() API call, like creating a new Account and Contact, Account being the parent of the Contact.
Creating different unrelated object records in a single call. -
Deepak
MemberSeptember 12, 2019 at 2:16 pm in reply to: How to create record through code in custom metadata types?Apex code can create, read, and update (but not delete) custom metadata records, as long as the metadata is subscriber-controlled and visible from within the code's namespace.
DML operations aren’t allowed on custom metadata in the Partner or Enterprise APIs. With unpackaged metadata, both developer-controlled and subscriber-controlled access behave the same: like subscriber-controlled access.
Professional and Group Edition orgs can create, edit, and delete custom metadata records only from types in installed packages.
Refer:
https://help.salesforce.com/articleView?id=custommetadatatypes_accessing.htm&type=5
-
Deepak
MemberSeptember 12, 2019 at 2:00 pm in reply to: What is the difference between Social sign-on and Single sign-on ?Social sign-on
Social login is a form of single sign-on using existing information from a social networking service such as Facebook, Twitter or Google+, to sign into a third party website instead of creating a new login account specifically for that website.
Single sign-on
Single sign-on (SSO) is a session and user authentication service that permits a user to use one set of login credentials (e.g., name and password) to access multiple applications. SSO can be used by enterprises, smaller organizations, and individuals to mitigate the management of various usernames and passwords.
-
Use merge() to combine records of the same object type into one of the records, known as the master record . merge() deletes the other records, known as the victim records .
-
Deepak
MemberSeptember 11, 2019 at 2:49 pm in reply to: How to Assign permission set to a particular user through an IDE in Salesforce?From Setup, enter Users in the Quick Find box, then select Users.
Select a user.
In the Permission Set Assignments related list, click Edit Assignments.
To assign a permission set, select it under Available Permission Sets and click Add. To remove a permission set assignment, select it under Enabled Permission Sets and click Remove.
Click Save. -
Deepak
MemberSeptember 11, 2019 at 2:41 pm in reply to: How to send a record from one devloper org to another devloper org from lightning form in Salesforce?Hii Pragya
You can either use migration tool or you can use org to org integration by defining post method.
-
Deepak
MemberSeptember 10, 2019 at 1:28 pm in reply to: What is the use of Record Type in salesforce?Record types let you offer different business processes, picklist values, and page layouts to different users. You might create record types to differentiate your regular sales deals from your professional services engagements, offering different picklist values for each.
-
Deepak
MemberSeptember 10, 2019 at 11:58 am in reply to: What is throw new AuraHandledException() in Salesforce?Create and throw a System.AuraHandledException from your server-side controller to return a custom error message.
Errors happen. Sometimes they’re expected, such as invalid input from a user, or a duplicate record in a database. Sometimes they’re unexpected, such as... Well, if you’ve been programming for any length of time, you know that the range of unexpected errors is nearly infinite.When your server-side controller code experiences an error, two things can happen. You can catch it there and handle it in Apex. Otherwise, the error is passed back in the controller’s response.
If you handle the error Apex, you again have two ways you can go. You can process the error, perhaps recovering from it, and return a normal response to the client. Or, you can create and throw an AuraHandledException.
-
Deepak
MemberSeptember 10, 2019 at 11:55 am in reply to: What is Database.rollback() in Salesforce?database.savepoint is a method which is used to define a point which can be roll back to. If any error occurs during a transaction, that contains many statements, the application will roll back to the most recent savepoint and the entire transaction will not be aborted
-
Deepak
MemberSeptember 9, 2019 at 2:57 pm in reply to: What is the Access modifier in the Programme in Salesforce?Public Access Modifier
Whenever you grant everything with the access of Public, that would mean that within your salesforce.com environment, that class / variable or the method can be used or invoked directly from any other class. -
Deepak
MemberSeptember 9, 2019 at 2:56 pm in reply to: What is the difference between Ui input and lightning input in Salesforce?You can find base Lightning components in the lightning namespace to complement the existing ui namespace components. In instances where there are matching ui and lightning namespace components, we recommend that you use the lightning namespace component. The lightning namespace components are optimized for common use cases. Beyond being equipped with the Lightning Design System styling, they handle accessibility, real-time interaction, and enhanced error messages.
-
Deepak
MemberSeptember 9, 2019 at 2:53 pm in reply to: What is the User Mode Process in Salesforce?User mode is nothing but running apex code by respecting user's permissions and sharing of records. For example, if logged in user does not have create permission they are not able to create a record. In User mode, Profile level permissions, field-level security, and sharing rules are applied for the current user
-
Deepak
MemberSeptember 5, 2019 at 12:51 pm in reply to: What is a junction object and what is its use in Salesforce?Salesforce supports 2 kinds of relationships like Master Detail and Lookup. They are both one-to-many relationship, and they are both defined from the many-to-one side, that is from a child to a parent. They can be made one-to-one relationship by adding validation rules, or maybe triggers to enforce the one-to-one nature, i.e. only one child is allowed.
Junction objects are used to create many to many relationships between objects. If you take the Recruiting application example, you can see that a Position can be linked to many Candidates, and a Candidate can apply for different Positions. To create this data model you need a third object "Job Application" that links the 2.
So you'd create a lookup field for both Position and Candidate object on the "Job Application" object. This will establish many to many relationship between Position and Candidate via the "Job Application" object known as the junction object.
-
Deepak
MemberSeptember 5, 2019 at 12:48 pm in reply to: what is the use of @InvocableVariable annotation in salesforce?Use the InvocableVariable annotation to identify variables used by invocable methods in custom classes.
The InvocableVariable annotation identifies a class variable used as an input or output parameter for an InvocableMethod method’s invocable action. If you create your own custom class to use as the input or output to an invocable method, you can annotate individual class member variables to make them available to the method. -
Deepak
MemberSeptember 5, 2019 at 12:46 pm in reply to: How many Trailhead Playground we can have at one time in Salesforce?You can have up to 10 TPs at one time.
-
The class which implements the Queueable interface are basically called a Queueable apex class. This interface enables you to add jobs to the queue and monitor them, which is an enhanced way of running your asynchronous Apex code compared to using future methods. The interface has only one method execute which takes the parameter of QueableContext.
For Apex processes that run for a long time, such as extensive database operations or external Web service callouts, you can run them asynchronously by implementing the Queueable interface and adding a job to the Apex job queue. In this way, your asynchronous Apex job runs in the background in its own thread and doesn’t delay the execution of your main Apex logic. Each queued job runs when system resources become available. A benefit of using the Queueable interface methods is that some governor limits are higher than for synchronous Apex, such as heap size limits.
It allows you to submit jobs for asynchronous processing similar to future methods with with these additional benefits:
Non-primitive types: Your Queueable class can contain member variables of non-primitive data types, such as sObjects or custom Apex types. Those objects can be accessed when the job executes.
Monitoring: When you submit your job by invoking the System.enqueueJobmethod, the method returns the ID of the AsyncApexJob record. You can use this ID to identify your job and monitor its progress, either through the Salesforce user interface in the Apex Jobs page, or programmatically by querying your record from AsyncApexJob.
Chaining jobs: You can chain one job to another job by starting a second job from a running job. Chaining jobs is useful if you need to do some sequential processing. -
Deepak
MemberSeptember 4, 2019 at 10:52 am in reply to: How to add custom field in OutBound changeset?If the updated picklist fields in question are custom fields, you'll want to select the "Custom Field" Component Type from the "Add to Change Set" page and proceed to locate the desired custom fields to be added to your change set. You should be able to sort the resultant list view by Name (i.e., a custom field's Field Label) or Type (i.e., the object to which a custom field belongs).
Standard Fields are not available as components for change sets. Neither are Standard Objects (as opposed to being able to add a Custom Object to a change set).
You will not be able to include Campaign Influence and Campaign search layout Campaigns Tab to your change set.
On a related note, when you include a Custom Object component in a change set, that Custom Object's search layouts are automatically included because they are a part of the custom object.
-
Deepak
MemberSeptember 4, 2019 at 10:51 am in reply to: What is the limit on data.com records that can be added to salesforce?Data.com Prospector user licenses let users search Data.com for accounts and contacts, and add them as records to Salesforce. Users can be assigned one of two types of licenses—Data.com User and Data.com List User— and each type has its own characteristics.
REQUIRED EDITIONS
Available in: Salesforce Classic (not available in all orgs)
Available with a Data.com Prospector license in : Contact Manager (no Lead object), Group, Professional, Enterprise, Performance, and Unlimited EditionsIMPORTANT You need to assign a Data.com license directly to a user in order for that user to add and export files from Data.com.
Data.com User
Data.com Users get a limited number of account, contact, and lead records to add or export per month. The default number of records per licensed user is 300. The record addition limit for each licensed user refreshes at midnight on the first of the month (based on the time zone of the organization) regardless of your contract start date. Unused record additions expire at the end of each month, do not rollover to the next month, and are not refundable. You can select the Data.com Monthly Addition Limit for each user. This is the number of account, contact, and lead records the user can add each month. You can select up to the organization limit for any user or all users, but once the organization’s monthly limit is reached, users won’t be able to add more records.EXAMPLE The sales division of Universal Telco has 14 sales reps, and they purchase 20 Data.com Prospector licenses, each of which has a record addition limit of 300. This means that Data.com Users within the organization can add as many as 6,000 records per month. The Universal Telco administrator distributes the Data.com Users’ monthly record addition limits as follows.Ten of the sales reps have limits of 300 each
Two of the sales reps have limits of 500 each
Two of the sales reps have a limit of 1,000 each
Data.com List User
Data.com List Users get a limited number of account, contact, and lead records to add or export per month. Unused record additions expire at the end of each month and do not rollover to the next month. After the monthly limit is used, List Users draw record additions from a pool that is shared by all List Users in the organization. Unused pool additions expire one year from purchase. Only Data.com List Users can draw from the organization’s pool limit. If a Data.com User wants to draw from the organization’s pool limit, you need to change that user to a Data.com List User.EXAMPLE The marketing division of Universal Telco has four marketing reps. Each rep has a Data.com Prospector license and each is a Data.com List User. Universal Telco purchases enough monthly record additions so that each Data.com user has a monthly default limit of 300 records. The company also purchases a record addition pool of 5,000 records. This means that after each marketing rep uses his monthly limit, he can start using the pool limit. Together, all four marketing reps can add 5,000 records from the pool. One rep might add 2,500 records, leaving 2,500 to be added by one or more of the other three users.
-
This tag defines JavaScript functions to be called from JavaScript code. By using this tag you can call controllers methods from java script code using an AJAX request .
This component must be a child of <apex:form> tag. And we cannot place this tag inside an iteration tag like <apex:pageBlockTable> & <apex:repet> now. Earlier we were able to do this.But with api version 23 we cannot place <apex:actionFunction> inside iteration tags
-
Deepak
MemberSeptember 3, 2019 at 6:19 am in reply to: how to use $A.create Component for creating an existing component dynamically in Salesforce?Create a component dynamically in your client-side JavaScript code by using the $A.createComponent() method. To create multiple components, use $A.createComponents().$A.createComponent Syntax is looking as shown below.
1
$A.createComponent(String type, Object attributes, function callback)
type—The type of component to create; for example, “ui:button”.
attributes—A map of attributes for the component, including the local Id (aura:id).
callback(cmp, status, errorMessage)—The callback to invoke after the component is created
In this example, The client-side controller calls $A.createComponent() to create a ui:inputText with a local ID. The function(newInp, status, errorMessage) callback appends the inputText to the body of c:createComponent.<aura:component >
<lightning:button variant="brand" label="Create Component" onclick="{! c.handleComponent }" />
{!v.body}
</aura:component>({
handleComponent : function(component, event, helper) {
$A.createComponent(
"ui:inputText",
{
"aura:id": "inpId",
"labelClass":"slds-form-element__label",
"placeholder":"Enter Some Text",
"label": "Enter some text",
"class": "slds-input"
},
function(newInp, status, errorMessage){
if (status === "SUCCESS") {
var body = component.get("v.body");
body.push(newInp);
component.set("v.body", body);
}
else if (status === "INCOMPLETE") {
console.log("No response from server or client is offline.")
}
else if (status === "ERROR") {
console.log("Error: " + errorMessage);
}
}
);
},
})- This reply was modified 5 years, 2 months ago by Deepak.
-
Deepak
MemberSeptember 3, 2019 at 6:18 am in reply to: what is the use of <aura:set> in Salesforce lightning ?Use <aura:set> in the markup of a sub component to set the value of an inherited attribute.
Let's look at an example. Here is the c:setTagSuper component.
<!--c:setTagSuper-->
<aura:component extensible="true">
<aura:attribute name="address1" type="String" />
setTagSuper address1: {!v.address1}<br/>
</aura:component>c:setTagSuper outputs:
setTagSuper address1:
The address1 attribute doesn't output any value yet as it hasn't been set.
Here is the c:setTagSub component that extends c:setTagSuper.
<!--c:setTagSub-->
<aura:component extends="c:setTagSuper">
<aura:set attribute="address1" value="808 State St" />
</aura:component>c:setTagSub outputs:
setTagSuper address1: 808 State St