From 4b79e732f35c28dbb56ed992465f0c81958ee648 Mon Sep 17 00:00:00 2001 From: vikasrathee-cs Date: Tue, 5 Aug 2025 21:25:50 +0530 Subject: [PATCH] Updated the PK chunking supported object list. --- docs/Salesforce-batchsource.md | 171 +++++++++++------- .../source/batch/SalesforceSourceConfig.java | 2 +- .../batch/util/SalesforceSourceConstants.java | 169 ++++++++++------- 3 files changed, 206 insertions(+), 136 deletions(-) diff --git a/docs/Salesforce-batchsource.md b/docs/Salesforce-batchsource.md index 4c290bf0..93c6bf35 100644 --- a/docs/Salesforce-batchsource.md +++ b/docs/Salesforce-batchsource.md @@ -195,74 +195,109 @@ PK chunking works only with queries that don’t include `SELECT` clauses or con PK chunking only works with the following objects: -| Objects | -| ------- | -|Account| -|AccountContactRelation| -|AccountTeamMember| -|AiVisitSummary| -|Asset| -|B2BMktActivity| -|B2BMktProspect| -|Campaign| -|CampaignMember| -|CandidateAnswer| -|Case| -|CaseArticle| -|CaseComment| -|Claim| -|ClaimParticipant| -|Contact| -|ContractLineItem| -|ConversationEntry| -|CustomerProperty| -|EinsteinAnswerFeedback| -|EmailMessage| -|EngagementScore| -|Event| -|EventRelation| -|FeedItem| -|Individual| -|InsurancePolicy| -|InsurancePolicyAsset| -|InsurancePolicyParticipant| -|Lead| -|LeadInsight| -|LiveChatTranscript| -|LoginHistory| -|LoyaltyLedger| -|LoyaltyMemberCurrency| -|LoyaltyMemberTier| -|LoyaltyPartnerProduct| -|LoyaltyProgramMember| -|LoyaltyProgramPartner| -|Note| -|ObjectTerritory2Association| -|Opportunity| -|OpportunityContactRole| -|OpportunityHistory| -|OpportunityLineItem| -|OpportunitySplit| -|OpportunityTeamMember| -|Pricebook2| -|PricebookEntry| -|Product2| -|ProductConsumed| -|ProductRequired| -|QuickText| -|Quote| -|QuoteLineItem| -|ReplyText| -|ScoreIntelligence| -|ServiceContract| -|Task| -|TermDocumentFrequency| -|TransactionJournal| -|User| -|UserRole| -|VoiceCall| -|WorkOrder| -|WorkOrderLineItem| +| Objects | +|--------------------------------| +| Account | +| AccountContactRelation | +| AccountTeamMember | +| AiVisitSummary | +| Asset | +| AssignedResource | +| Campaign | +| CampaignMember | +| CandidateAnswer | +| Case | +| CaseArticle | +| CaseComment | +| CaseRelatedIssue | +| ChangeRequest | +| ChangeRequestRelatedIssue | +| ChangeRequestRelatedItem | +| Claim | +| ClaimParticipant | +| Contact | +| ContentDistribution | +| ContentDocument | +| ContentNote | +| ContentVersion | +| Contract | +| ContractLineItem | +| ConversationDefinitionEventLog | +| ConversationEntry | +| ConversationReason | +| ConversationReasonExcerpt | +| ConversationReasonGroup | +| CustomerProperty | +| EinsteinAnswerFeedback | +| EmailMessage | +| EngagementScore | +| Entitlement | +| Event | +| EventRelation | +| FeedItem | +| Incident | +| IncidentRelatedItem | +| Individual | +| InsurancePolicy | +| InsurancePolicyAsset | +| InsurancePolicyParticipant | +| Lead | +| LeadInsight | +| LinkedArticle | +| LiveChatTranscript | +| LoginHistory | +| LoyaltyAggrPointExprLedger | +| LoyaltyLedger | +| LoyaltyMemberCurrency | +| LoyaltyMemberTier | +| LoyaltyPartnerProduct | +| LoyaltyProgramMbrPromotion | +| LoyaltyProgramMember | +| LoyaltyProgramPartner | +| LoyaltyProgramPartnerLedger | +| MessagingSession | +| MlRetrainingFeedback | +| Note | +| ObjectTerritory2Association | +| Opportunity | +| OpportunityContactRole | +| OpportunityHistory | +| OpportunityLineItem | +| OpportunitySplit | +| OpportunityTeamMember | +| Order | +| OrderItem | +| Pricebook2 | +| PricebookEntry | +| Problem | +| ProblemIncident | +| ProblemRelatedItem | +| Product2 | +| ProductConsumed | +| ProductRequired | +| QuickText | +| Quote | +| QuoteLineItem | +| ReplyText | +| ScoreIntelligence | +| ServiceAppointment | +| ServiceContract | +| Task | +| TaskRelation | +| TermDocumentFrequency | +| TimeSheetEntry | +| TransactionJournal | +| User | +| UserRole | +| VoiceCall | +| VoiceCallRecording | +| Voucher | +| WebCart | +| WorkloadUnit | +| WorkOrder | +| WorkOrderLineItem | +| WorkPlan | +| WorkPlanTemplate | Support also includes custom objects, and any Sharing and History tables that support standard objects. diff --git a/src/main/java/io/cdap/plugin/salesforce/plugin/source/batch/SalesforceSourceConfig.java b/src/main/java/io/cdap/plugin/salesforce/plugin/source/batch/SalesforceSourceConfig.java index 12d12a6a..a828a626 100644 --- a/src/main/java/io/cdap/plugin/salesforce/plugin/source/batch/SalesforceSourceConfig.java +++ b/src/main/java/io/cdap/plugin/salesforce/plugin/source/batch/SalesforceSourceConfig.java @@ -317,7 +317,7 @@ private void validatePKChunk(FailureCollector collector, @Nullable OAuthInfo oAu private void checkForPKSupportedObject(String sObject, FailureCollector collector, @Nullable OAuthInfo oAuthInfo) { if (oAuthInfo != null) { if (!isCustomObject(sObject, collector, oAuthInfo)) { - if (!SUPPORTED_OBJECTS_WITH_PK_CHUNK.contains(sObject)) { + if (!SUPPORTED_OBJECTS_WITH_PK_CHUNK.contains(sObject.toLowerCase())) { collector.addFailure(String.format("SObject '%s' is not supported with PKChunk enabled.", sObject), "Please check documentation for supported Objects. " + "If this is a history " + diff --git a/src/main/java/io/cdap/plugin/salesforce/plugin/source/batch/util/SalesforceSourceConstants.java b/src/main/java/io/cdap/plugin/salesforce/plugin/source/batch/util/SalesforceSourceConstants.java index c98d5069..d4b73a30 100644 --- a/src/main/java/io/cdap/plugin/salesforce/plugin/source/batch/util/SalesforceSourceConstants.java +++ b/src/main/java/io/cdap/plugin/salesforce/plugin/source/batch/util/SalesforceSourceConstants.java @@ -55,74 +55,109 @@ public class SalesforceSourceConstants { public static final int MAX_PK_CHUNK_SIZE = 250000; public static final int DEFAULT_PK_CHUNK_SIZE = 100000; public static final int MIN_PK_CHUNK_SIZE = 1; - // https://developer.salesforce.com/docs/atlas.en-us.api_asynch.meta/api_asynch/ + // https://developer.salesforce.com/docs/atlas.en-us.252.0.api_asynch.meta/api_asynch/ // async_api_headers_enable_pk_chunking.htm - public static final List SUPPORTED_OBJECTS_WITH_PK_CHUNK = Arrays.asList("Account", - "AccountContactRelation", - "AccountTeamMember", - "AiVisitSummary", - "Asset", - "B2BMktActivity", - "B2BMktProspect", - "Campaign", - "CampaignMember", - "CandidateAnswer", - "Case", - "CaseArticle", - "CaseComment", - "Claim", - "ClaimParticipant", - "Contact", - "ContractLineItem", - "ConversationEntry", - "CustomerProperty", - "EinsteinAnswerFeedback", - "EmailMessage", - "EngagementScore", - "Event", - "EventRelation", - "FeedItem", - "Individual", - "InsurancePolicy", - "InsurancePolicyAsset", - "InsurancePolicyParticipant", - "Lead", - "LeadInsight", - "LiveChatTranscript", - "LoginHistory", - "LoyaltyLedger", - "LoyaltyMemberCurrency", - "LoyaltyMemberTier", - "LoyaltyPartnerProduct", - "LoyaltyProgramMember", - "LoyaltyProgramPartner", - "Note", - "ObjectTerritory2Association", - "Opportunity", - "OpportunityContactRole", - "OpportunityHistory", - "OpportunityLineItem", - "OpportunitySplit", - "OpportunityTeamMember", - "Pricebook2", - "PricebookEntry", - "Product2", - "ProductConsumed", - "ProductRequired", - "QuickText", - "Quote", - "QuoteLineItem", - "ReplyText", - "ScoreIntelligence", - "ServiceContract", - "Task", - "TermDocumentFrequency", - "TransactionJournal", - "User", - "UserRole", - "VoiceCall", - "WorkOrder", - "WorkOrderLineItem"); + public static final List SUPPORTED_OBJECTS_WITH_PK_CHUNK = Arrays.asList("account", + "accountcontactrelation", + "accountteammember", + "aivisitsummary", + "asset", + "assignedresource", + "campaign", + "campaignmember", + "candidateanswer", + "case", + "casearticle", + "casecomment", + "caserelatedissue", + "changerequest", + "changerequestrelatedissue", + "changerequestrelateditem", + "claim", + "claimparticipant", + "contact", + "contentdistribution", + "contentdocument", + "contentnote", + "contentversion", + "contract", + "contractlineitem", + "conversationdefinitioneventlog", + "conversationentry", + "conversationreason", + "conversationreasonexcerpt", + "conversationreasongroup", + "customerproperty", + "einsteinanswerfeedback", + "emailmessage", + "engagementscore", + "entitlement", + "event", + "eventrelation", + "feeditem", + "incident", + "incidentrelateditem", + "individual", + "insurancepolicy", + "insurancepolicyasset", + "insurancepolicyparticipant", + "lead", + "leadinsight", + "linkedarticle", + "livechattranscript", + "loginhistory", + "loyaltyaggrpointexprledger", + "loyaltyledger", + "loyaltymembercurrency", + "loyaltymembertier", + "loyaltypartnerproduct", + "loyaltyprogrammbrpromotion", + "loyaltyprogrammember", + "loyaltyprogrampartner", + "loyaltyprogrampartnerledger", + "messagingsession", + "mlretrainingfeedback", + "note", + "objectterritory2association", + "opportunity", + "opportunitycontactrole", + "opportunityhistory", + "opportunitylineitem", + "opportunitysplit", + "opportunityteammember", + "order", + "orderitem", + "pricebook2", + "pricebookentry", + "problem", + "problemincident", + "problemrelateditem", + "product2", + "productconsumed", + "productrequired", + "quicktext", + "quote", + "quotelineitem", + "replytext", + "scoreintelligence", + "serviceappointment", + "servicecontract", + "task", + "taskrelation", + "termdocumentfrequency", + "timesheetentry", + "transactionjournal", + "user", + "userrole", + "voicecall", + "voicecallrecording", + "voucher", + "webcart", + "workloadunit", + "workorder", + "workorderlineitem", + "workplan", + "workplantemplate"); /** * Salesforce Bulk API has a limitation, which is 5 minutes per processing of a batch, after that it will