Salesforce Known Limitations
Last updated
Last updated
This article summarizes Salesforce's known issues and limitations that AutoRABIT users should consider:
For Salesforce API version 45.0, Salesforce does not allow deployment or retrieval of the "PlatformEventChannel" component in any environment. Therefore, AutoRABIT will not be able to retrieve the "PlatformEventChannel" component into the destination org even though the deployment is successful.
The above case is also similar to the "PermissionSetGroup" component (for API version 45.0 only). However, Salesforce has provision for selected customers to deploy the PermissionSetGroup component through a pilot program that requires agreement to specific terms and conditions. To be nominated to participate in the program, do contact Salesforce.
I am receiving the following error messages while trying to deploy the standard Task object: "Value too long for field: Name maximum length is: 40" Ans: This is a Salesforce limitation that creates duplicate list views while performing either Selective or Full Deployment. Salesforce's R&D team is currently working on addressing this issue.
While deploying controlled picklist fields with altered picklist values, I am getting an error: "control field "XXXXXXXX" is not found" Ans: This is a known limitation from Salesforce. Reference: https://trailblazer.salesforce.com/issues_view?id=a1p3A0000003eAfQAI&title=deploying-controlled-picklist-fields-with-altered-picklist-values-is-failing-with-error-control-field-xxxxxxxx-is-not-found
While deploying picklist fields with empty values in translations, the deployment is successful; but any blank values are ignored and not persisted in the destination org. This is a known issue from Salesforce, and the Salesforce team is working to resolve it. Reference: https://trailblazer.salesforce.com/issues_view?id=a1p3A000000KRWiQAO&title=unable-to-update-translation-record-with-blank-null-value-via-metadata-api
A report with multiple subfolders was created by the user in Salesforce, and this report was subsequently added to Skip Members in ARM. Next, a job was created and the Do Not Include Skip Members check box was selected. After the job was finished, it was discovered that the report had not been skipped as anticipated. Analysis revealed that Salesforce is not displaying information about the parent folder. So, ARM cannot retrieve the right file path for the reports contained in the sub-folders.
Important Notes:
This issue exists both for CI Jobs as well as Deployments, in DX Repo and Non-DX Repo.
Jobs with skipped reports without any subfolders are working as expected.
It is not possible to deploy the removal of Field dependency values from one org to another because Field Dependencies cannot be removed via Metadata API. This is expected behavior and a known limitation from Salesforce. Reference: https://developer.salesforce.com/docs/atlas.enus.api_meta.meta/api_meta/meta_field_types.htm#meta_type_valueset
A deployment in ARM might fail with the following error: `UNKNOWN_EXCEPTION: An unexpected error occurred. Please include this ErrorId if you contact support.` This API exception is thrown by Salesforce and not by AutoRABIT. We don't have any more information about these errors. Please get in touch with Salesforce Customer Support and provide them with the deployment Async Request ID and the error message for further assistance.
If the Flow Entry criteria formulas are failing to Commit/Deploy, we recommend updating the Salesforce API version to 55.0 or later in ARM, then re-perform the commit/deployment, because the entry-related attributes for the Flow metadata were introduced in the API version 55.0. Here's a list of the entry attributes only present in API 55.0 from Flow metadata documentation:
Reference: https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_visual_workflow.htm
To update the Salesforce API version, go to Admin > My Account > Salesforce Settings.
While performing an EZ-Commit, Salesforce Org is unable to retrieve the complete information on whether some members of the WaveDataflow metadata type are available or not in the package.xml file; and if it is available then whether it is Added, Modified, and Deleted. If the metadata type is available in the package.xml file, it will be listed in both Added/Modified and Deleted tabs. Select the metadata type in the correct tab, and it will become unavailable in the other tab immediately.
For Salesforce API version 57.0, OmniSupervisorConfig metadata type is not supported in Unlocked Package creation, but is working as expected in Commits and Deployments.
Listed below in the table are the metadata types which are currently not supported in the DX format:
ApexTestSuite
AIApplicationConfig
BlacklistedConsumer
CMSConnectSource
CustomIndex
AIApplication
ForecastingType
InboundCertificate
MLDataDefinition
MLPredictionDefinition
ManagedContentType
MutingPermissionSet
UserAuthCertificate
UserProvisioningConfig
DecisionMatrixDefinitionVersion
UserAccessPolicy
ExternalAiModel
Any profile permission (say Object’s FLS, User permission) which holds a Boolean value is changed from True to False, the change cannot be committed to a branch through AutoRABIT.
Any Object CRUD for the profile is only fetched if at least one value is chosen. For example, if I change an Object CRUD from Create, Read, Update to None, this change is not fetched for Commit. In order to fetch Object CRUD at least one of Create, Edit, Read, Delete, View All, Modify All options should be selected.
The same behavior is applicable for Permission Sets as well. Any permission that holds Boolean value is changed from True to False, the change cannot be committed to a branch through AutoRABIT.
Salesforce strongly recommends moving from SFDX to SF CLI because SF CLI is the newer, more powerful, and more flexible tool. SFDX is based on the Force.com CLI, which was originally designed for command-line developers.
SFCLI is based on the Salesforce CLI, which was designed for a wider range of developers, including those who prefer to use a graphical user interface (GUI).
Feature
SFDX
SF CLI
Command-line interface
Yes
Yes
Graphical user interface
No
Yes
Programming languages supported
JavaScript
JavaScript, Python, Java, and more
Power
Less powerful
More powerful
Flexibility
Less flexible
More flexible
Ease of use
More difficult to learn
Easier to learn
Salesforce is aware of the limitations in SF CLI and is working to address them. One of the limitations that Salesforce is working to address includes:
Limitation 1: ERROR running force:source:deploy: INVALID_OPERATION: testLevel of NoTestRun cannot be used in production organizations" occurs although "RunLocalTests" is the default test level.
Description: When deploying to a production instance, 'force:source:deploy -m ApexClass,' you will receive an error:
'INVALID_OPERATION: testLevel of NoTestRun cannot be used in production organizations'
It should have a default testLevel of 'runLocalTests' for being a production org, but that isn't getting set.
Workaround: Run the sfdx command through [TESTLEVEL] option.
Sample command: sfdx force:source:deploy -m ApexClass -u xxx@xxx.xxx -l RunLocalTests
Use the following links for reference:
https://github.com/forcedotcom/cli/issues/2105
What is AutoRABIT doing to help customers?
AutoRABIT is committed to delivering an exceptional customer experience. We continue to work closely with Salesforce to overcome limitations where they exist. While we jointly pursue a more elegant solution, please use the workaround cited above and continue providing the much-needed feedback that makes AutoRABIT the best choice for Salesforce DevOps. Stay tuned for our weekly updates where new information will be communicated.
Execution Governors Limitations handled by AutoRABIT's Data Loader Pro
A total number of records retrieved by SOQL queries if it is greater than 50,000 limits- Dataloader Pro uses the "Querymore" operator to retrieve all the records that are greater than 50,000 limits.
SOQL query runtime before Salesforce cancels the transaction is above 120 seconds- As per the Salesforce execution governors limitation, the maximum SOQL query runtime before Salesforce cancels the transaction is 120 seconds. If it is beyond 120 seconds, this cannot be handled by our Dataloader Pro.
SOQL characters length should be 20,000 characters- Dataloader Pro divides a single query into multiple queries and execute them. Getting proper estimation while saving a Dataloader job, is very difficult as the queries are randomly generated. This normally occurs in two different scenarios:
When fetching parents and child records that are linked to the master objects and
When extracting data of a particular object with all the linked fields. Since there are millions of records, there are more chances of the query being timed out. Therefore, it is highly recommended to create two or more jobs rather than creating a single job; apply proper filters on the master objects and select a minimum multiple reference option during execution.
Salesforce does not retrieve Validation rules from destination org for a particular object if the same object is duplicated and is available in Deleted objects list.
Salesforce restricts access to create an External Id for the following objects in AutoRABIT. These listed objects are not supported in Dataloader Pro (for more details, refer to How to perform Dataloader Pro Operation, step 6) and Test Environment Setup (for more details, refer to Create a New Test Environment Setup, step 5).
ActionLinkGroupTemplate
ActivityHistory
AccountTeamMember
AggregateResult
EmailStatus
DuplicateRecordItem
DandBCompany
ContentDistribution
FeedLike
FeedTrackedChange
Name
OpenActivity
ProcessInstanceHistory
AccountFeed
AccountHistory
AccountPartner
AccountTag
ApexLog
ApexTestResult
AssetFeed
AssetTag
AssignmentRule
AsyncApexJob
CallCenter
CampaignHistory
CampaignFeed
CampaignTag
CaseFeed
CaseHistory
CaseSolution
CaseStatus
CaseTag
CaseTeamTemplateRecord
ChatterActivity
Community
CollaborationGroupFeed
NewsFeed
NoteTag
OpportunityFeed
CollaborationInvitation
CollaborationGroupRecord
ContactShare
ContactFeed
ContentDocumentFeed
ContractStatus
DashboardFeed
ContentDocumentHistory
DashboardComponent
EventAttendee
ContactHistory
ContractFeed
CronTrigger
DashboardTag
ContentVersionHistory
DashboardComponentFeed
EventTag
ContactTag
ContractTag
Dashboard
DocumentTag
EntitySubscription
EventRelation
FeedComment
EventFeed
LeadHistory
LeadFeed
GoogleDoc
AttachedContentDocument
FiscalYearSettings
FeedItem
ForecastShare
GroupMember
LeadTag
LoginHistory
OpportunityFieldHistory
CombinedAttachment
ProcessInstanceStep
LeadStatus
OpportunityTag
Partner
OpportunityStage
OpportunityHistory
ProcessInstance
Report
Period
Pricebook2History
PartnerRole
Product2Feed
OpportunityPartner
PermissionSetAssignment
ReportFeed
SetupEntityAccess
QueueSobject
SolutionFeed
SolutionHistory
ContractHistory
SiteHistory
ReportTag
SiteDomain
Site
TaskFeed
UserLicense
UserPreference
SolutionStatus
TaskPriority
TaskStatus
TaskTag
UserFeed
TopicAssignment
SiteFeed
SolutionTag
UserRecordAccess
Vote
ContentDocumentLink
AccountShare
AccountContactRole
ApexExecutionOverlayAction
CaseShare
Activity
AdditionalNumber
ApexComponent
BusinessHours
BusinessProcess
CaseComment
CategoryData
ApexTestQueueItem
UserProfileFeed
Approval
BrandTemplate
CampaignShare
CaseContactRole
CategoryNode
CaseTeamMember
CaseTeamTemplate
CaseTeamTemplateMember
Document
CollaborationGroup
CollaborationGroupMember
PushTopic
ContentVersion
ContentDocument
ContractContactRole
Holiday
EmailMessage
CollaborationGroupMemberRequest
IDEWorkspace
EmailServicesAddress
EmailServicesFunction
LeadShare
MailmergeTemplate
Note
DocumentAttachmentMap
ObjectPermissions
EmailTemplate
IDEPerspective
LiveChatTranscript
NoteAndAttachment
OpportunityCompetitor
OpportunityContactRole
Group
ProcessInstanceWorkitem
OpportunityShare
WebLink
ApexPage
Organization
RecordType
StaticResource
CaseTeamRole
TagDefinition
ApexTrigger
Folder
PermissionSet
Scontrol
UserRole
SelfServiceUser
ApexClass
FieldPermissions
OrgWideEmailAddress
Profile
SlaProcess
AssetTokenEvent
TraceFlag
Territory
ContentAsset
LookedUpFromActivity
AttachedContentNote
ObjectTerritory2Association
NetworkDiscoverableLogin
User
EmailMessageRelation
UserAppInfo
FeedAttachment
NetworkActivityAudit
NetworkUserHistoryRecent
RecordActionHistory
TodayGoal
TestSuiteMembership
SecurityCustomBaseline
Territory2Type
CampaignMemberStatus
ListEmailIndividualRecipient
EmbeddedServiceLabel
TodayGoalShare
EmbeddedServiceDetail
OutgoingEmail
Territory2
UserEmailPreferredPerson
UserEmailPreferredPersonShare
Knowledge__ka
ApexTestRunResult
Stamp
OutgoingEmailRelation
BatchApexErrorEvent
ApexTestResultLimits
StampAssignment
Audience
However, if the user wants to migrate data on the above objects, they can do so by using the Single Dataloader operation in AutoRABIT.
When you face the error below when registering a Salesforce Org in ARM, please follow the steps below.
Log in to your Salesforce Org.
Navigate to Setup.
Open "OAuth and OpenID Connect Settings" in the quick find box.
Disable the checkbox for "Require Proof Key for Code Exchange (PKCE) Extension for Supported Authorization Flows."
Now try registering the org in ARM.
This is a limitation of Salesforce. See the article: URL: Feed Item Detail | Salesforce Trailblazer Community.