diff --git a/METADATA_SUPPORT.md b/METADATA_SUPPORT.md index 78598879fa..bdb995809b 100644 --- a/METADATA_SUPPORT.md +++ b/METADATA_SUPPORT.md @@ -8,649 +8,652 @@ Currently, there are 598/611 supported metadata types. For status on any existing gaps, please search or file an issue in the [Salesforce CLI issues only repo](https://github.com/forcedotcom/cli/issues). To contribute a new metadata type, please see the [Contributing Metadata Types to the Registry](./contributing/metadata.md) -| Metadata Type | Support | Notes | -| :------------------------------------- | :------ | :----------------------------------------------- | -| AIApplication | ✅ | | -| AIApplicationConfig | ✅ | | -| AIReplyRecommendationsSettings | ✅ | | -| AIScoringModelDefVersion | ✅ | | -| AIScoringModelDefinition | ✅ | | -| AIUsecaseDefinition | ⚠️ | Supports deploy/retrieve but not source tracking | -| AccountForecastSettings | ✅ | | -| AccountIntelligenceSettings | ✅ | | -| AccountRelationshipShareRule | ✅ | | -| AccountSettings | ✅ | | -| AccountingFieldMapping | ✅ | | -| AccountingModelConfig | ✅ | | -| AccountingSettings | ✅ | | -| AcctMgrTargetSettings | ✅ | | -| ActionLauncherItemDef | ✅ | | -| ActionLinkGroupTemplate | ✅ | | -| ActionPlanTemplate | ✅ | | -| ActionableEventOrchDef | ✅ | | -| ActionableEventTypeDef | ✅ | | -| ActionableListDefinition | ✅ | | -| ActionsSettings | ✅ | | -| ActivationPlatform | ✅ | | -| ActivitiesSettings | ✅ | | -| ActnblListKeyPrfmIndDef | ✅ | | -| AddressSettings | ✅ | | -| AdvAccountForecastSet | ✅ | | -| AdvAcctForecastDimSource | ✅ | | -| AdvAcctForecastPeriodGroup | ✅ | | -| AffinityScoreDefinition | ✅ | | -| Ai4mSettings | ✅ | | -| AnalyticSnapshot | ✅ | | -| AnalyticsSettings | ✅ | | -| AnimationRule | ✅ | | -| ApexClass | ✅ | | -| ApexComponent | ✅ | | -| ApexEmailNotifications | ✅ | | -| ApexPage | ✅ | | -| ApexSettings | ✅ | | -| ApexTestSuite | ✅ | | -| ApexTrigger | ✅ | | -| AppAnalyticsSettings | ✅ | | -| AppExperienceSettings | ✅ | | -| AppMenu | ✅ | | -| ApplicationRecordTypeConfig | ✅ | | -| ApplicationSubtypeDefinition | ✅ | | -| AppointmentAssignmentPolicy | ✅ | | -| AppointmentSchedulingPolicy | ✅ | | -| ApprovalProcess | ✅ | | -| AssessmentConfiguration | ✅ | | -| AssessmentQuestion | ✅ | | -| AssessmentQuestionSet | ✅ | | -| AssignmentRules | ✅ | | -| AssistantContextItem | ✅ | | -| AssistantDefinition | ✅ | | -| AssistantSkillQuickAction | ✅ | | -| AssistantSkillSobjectAction | ✅ | | -| AssistantVersion | ✅ | | -| AssociationEngineSettings | ✅ | | -| Audience | ✅ | | -| AuraDefinitionBundle | ✅ | | -| AuthProvider | ✅ | | -| AutoResponseRules | ✅ | | -| AutomatedContactsSettings | ✅ | | -| BatchCalcJobDefinition | ✅ | | -| BatchProcessJobDefinition | ✅ | | -| BenefitAction | ✅ | | -| BlacklistedConsumer | ✅ | | -| BldgEnrgyIntensityCnfg | ✅ | | -| BlockchainSettings | ✅ | | -| Bot | ✅ | | -| BotBlock | ✅ | | -| BotBlockVersion | ❌ | Not supported, but support could be added | -| BotSettings | ✅ | | -| BotTemplate | ✅ | | -| BotVersion | ✅ | | -| BranchManagementSettings | ✅ | | -| BrandingSet | ✅ | | -| BriefcaseDefinition | ✅ | | -| BusinessHoursSettings | ✅ | | -| BusinessProcess | ✅ | | -| BusinessProcessGroup | ✅ | | -| BusinessProcessTypeDefinition | ✅ | | -| CMSConnectSource | ✅ | | -| CallCenter | ✅ | | -| CallCenterRoutingMap | ✅ | | -| CallCoachingMediaProvider | ⚠️ | Supports deploy/retrieve but not source tracking | -| CampaignInfluenceModel | ✅ | | -| CampaignSettings | ✅ | | -| CanvasMetadata | ✅ | | -| CareBenefitVerifySettings | ✅ | | -| CareLimitType | ✅ | | -| CareProviderAfflRoleConfig | ✅ | | -| CareProviderSearchConfig | ✅ | | -| CareRequestConfiguration | ✅ | | -| CareSystemFieldMapping | ✅ | | -| CaseSettings | ✅ | | -| CaseSubjectParticle | ✅ | | -| Certificate | ✅ | | -| ChannelLayout | ✅ | | -| ChannelObjectLinkingRule | ✅ | | -| ChatterAnswersSettings | ✅ | | -| ChatterEmailsMDSettings | ✅ | | -| ChatterExtension | ✅ | | -| ChatterSettings | ✅ | | -| ClaimFinancialSettings | ✅ | | -| ClaimMgmtFoundationEnabledSettings | ✅ | | -| ClauseCatgConfiguration | ✅ | | -| CleanDataService | ✅ | | -| CodeBuilderSettings | ✅ | | -| CollectionsDashboardSettings | ✅ | | -| CommandAction | ✅ | | -| CommerceSettings | ✅ | | -| CommsServiceConsoleSettings | ✅ | | -| CommunitiesSettings | ✅ | | -| Community | ✅ | | -| CommunityTemplateDefinition | ✅ | | -| CommunityThemeDefinition | ✅ | | -| CompactLayout | ✅ | | -| CompanySettings | ✅ | | -| ConnectedApp | ✅ | | -| ConnectedAppSettings | ✅ | | -| ContentAsset | ✅ | | -| ContentSettings | ✅ | | -| ContextDefinition | ⚠️ | Supports deploy/retrieve but not source tracking | -| ContextUseCaseMapping | ✅ | | -| ContractSettings | ✅ | | -| ContractType | ✅ | | -| ConversationChannelDefinition | ✅ | | -| ConversationServiceIntegrationSettings | ✅ | | -| ConversationVendorInfo | ✅ | | -| ConversationalIntelligenceSettings | ✅ | | -| CorsWhitelistOrigin | ✅ | | -| CspTrustedSite | ✅ | | -| CurrencySettings | ✅ | | -| CustomAddressFieldSettings | ✅ | | -| CustomApplication | ✅ | | -| CustomApplicationComponent | ✅ | | -| CustomFeedFilter | ✅ | | -| CustomField | ✅ | | -| CustomHelpMenuSection | ✅ | | -| CustomIndex | ✅ | | -| CustomLabels | ✅ | | -| CustomMetadata | ✅ | | -| CustomNotificationType | ✅ | | -| CustomObject | ✅ | | -| CustomObjectTranslation | ✅ | | -| CustomPageWebLink | ✅ | | -| CustomPermission | ✅ | | -| CustomSite | ✅ | | -| CustomTab | ✅ | | -| CustomValue | ❌ | Not supported, but support could be added | -| CustomerDataPlatformSettings | ✅ | | -| CustomizablePropensityScoringSettings | ✅ | | -| Dashboard | ✅ | | -| DashboardFolder | ✅ | | -| DataCalcInsightTemplate | ✅ | | -| DataCategoryGroup | ✅ | | -| DataConnectionParamTmpl | ❌ | Not supported, but support could be added | -| DataConnectorIngestApi | ✅ | | -| DataConnectorS3 | ✅ | | -| DataDotComSettings | ✅ | | -| DataImportManagementSettings | ✅ | | -| DataKitObjectDependency | ✅ | | -| DataKitObjectTemplate | ✅ | | -| DataPackageKitDefinition | ✅ | | -| DataPackageKitObject | ✅ | | -| DataSource | ✅ | | -| DataSourceBundleDefinition | ✅ | | -| DataSourceObject | ✅ | | -| DataSourceTenant | ✅ | | -| DataSrcDataModelFieldMap | ✅ | | -| DataStreamDefinition | ✅ | | -| DataStreamTemplate | ✅ | | -| DataWeaveResource | ✅ | | -| DecisionMatrixDefinition | ✅ | | -| DecisionMatrixDefinitionVersion | ✅ | | -| DecisionTable | ✅ | | -| DecisionTableDatasetLink | ✅ | | -| DelegateGroup | ✅ | | -| DeploymentSettings | ✅ | | -| DevHubSettings | ✅ | | -| DigitalExperience | ✅ | | -| DigitalExperienceBundle | ✅ | | -| DigitalExperienceConfig | ✅ | | -| DisclosureDefinition | ✅ | | -| DisclosureDefinitionVersion | ✅ | | -| DisclosureType | ✅ | | -| DiscoveryAIModel | ✅ | | -| DiscoveryGoal | ✅ | | -| DiscoverySettings | ✅ | | -| DiscoveryStory | ✅ | | -| Document | ✅ | | -| DocumentCategory | ✅ | | -| DocumentCategoryDocumentType | ✅ | | -| DocumentChecklistSettings | ✅ | | -| DocumentFolder | ✅ | | -| DocumentGenerationSetting | ✅ | | -| DocumentTemplate | ⚠️ | Supports deploy/retrieve but not source tracking | -| DocumentType | ✅ | | -| DuplicateRule | ✅ | | -| DynamicFormsSettings | ✅ | | -| DynamicFulfillmentOrchestratorSettings | ✅ | | -| EACSettings | ✅ | | -| ESignatureConfig | ✅ | | -| ESignatureEnvelopeConfig | ✅ | | -| EclairGeoData | ✅ | | -| EinsteinAISettings | ✅ | | -| EinsteinAgentSettings | ✅ | | -| EinsteinAssistantSettings | ✅ | | -| EinsteinCopilotSettings | ✅ | | -| EinsteinDealInsightsSettings | ✅ | | -| EinsteinDocumentCaptureSettings | ✅ | | -| EinsteinGptSettings | ✅ | | -| EmailAdministrationSettings | ✅ | | -| EmailFolder | ✅ | | -| EmailIntegrationSettings | ✅ | | -| EmailServicesFunction | ✅ | | -| EmailTemplate | ✅ | | -| EmailTemplateFolder | ✅ | | -| EmailTemplateSettings | ✅ | | -| EmbeddedServiceBranding | ✅ | | -| EmbeddedServiceConfig | ✅ | | -| EmbeddedServiceFlowConfig | ✅ | | -| EmbeddedServiceLiveAgent | ✅ | | -| EmbeddedServiceMenuSettings | ✅ | | -| EmployeeDataSyncProfile | ✅ | | -| EmployeeFieldAccessSettings | ✅ | | -| EmployeeUserSettings | ✅ | | -| EnablementMeasureDefinition | ⚠️ | Supports deploy/retrieve but not source tracking | -| EnablementProgramDefinition | ⚠️ | Supports deploy/retrieve but not source tracking | -| EnhancedNotesSettings | ✅ | | -| EntitlementProcess | ✅ | | -| EntitlementSettings | ✅ | | -| EntitlementTemplate | ✅ | | -| EscalationRules | ✅ | | -| EssentialsSettings | ✅ | | -| EventLogObjectSettings | ✅ | | -| EventSettings | ✅ | | -| ExperienceBundle | ✅ | | -| ExperienceBundleSettings | ✅ | | -| ExperiencePropertyTypeBundle | ✅ | | -| ExplainabilityActionDefinition | ✅ | | -| ExplainabilityActionVersion | ✅ | | -| ExplainabilityMsgTemplate | ✅ | | -| ExpressionSetDefinition | ✅ | | -| ExpressionSetDefinitionVersion | ✅ | | -| ExpressionSetObjectAlias | ✅ | | -| ExtDataTranFieldTemplate | ❌ | Not supported, but support could be added | -| ExtDataTranObjectTemplate | ✅ | | -| ExternalAIModel | ✅ | | -| ExternalAuthIdentityProvider | ✅ | | -| ExternalClientAppSettings | ✅ | | -| ExternalClientApplication | ✅ | | -| ExternalCredential | ✅ | | -| ExternalDataConnector | ✅ | | -| ExternalDataSource | ✅ | | -| ExternalDataSrcDescriptor | ❌ | Not supported, but support could be added | -| ExternalDataTranField | ❌ | Not supported, but support could be added | -| ExternalDataTranObject | ✅ | | -| ExternalDocStorageConfig | ✅ | | -| ExternalServiceRegistration | ✅ | | -| ExtlClntAppConfigurablePolicies | ✅ | | -| ExtlClntAppGlobalOauthSettings | ✅ | | -| ExtlClntAppMobileConfigurablePolicies | ✅ | | -| ExtlClntAppMobileSettings | ✅ | | -| ExtlClntAppNotificationSettings | ✅ | | -| ExtlClntAppOauthConfigurablePolicies | ✅ | | -| ExtlClntAppOauthSettings | ✅ | | -| FeatureParameterBoolean | ✅ | | -| FeatureParameterDate | ✅ | | -| FeatureParameterInteger | ✅ | | -| FieldRestrictionRule | ✅ | | -| FieldServiceMobileExtension | ✅ | | -| FieldServiceSettings | ✅ | | -| FieldSet | ✅ | | -| FieldSrcTrgtRelationship | ✅ | | -| FileUploadAndDownloadSecuritySettings | ✅ | | -| FilesConnectSettings | ✅ | | -| FlexiPage | ✅ | | -| Flow | ✅ | | -| FlowCategory | ✅ | | -| FlowDefinition | ⚠️ | Supports deploy/retrieve but not source tracking | -| FlowSettings | ✅ | | -| FlowTest | ✅ | | -| ForecastingFilter | ✅ | | -| ForecastingFilterCondition | ✅ | | -| ForecastingGroup | ✅ | | -| ForecastingObjectListSettings | ✅ | | -| ForecastingSettings | ✅ | | -| ForecastingSourceDefinition | ✅ | | -| ForecastingType | ✅ | | -| ForecastingTypeSource | ✅ | | -| FormulaSettings | ✅ | | -| FuelType | ✅ | | -| FuelTypeSustnUom | ✅ | | -| FunctionReference | ⚠️ | Supports deploy/retrieve but not source tracking | -| FundraisingConfig | ✅ | | -| GatewayProviderPaymentMethodType | ✅ | | -| GenAiFunction | ✅ | | -| GenAiPlanner | ✅ | | -| GenAiPlugin | ✅ | | -| GenAiPluginInstructionDef | ❌ | Not supported, but support could be added | -| GlobalValueSet | ✅ | | -| GlobalValueSetTranslation | ✅ | | -| GoogleAppsSettings | ✅ | | -| Group | ✅ | | -| HighVelocitySalesSettings | ✅ | | -| HomePageComponent | ✅ | | -| HomePageLayout | ✅ | | -| IPAddressRange | ✅ | | -| Icon | ✅ | | -| IdeasSettings | ✅ | | -| IdentityProviderSettings | ✅ | | -| IdentityVerificationProcDef | ✅ | | -| IframeWhiteListUrlSettings | ✅ | | -| InboundCertificate | ✅ | | -| InboundNetworkConnection | ✅ | | -| IncidentMgmtSettings | ✅ | | -| IncludeEstTaxInQuoteCPQSettings | ✅ | | -| IncludeEstTaxInQuoteSettings | ✅ | | -| Index | ⚠️ | Supports deploy/retrieve but not source tracking | -| IndustriesAutomotiveSettings | ✅ | | -| IndustriesContextSettings | ✅ | | -| IndustriesEinsteinFeatureSettings | ✅ | | -| IndustriesEventOrchSettings | ✅ | | -| IndustriesFieldServiceSettings | ✅ | | -| IndustriesGamificationSettings | ✅ | | -| IndustriesLoyaltySettings | ✅ | | -| IndustriesManufacturingSettings | ✅ | | -| IndustriesPricingSettings | ✅ | | -| IndustriesSettings | ✅ | | -| IndustriesUnifiedPromotionsSettings | ✅ | | -| InstalledPackage | ⚠️ | Supports deploy/retrieve but not source tracking | -| IntegrationProviderDef | ✅ | | -| InterestTaggingSettings | ✅ | | -| InternalDataConnector | ✅ | | -| InvLatePymntRiskCalcSettings | ✅ | | -| InventorySettings | ✅ | | -| InvocableActionSettings | ✅ | | -| IoTSettings | ✅ | | -| KeywordList | ✅ | | -| KnowledgeGenerationSettings | ✅ | | -| KnowledgeSettings | ✅ | | -| LanguageSettings | ✅ | | -| LargeQuotesandOrdersForRlmSettings | ✅ | | -| Layout | ✅ | | -| LeadConfigSettings | ✅ | | -| LeadConvertSettings | ✅ | | -| LearningAchievementConfig | ✅ | | -| Letterhead | ✅ | | -| LicensingSettings | ✅ | | -| LightningBolt | ✅ | | -| LightningComponentBundle | ✅ | | -| LightningExperienceSettings | ✅ | | -| LightningExperienceTheme | ✅ | | -| LightningMessageChannel | ✅ | | -| LightningOnboardingConfig | ✅ | | -| ListView | ✅ | | -| LiveAgentSettings | ✅ | | -| LiveChatAgentConfig | ✅ | | -| LiveChatButton | ✅ | | -| LiveChatDeployment | ✅ | | -| LiveChatSensitiveDataRule | ✅ | | -| LiveMessageSettings | ✅ | | -| LocationUse | ✅ | | -| LoyaltyProgramSetup | ⚠️ | Supports deploy/retrieve but not source tracking | -| MacroSettings | ✅ | | -| MailMergeSettings | ✅ | | -| ManagedContentType | ⚠️ | Supports deploy/retrieve but not source tracking | -| ManagedEventSubscription | ✅ | | -| ManagedTopics | ✅ | | -| MapsAndLocationSettings | ✅ | | -| MarketSegmentDefinition | ✅ | | -| MarketingAppExtActivity | ❌ | Not supported, but support could be added | -| MarketingAppExtension | ✅ | | -| MatchingRules | ✅ | | -| MediaAdSalesSettings | ✅ | | -| MeetingsSettings | ✅ | | -| MessagingChannel | ⚠️ | Supports deploy/retrieve but not source tracking | -| MfgProgramTemplate | ✅ | | -| MfgServiceConsoleSettings | ✅ | | -| MilestoneType | ✅ | | -| MktCalcInsightObjectDef | ✅ | | -| MktDataConnection | ✅ | | -| MktDataConnectionCred | ❌ | Not supported, but support could be added | -| MktDataConnectionParam | ❌ | Not supported, but support could be added | -| MktDataConnectionSrcParam | ✅ | | -| MktDataTranObject | ✅ | | -| MlDomain | ✅ | | -| MobSecurityCertPinConfig | ✅ | | -| MobileApplicationDetail | ✅ | | -| MobileSecurityAssignment | ✅ | | -| MobileSecurityPolicy | ✅ | | -| MobileSettings | ✅ | | -| ModerationRule | ✅ | | -| MutingPermissionSet | ✅ | | -| MyDomainDiscoverableLogin | ✅ | | -| MyDomainSettings | ✅ | | -| NameSettings | ✅ | | -| NamedCredential | ✅ | | -| NavigationMenu | ✅ | | -| Network | ✅ | | -| NetworkBranding | ✅ | | -| NotificationTypeConfig | ✅ | | -| NotificationsSettings | ✅ | | -| OauthCustomScope | ✅ | | -| OauthOidcSettings | ✅ | | -| OauthTokenExchangeHandler | ✅ | | -| ObjectHierarchyRelationship | ✅ | | -| ObjectLinkingSettings | ✅ | | -| ObjectSourceTargetMap | ✅ | | -| OcrSampleDocument | ✅ | | -| OcrTemplate | ✅ | | -| OmniChannelPricingSettings | ✅ | | -| OmniChannelSettings | ✅ | | -| OmniDataTransform | ⚠️ | Supports deploy/retrieve but not source tracking | -| OmniExtTrackingDef | ⚠️ | Supports deploy/retrieve but not source tracking | -| OmniIntegrationProcedure | ⚠️ | Supports deploy/retrieve but not source tracking | -| OmniInteractionAccessConfig | ⚠️ | Supports deploy/retrieve but not source tracking | -| OmniInteractionConfig | ⚠️ | Supports deploy/retrieve but not source tracking | -| OmniScript | ⚠️ | Supports deploy/retrieve but not source tracking | -| OmniSupervisorConfig | ✅ | | -| OmniTrackingGroup | ⚠️ | Supports deploy/retrieve but not source tracking | -| OmniUiCard | ⚠️ | Supports deploy/retrieve but not source tracking | -| OnlineSalesSettings | ✅ | | -| OpportunityScoreSettings | ✅ | | -| OpportunitySettings | ✅ | | -| OrderManagementSettings | ✅ | | -| OrderSettings | ✅ | | -| OrgSettings | ✅ | | -| OutboundNetworkConnection | ✅ | | -| PardotEinsteinSettings | ✅ | | -| PardotSettings | ✅ | | -| ParticipantRole | ✅ | | -| PartyDataModelSettings | ✅ | | -| PathAssistant | ✅ | | -| PathAssistantSettings | ✅ | | -| PaymentGatewayProvider | ✅ | | -| PaymentsManagementEnabledSettings | ✅ | | -| PaymentsSettings | ✅ | | -| PermissionSet | ✅ | | -| PermissionSetGroup | ✅ | | -| PermissionSetLicenseDefinition | ✅ | | -| PersonAccountOwnerPowerUser | ✅ | | -| PicklistSettings | ✅ | | -| PicklistValue | ❌ | Not supported, but support could be added | -| PipelineInspMetricConfig | ✅ | | -| PlatformCachePartition | ✅ | | -| PlatformEventChannel | ✅ | | -| PlatformEventChannelMember | ✅ | | -| PlatformEventSettings | ✅ | | -| PlatformEventSubscriberConfig | ✅ | | -| PlatformSlackSettings | ✅ | | -| PortalDelegablePermissionSet | ✅ | | -| PortalsSettings | ✅ | | -| PostTemplate | ✅ | | -| PredictionBuilderSettings | ✅ | | -| PresenceDeclineReason | ✅ | | -| PresenceUserConfig | ✅ | | -| PricingActionParameters | ⚠️ | Supports deploy/retrieve but not source tracking | -| PricingRecipe | ✅ | | -| PrivacySettings | ✅ | | -| ProcessFlowMigration | ✅ | | -| ProductAttrDisplayConfig | ✅ | | -| ProductAttributeSet | ✅ | | -| ProductConfiguratorSettings | ✅ | | -| ProductSettings | ✅ | | -| ProductSpecificationRecType | ✅ | | -| ProductSpecificationType | ✅ | | -| Profile | ✅ | | -| ProfilePasswordPolicy | ✅ | | -| ProfileSessionSetting | ✅ | | -| Prompt | ✅ | | -| Queue | ✅ | | -| QueueRoutingConfig | ✅ | | -| QuickAction | ✅ | | -| QuickTextSettings | ✅ | | -| QuoteSettings | ✅ | | -| RealTimeEventSettings | ✅ | | -| RecAlrtDataSrcExpSetDef | ✅ | | -| RecommendationBuilderSettings | ✅ | | -| RecommendationStrategy | ✅ | | -| RecordActionDeployment | ✅ | | -| RecordAggregationDefinition | ✅ | | -| RecordAlertCategory | ✅ | | -| RecordAlertDataSource | ✅ | | -| RecordAlertTemplate | ✅ | | -| RecordPageSettings | ✅ | | -| RecordType | ✅ | | -| RedirectWhitelistUrl | ✅ | | -| ReferencedDashboard | ✅ | | -| ReferralMarketingSettings | ✅ | | -| RegisteredExternalService | ✅ | | -| RelatedRecordAssocCriteria | ✅ | | -| RelationshipGraphDefinition | ✅ | | -| RemoteSiteSetting | ✅ | | -| Report | ✅ | | -| ReportFolder | ✅ | | -| ReportType | ✅ | | -| RestrictionRule | ✅ | | -| RetailExecutionSettings | ✅ | | -| RetrievalSummaryDefinition | ✅ | | -| RevenueManagementSettings | ✅ | | -| Role | ✅ | | -| SalesAgreementSettings | ✅ | | -| SalesWorkQueueSettings | ✅ | | -| SamlSsoConfig | ✅ | | -| SandboxSettings | ✅ | | -| SceGlobalModelOptOutSettings | ✅ | | -| SchedulingObjective | ✅ | | -| SchedulingRule | ✅ | | -| SchemaSettings | ✅ | | -| ScoreCategory | ✅ | | -| SearchCustomization | ⚠️ | Supports deploy/retrieve but not source tracking | -| SearchOrgWideObjectConfig | ⚠️ | Supports deploy/retrieve but not source tracking | -| SearchSettings | ✅ | | -| SecuritySettings | ✅ | | -| ServiceAISetupDefinition | ✅ | | -| ServiceAISetupField | ✅ | | -| ServiceChannel | ✅ | | -| ServiceCloudVoiceSettings | ✅ | | -| ServicePresenceStatus | ✅ | | -| ServiceProcess | ✅ | | -| ServiceSetupAssistantSettings | ✅ | | -| SharingCriteriaRule | ✅ | | -| SharingGuestRule | ✅ | | -| SharingOwnerRule | ✅ | | -| SharingReason | ✅ | | -| SharingRules | ⚠️ | Supports deploy/retrieve but not source tracking | -| SharingSet | ✅ | | -| SharingSettings | ✅ | | -| SharingTerritoryRule | ✅ | | -| SiteDotCom | ✅ | | -| SiteSettings | ✅ | | -| Skill | ✅ | | -| SkillType | ✅ | | -| SlackApp | ✅ | | -| SocialCustomerServiceSettings | ✅ | | -| SourceTrackingSettings | ✅ | | -| StandardValue | ❌ | Not supported, but support could be added | -| StandardValueSet | ✅ | | -| StandardValueSetTranslation | ✅ | | -| StaticResource | ✅ | | -| StnryAssetEnvSrcCnfg | ✅ | | -| StreamingAppDataConnector | ✅ | | -| SubscriptionManagementSettings | ✅ | | -| SurveySettings | ✅ | | -| SustainabilityUom | ✅ | | -| SustnUomConversion | ✅ | | -| SvcCatalogCategory | ✅ | | -| SvcCatalogFilterCriteria | ✅ | | -| SvcCatalogFulfillmentFlow | ✅ | | -| SvcCatalogItemDef | ✅ | | -| SynonymDictionary | ✅ | | -| SystemNotificationSettings | ✅ | | -| Territory | ✅ | | -| Territory2 | ✅ | | -| Territory2Model | ✅ | | -| Territory2Rule | ✅ | | -| Territory2Settings | ✅ | | -| Territory2Type | ✅ | | -| TimeSheetTemplate | ✅ | | -| TimelineObjectDefinition | ✅ | | -| TopicsForObjects | ✅ | | -| TrailheadSettings | ✅ | | -| TransactionSecurityPolicy | ✅ | | -| Translations | ✅ | | -| TrialOrgSettings | ✅ | | -| UIObjectRelationConfig | ✅ | | -| UiPlugin | ✅ | | -| UserAccessPolicy | ✅ | | -| UserAuthCertificate | ✅ | | -| UserCriteria | ✅ | | -| UserEngagementSettings | ✅ | | -| UserInterfaceSettings | ✅ | | -| UserManagementSettings | ✅ | | -| UserProfileSearchScope | ✅ | | -| UserProvisioningConfig | ✅ | | -| ValidationRule | ✅ | | -| VehicleAssetEmssnSrcCnfg | ✅ | | -| ViewDefinition | ✅ | | -| VirtualVisitConfig | ✅ | | -| VoiceSettings | ✅ | | -| WarrantyLifecycleMgmtSettings | ✅ | | -| WaveAnalyticAssetCollection | ✅ | | -| WaveApplication | ✅ | | -| WaveComponent | ✅ | | -| WaveDashboard | ✅ | | -| WaveDataflow | ✅ | | -| WaveDataset | ✅ | | -| WaveLens | ✅ | | -| WaveRecipe | ✅ | | -| WaveTemplateBundle | ✅ | | -| WaveXmd | ✅ | | -| Web3Settings | ✅ | | -| WebLink | ✅ | | -| WebStoreBundle | ✅ | | -| WebStoreTemplate | ✅ | | -| WebToXSettings | ✅ | | -| WorkDotComSettings | ✅ | | -| WorkSkillRouting | ✅ | | -| Workflow | ✅ | | -| WorkflowAlert | ✅ | | -| WorkflowFieldUpdate | ✅ | | -| WorkflowFlowAction | ❌ | Not supported, but support could be added | -| WorkflowKnowledgePublish | ✅ | | -| WorkflowOutboundMessage | ✅ | | -| WorkflowRule | ✅ | | -| WorkflowSend | ✅ | | -| WorkflowTask | ✅ | | -| WorkforceEngagementSettings | ✅ | | +|Metadata Type|Support|Notes| +|:---|:---|:---| +|AIApplication|✅|| +|AIApplicationConfig|✅|| +|AIReplyRecommendationsSettings|✅|| +|AIScoringModelDefVersion|✅|| +|AIScoringModelDefinition|✅|| +|AIUsecaseDefinition|⚠️|Supports deploy/retrieve but not source tracking| +|AccountForecastSettings|✅|| +|AccountIntelligenceSettings|✅|| +|AccountRelationshipShareRule|✅|| +|AccountSettings|✅|| +|AccountingFieldMapping|✅|| +|AccountingModelConfig|✅|| +|AccountingSettings|✅|| +|AcctMgrTargetSettings|✅|| +|ActionLauncherItemDef|✅|| +|ActionLinkGroupTemplate|✅|| +|ActionPlanTemplate|✅|| +|ActionableEventOrchDef|✅|| +|ActionableEventTypeDef|✅|| +|ActionableListDefinition|✅|| +|ActionsSettings|✅|| +|ActivationPlatform|✅|| +|ActivitiesSettings|✅|| +|ActnblListKeyPrfmIndDef|✅|| +|AddressSettings|✅|| +|AdvAccountForecastSet|✅|| +|AdvAcctForecastDimSource|✅|| +|AdvAcctForecastPeriodGroup|✅|| +|AffinityScoreDefinition|✅|| +|Ai4mSettings|✅|| +|AnalyticSnapshot|✅|| +|AnalyticsSettings|✅|| +|AnimationRule|✅|| +|ApexClass|✅|| +|ApexComponent|✅|| +|ApexEmailNotifications|✅|| +|ApexPage|✅|| +|ApexSettings|✅|| +|ApexTestSuite|✅|| +|ApexTrigger|✅|| +|AppAnalyticsSettings|✅|| +|AppExperienceSettings|✅|| +|AppMenu|✅|| +|ApplicationRecordTypeConfig|✅|| +|ApplicationSubtypeDefinition|✅|| +|AppointmentAssignmentPolicy|✅|| +|AppointmentSchedulingPolicy|✅|| +|ApprovalProcess|✅|| +|AssessmentConfiguration|✅|| +|AssessmentQuestion|✅|| +|AssessmentQuestionSet|✅|| +|AssignmentRules|✅|| +|AssistantContextItem|✅|| +|AssistantDefinition|✅|| +|AssistantSkillQuickAction|✅|| +|AssistantSkillSobjectAction|✅|| +|AssistantVersion|✅|| +|AssociationEngineSettings|✅|| +|Audience|✅|| +|AuraDefinitionBundle|✅|| +|AuthProvider|✅|| +|AutoResponseRules|✅|| +|AutomatedContactsSettings|✅|| +|BatchCalcJobDefinition|✅|| +|BatchProcessJobDefinition|✅|| +|BenefitAction|✅|| +|BlacklistedConsumer|✅|| +|BldgEnrgyIntensityCnfg|✅|| +|BlockchainSettings|✅|| +|Bot|✅|| +|BotBlock|✅|| +|BotBlockVersion|❌|Not supported, but support could be added| +|BotSettings|✅|| +|BotTemplate|✅|| +|BotVersion|✅|| +|BranchManagementSettings|✅|| +|BrandingSet|✅|| +|BriefcaseDefinition|✅|| +|BusinessHoursSettings|✅|| +|BusinessProcess|✅|| +|BusinessProcessGroup|✅|| +|BusinessProcessTypeDefinition|✅|| +|CMSConnectSource|✅|| +|CallCenter|✅|| +|CallCenterRoutingMap|✅|| +|CallCoachingMediaProvider|⚠️|Supports deploy/retrieve but not source tracking| +|CampaignInfluenceModel|✅|| +|CampaignSettings|✅|| +|CanvasMetadata|✅|| +|CareBenefitVerifySettings|✅|| +|CareLimitType|✅|| +|CareProviderAfflRoleConfig|✅|| +|CareProviderSearchConfig|✅|| +|CareRequestConfiguration|✅|| +|CareSystemFieldMapping|✅|| +|CaseSettings|✅|| +|CaseSubjectParticle|✅|| +|Certificate|✅|| +|ChannelLayout|✅|| +|ChannelObjectLinkingRule|✅|| +|ChatterAnswersSettings|✅|| +|ChatterEmailsMDSettings|✅|| +|ChatterExtension|✅|| +|ChatterSettings|✅|| +|ClaimFinancialSettings|✅|| +|ClaimMgmtFoundationEnabledSettings|✅|| +|ClauseCatgConfiguration|✅|| +|CleanDataService|✅|| +|CodeBuilderSettings|✅|| +|CollectionsDashboardSettings|✅|| +|CommandAction|✅|| +|CommerceSettings|✅|| +|CommsServiceConsoleSettings|✅|| +|CommunitiesSettings|✅|| +|Community|✅|| +|CommunityTemplateDefinition|✅|| +|CommunityThemeDefinition|✅|| +|CompactLayout|✅|| +|CompanySettings|✅|| +|ConnectedApp|✅|| +|ConnectedAppSettings|✅|| +|ContentAsset|✅|| +|ContentSettings|✅|| +|ContextDefinition|⚠️|Supports deploy/retrieve but not source tracking| +|ContextUseCaseMapping|✅|| +|ContractSettings|✅|| +|ContractType|✅|| +|ConversationChannelDefinition|✅|| +|ConversationServiceIntegrationSettings|✅|| +|ConversationVendorInfo|✅|| +|ConversationalIntelligenceSettings|✅|| +|CorsWhitelistOrigin|✅|| +|CspTrustedSite|✅|| +|CurrencySettings|✅|| +|CustomAddressFieldSettings|✅|| +|CustomApplication|✅|| +|CustomApplicationComponent|✅|| +|CustomFeedFilter|✅|| +|CustomField|✅|| +|CustomHelpMenuSection|✅|| +|CustomIndex|✅|| +|CustomLabels|✅|| +|CustomMetadata|✅|| +|CustomNotificationType|✅|| +|CustomObject|✅|| +|CustomObjectTranslation|✅|| +|CustomPageWebLink|✅|| +|CustomPermission|✅|| +|CustomSite|✅|| +|CustomTab|✅|| +|CustomValue|❌|Not supported, but support could be added| +|CustomerDataPlatformSettings|✅|| +|CustomizablePropensityScoringSettings|✅|| +|Dashboard|✅|| +|DashboardFolder|✅|| +|DataCalcInsightTemplate|✅|| +|DataCategoryGroup|✅|| +|DataConnectionParamTmpl|❌|Not supported, but support could be added| +|DataConnectorIngestApi|✅|| +|DataConnectorS3|✅|| +|DataDotComSettings|✅|| +|DataImportManagementSettings|✅|| +|DataKitObjectDependency|✅|| +|DataKitObjectTemplate|✅|| +|DataPackageKitDefinition|✅|| +|DataPackageKitObject|✅|| +|DataSource|✅|| +|DataSourceBundleDefinition|✅|| +|DataSourceObject|✅|| +|DataSourceTenant|✅|| +|DataSrcDataModelFieldMap|✅|| +|DataStreamDefinition|✅|| +|DataStreamTemplate|✅|| +|DataWeaveResource|✅|| +|DecisionMatrixDefinition|✅|| +|DecisionMatrixDefinitionVersion|✅|| +|DecisionTable|✅|| +|DecisionTableDatasetLink|✅|| +|DelegateGroup|✅|| +|DeploymentSettings|✅|| +|DevHubSettings|✅|| +|DigitalExperience|✅|| +|DigitalExperienceBundle|✅|| +|DigitalExperienceConfig|✅|| +|DisclosureDefinition|✅|| +|DisclosureDefinitionVersion|✅|| +|DisclosureType|✅|| +|DiscoveryAIModel|✅|| +|DiscoveryGoal|✅|| +|DiscoverySettings|✅|| +|DiscoveryStory|✅|| +|Document|✅|| +|DocumentCategory|✅|| +|DocumentCategoryDocumentType|✅|| +|DocumentChecklistSettings|✅|| +|DocumentFolder|✅|| +|DocumentGenerationSetting|✅|| +|DocumentTemplate|⚠️|Supports deploy/retrieve but not source tracking| +|DocumentType|✅|| +|DuplicateRule|✅|| +|DynamicFormsSettings|✅|| +|DynamicFulfillmentOrchestratorSettings|✅|| +|EACSettings|✅|| +|ESignatureConfig|✅|| +|ESignatureEnvelopeConfig|✅|| +|EclairGeoData|✅|| +|EinsteinAISettings|✅|| +|EinsteinAgentSettings|✅|| +|EinsteinAssistantSettings|✅|| +|EinsteinCopilotSettings|✅|| +|EinsteinDealInsightsSettings|✅|| +|EinsteinDocumentCaptureSettings|✅|| +|EinsteinGptSettings|✅|| +|EmailAdministrationSettings|✅|| +|EmailFolder|✅|| +|EmailIntegrationSettings|✅|| +|EmailServicesFunction|✅|| +|EmailTemplate|✅|| +|EmailTemplateFolder|✅|| +|EmailTemplateSettings|✅|| +|EmbeddedServiceBranding|✅|| +|EmbeddedServiceConfig|✅|| +|EmbeddedServiceFlowConfig|✅|| +|EmbeddedServiceLiveAgent|✅|| +|EmbeddedServiceMenuSettings|✅|| +|EmployeeDataSyncProfile|✅|| +|EmployeeFieldAccessSettings|✅|| +|EmployeeUserSettings|✅|| +|EnablementMeasureDefinition|⚠️|Supports deploy/retrieve but not source tracking| +|EnablementProgramDefinition|⚠️|Supports deploy/retrieve but not source tracking| +|EnhancedNotesSettings|✅|| +|EntitlementProcess|✅|| +|EntitlementSettings|✅|| +|EntitlementTemplate|✅|| +|EscalationRules|✅|| +|EssentialsSettings|✅|| +|EventLogObjectSettings|✅|| +|EventSettings|✅|| +|ExperienceBundle|✅|| +|ExperienceBundleSettings|✅|| +|ExperiencePropertyTypeBundle|✅|| +|ExplainabilityActionDefinition|✅|| +|ExplainabilityActionVersion|✅|| +|ExplainabilityMsgTemplate|✅|| +|ExpressionSetDefinition|✅|| +|ExpressionSetDefinitionVersion|✅|| +|ExpressionSetObjectAlias|✅|| +|ExtDataTranFieldTemplate|❌|Not supported, but support could be added| +|ExtDataTranObjectTemplate|✅|| +|ExternalAIModel|✅|| +|ExternalAuthIdentityProvider|✅|| +|ExternalClientAppSettings|✅|| +|ExternalClientApplication|✅|| +|ExternalCredential|✅|| +|ExternalDataConnector|✅|| +|ExternalDataSource|✅|| +|ExternalDataSrcDescriptor|❌|Not supported, but support could be added| +|ExternalDataTranField|❌|Not supported, but support could be added| +|ExternalDataTranObject|✅|| +|ExternalDocStorageConfig|✅|| +|ExternalServiceRegistration|✅|| +|ExtlClntAppConfigurablePolicies|✅|| +|ExtlClntAppGlobalOauthSettings|✅|| +|ExtlClntAppMobileConfigurablePolicies|✅|| +|ExtlClntAppMobileSettings|✅|| +|ExtlClntAppNotificationSettings|✅|| +|ExtlClntAppOauthConfigurablePolicies|✅|| +|ExtlClntAppOauthSettings|✅|| +|FeatureParameterBoolean|✅|| +|FeatureParameterDate|✅|| +|FeatureParameterInteger|✅|| +|FieldRestrictionRule|✅|| +|FieldServiceMobileExtension|✅|| +|FieldServiceSettings|✅|| +|FieldSet|✅|| +|FieldSrcTrgtRelationship|✅|| +|FileUploadAndDownloadSecuritySettings|✅|| +|FilesConnectSettings|✅|| +|FlexiPage|✅|| +|Flow|✅|| +|FlowCategory|✅|| +|FlowDefinition|⚠️|Supports deploy/retrieve but not source tracking| +|FlowSettings|✅|| +|FlowTest|✅|| +|ForecastingFilter|✅|| +|ForecastingFilterCondition|✅|| +|ForecastingGroup|✅|| +|ForecastingObjectListSettings|✅|| +|ForecastingSettings|✅|| +|ForecastingSourceDefinition|✅|| +|ForecastingType|✅|| +|ForecastingTypeSource|✅|| +|FormulaSettings|✅|| +|FuelType|✅|| +|FuelTypeSustnUom|✅|| +|FunctionReference|⚠️|Supports deploy/retrieve but not source tracking| +|FundraisingConfig|✅|| +|GatewayProviderPaymentMethodType|✅|| +|GenAiFunction|✅|| +|GenAiPlanner|✅|| +|GenAiPlugin|✅|| +|GenAiPluginInstructionDef|❌|Not supported, but support could be added| +|GlobalValueSet|✅|| +|GlobalValueSetTranslation|✅|| +|GoogleAppsSettings|✅|| +|Group|✅|| +|HighVelocitySalesSettings|✅|| +|HomePageComponent|✅|| +|HomePageLayout|✅|| +|IPAddressRange|✅|| +|Icon|✅|| +|IdeasSettings|✅|| +|IdentityProviderSettings|✅|| +|IdentityVerificationProcDef|✅|| +|IframeWhiteListUrlSettings|✅|| +|InboundCertificate|✅|| +|InboundNetworkConnection|✅|| +|IncidentMgmtSettings|✅|| +|IncludeEstTaxInQuoteCPQSettings|✅|| +|IncludeEstTaxInQuoteSettings|✅|| +|Index|⚠️|Supports deploy/retrieve but not source tracking| +|IndustriesAutomotiveSettings|✅|| +|IndustriesContextSettings|✅|| +|IndustriesEinsteinFeatureSettings|✅|| +|IndustriesEventOrchSettings|✅|| +|IndustriesFieldServiceSettings|✅|| +|IndustriesGamificationSettings|✅|| +|IndustriesLoyaltySettings|✅|| +|IndustriesManufacturingSettings|✅|| +|IndustriesPricingSettings|✅|| +|IndustriesSettings|✅|| +|IndustriesUnifiedPromotionsSettings|✅|| +|InstalledPackage|⚠️|Supports deploy/retrieve but not source tracking| +|IntegrationProviderDef|✅|| +|InterestTaggingSettings|✅|| +|InternalDataConnector|✅|| +|InvLatePymntRiskCalcSettings|✅|| +|InventorySettings|✅|| +|InvocableActionSettings|✅|| +|IoTSettings|✅|| +|KeywordList|✅|| +|KnowledgeGenerationSettings|✅|| +|KnowledgeSettings|✅|| +|LanguageSettings|✅|| +|LargeQuotesandOrdersForRlmSettings|✅|| +|Layout|✅|| +|LeadConfigSettings|✅|| +|LeadConvertSettings|✅|| +|LearningAchievementConfig|✅|| +|Letterhead|✅|| +|LicensingSettings|✅|| +|LightningBolt|✅|| +|LightningComponentBundle|✅|| +|LightningExperienceSettings|✅|| +|LightningExperienceTheme|✅|| +|LightningMessageChannel|✅|| +|LightningOnboardingConfig|✅|| +|ListView|✅|| +|LiveAgentSettings|✅|| +|LiveChatAgentConfig|✅|| +|LiveChatButton|✅|| +|LiveChatDeployment|✅|| +|LiveChatSensitiveDataRule|✅|| +|LiveMessageSettings|✅|| +|LocationUse|✅|| +|LoyaltyProgramSetup|⚠️|Supports deploy/retrieve but not source tracking| +|MacroSettings|✅|| +|MailMergeSettings|✅|| +|ManagedContentType|⚠️|Supports deploy/retrieve but not source tracking| +|ManagedEventSubscription|✅|| +|ManagedTopics|✅|| +|MapsAndLocationSettings|✅|| +|MarketSegmentDefinition|✅|| +|MarketingAppExtActivity|❌|Not supported, but support could be added| +|MarketingAppExtension|✅|| +|MatchingRules|✅|| +|MediaAdSalesSettings|✅|| +|MeetingsSettings|✅|| +|MessagingChannel|⚠️|Supports deploy/retrieve but not source tracking| +|MfgProgramTemplate|✅|| +|MfgServiceConsoleSettings|✅|| +|MilestoneType|✅|| +|MktCalcInsightObjectDef|✅|| +|MktDataConnection|✅|| +|MktDataConnectionCred|❌|Not supported, but support could be added| +|MktDataConnectionParam|❌|Not supported, but support could be added| +|MktDataConnectionSrcParam|✅|| +|MktDataTranObject|✅|| +|MlDomain|✅|| +|MobSecurityCertPinConfig|✅|| +|MobileApplicationDetail|✅|| +|MobileSecurityAssignment|✅|| +|MobileSecurityPolicy|✅|| +|MobileSettings|✅|| +|ModerationRule|✅|| +|MutingPermissionSet|✅|| +|MyDomainDiscoverableLogin|✅|| +|MyDomainSettings|✅|| +|NameSettings|✅|| +|NamedCredential|✅|| +|NavigationMenu|✅|| +|Network|✅|| +|NetworkBranding|✅|| +|NotificationTypeConfig|✅|| +|NotificationsSettings|✅|| +|OauthCustomScope|✅|| +|OauthOidcSettings|✅|| +|OauthTokenExchangeHandler|✅|| +|ObjectHierarchyRelationship|✅|| +|ObjectLinkingSettings|✅|| +|ObjectSourceTargetMap|✅|| +|OcrSampleDocument|✅|| +|OcrTemplate|✅|| +|OmniChannelPricingSettings|✅|| +|OmniChannelSettings|✅|| +|OmniDataTransform|⚠️|Supports deploy/retrieve but not source tracking| +|OmniExtTrackingDef|⚠️|Supports deploy/retrieve but not source tracking| +|OmniIntegrationProcedure|⚠️|Supports deploy/retrieve but not source tracking| +|OmniInteractionAccessConfig|⚠️|Supports deploy/retrieve but not source tracking| +|OmniInteractionConfig|⚠️|Supports deploy/retrieve but not source tracking| +|OmniScript|⚠️|Supports deploy/retrieve but not source tracking| +|OmniSupervisorConfig|✅|| +|OmniTrackingGroup|⚠️|Supports deploy/retrieve but not source tracking| +|OmniUiCard|⚠️|Supports deploy/retrieve but not source tracking| +|OnlineSalesSettings|✅|| +|OpportunityScoreSettings|✅|| +|OpportunitySettings|✅|| +|OrderManagementSettings|✅|| +|OrderSettings|✅|| +|OrgSettings|✅|| +|OutboundNetworkConnection|✅|| +|PardotEinsteinSettings|✅|| +|PardotSettings|✅|| +|ParticipantRole|✅|| +|PartyDataModelSettings|✅|| +|PathAssistant|✅|| +|PathAssistantSettings|✅|| +|PaymentGatewayProvider|✅|| +|PaymentsManagementEnabledSettings|✅|| +|PaymentsSettings|✅|| +|PermissionSet|✅|| +|PermissionSetGroup|✅|| +|PermissionSetLicenseDefinition|✅|| +|PersonAccountOwnerPowerUser|✅|| +|PicklistSettings|✅|| +|PicklistValue|❌|Not supported, but support could be added| +|PipelineInspMetricConfig|✅|| +|PlatformCachePartition|✅|| +|PlatformEventChannel|✅|| +|PlatformEventChannelMember|✅|| +|PlatformEventSettings|✅|| +|PlatformEventSubscriberConfig|✅|| +|PlatformSlackSettings|✅|| +|PortalDelegablePermissionSet|✅|| +|PortalsSettings|✅|| +|PostTemplate|✅|| +|PredictionBuilderSettings|✅|| +|PresenceDeclineReason|✅|| +|PresenceUserConfig|✅|| +|PricingActionParameters|⚠️|Supports deploy/retrieve but not source tracking| +|PricingRecipe|✅|| +|PrivacySettings|✅|| +|ProcessFlowMigration|✅|| +|ProductAttrDisplayConfig|✅|| +|ProductAttributeSet|✅|| +|ProductConfiguratorSettings|✅|| +|ProductSettings|✅|| +|ProductSpecificationRecType|✅|| +|ProductSpecificationType|✅|| +|Profile|✅|| +|ProfilePasswordPolicy|✅|| +|ProfileSessionSetting|✅|| +|Prompt|✅|| +|Queue|✅|| +|QueueRoutingConfig|✅|| +|QuickAction|✅|| +|QuickTextSettings|✅|| +|QuoteSettings|✅|| +|RealTimeEventSettings|✅|| +|RecAlrtDataSrcExpSetDef|✅|| +|RecommendationBuilderSettings|✅|| +|RecommendationStrategy|✅|| +|RecordActionDeployment|✅|| +|RecordAggregationDefinition|✅|| +|RecordAlertCategory|✅|| +|RecordAlertDataSource|✅|| +|RecordAlertTemplate|✅|| +|RecordPageSettings|✅|| +|RecordType|✅|| +|RedirectWhitelistUrl|✅|| +|ReferencedDashboard|✅|| +|ReferralMarketingSettings|✅|| +|RegisteredExternalService|✅|| +|RelatedRecordAssocCriteria|✅|| +|RelationshipGraphDefinition|✅|| +|RemoteSiteSetting|✅|| +|Report|✅|| +|ReportFolder|✅|| +|ReportType|✅|| +|RestrictionRule|✅|| +|RetailExecutionSettings|✅|| +|RetrievalSummaryDefinition|✅|| +|RevenueManagementSettings|✅|| +|Role|✅|| +|SalesAgreementSettings|✅|| +|SalesWorkQueueSettings|✅|| +|SamlSsoConfig|✅|| +|SandboxSettings|✅|| +|SceGlobalModelOptOutSettings|✅|| +|SchedulingObjective|✅|| +|SchedulingRule|✅|| +|SchemaSettings|✅|| +|ScoreCategory|✅|| +|SearchCustomization|⚠️|Supports deploy/retrieve but not source tracking| +|SearchOrgWideObjectConfig|⚠️|Supports deploy/retrieve but not source tracking| +|SearchSettings|✅|| +|SecuritySettings|✅|| +|ServiceAISetupDefinition|✅|| +|ServiceAISetupField|✅|| +|ServiceChannel|✅|| +|ServiceCloudVoiceSettings|✅|| +|ServicePresenceStatus|✅|| +|ServiceProcess|✅|| +|ServiceSetupAssistantSettings|✅|| +|SharingCriteriaRule|✅|| +|SharingGuestRule|✅|| +|SharingOwnerRule|✅|| +|SharingReason|✅|| +|SharingRules|⚠️|Supports deploy/retrieve but not source tracking| +|SharingSet|✅|| +|SharingSettings|✅|| +|SharingTerritoryRule|✅|| +|SiteDotCom|✅|| +|SiteSettings|✅|| +|Skill|✅|| +|SkillType|✅|| +|SlackApp|✅|| +|SocialCustomerServiceSettings|✅|| +|SourceTrackingSettings|✅|| +|StandardValue|❌|Not supported, but support could be added| +|StandardValueSet|✅|| +|StandardValueSetTranslation|✅|| +|StaticResource|✅|| +|StnryAssetEnvSrcCnfg|✅|| +|StreamingAppDataConnector|✅|| +|SubscriptionManagementSettings|✅|| +|SurveySettings|✅|| +|SustainabilityUom|✅|| +|SustnUomConversion|✅|| +|SvcCatalogCategory|✅|| +|SvcCatalogFilterCriteria|✅|| +|SvcCatalogFulfillmentFlow|✅|| +|SvcCatalogItemDef|✅|| +|SynonymDictionary|✅|| +|SystemNotificationSettings|✅|| +|Territory|✅|| +|Territory2|✅|| +|Territory2Model|✅|| +|Territory2Rule|✅|| +|Territory2Settings|✅|| +|Territory2Type|✅|| +|TimeSheetTemplate|✅|| +|TimelineObjectDefinition|✅|| +|TopicsForObjects|✅|| +|TrailheadSettings|✅|| +|TransactionSecurityPolicy|✅|| +|Translations|✅|| +|TrialOrgSettings|✅|| +|UIObjectRelationConfig|✅|| +|UiPlugin|✅|| +|UserAccessPolicy|✅|| +|UserAuthCertificate|✅|| +|UserCriteria|✅|| +|UserEngagementSettings|✅|| +|UserInterfaceSettings|✅|| +|UserManagementSettings|✅|| +|UserProfileSearchScope|✅|| +|UserProvisioningConfig|✅|| +|ValidationRule|✅|| +|VehicleAssetEmssnSrcCnfg|✅|| +|ViewDefinition|✅|| +|VirtualVisitConfig|✅|| +|VoiceSettings|✅|| +|WarrantyLifecycleMgmtSettings|✅|| +|WaveAnalyticAssetCollection|✅|| +|WaveApplication|✅|| +|WaveComponent|✅|| +|WaveDashboard|✅|| +|WaveDataflow|✅|| +|WaveDataset|✅|| +|WaveLens|✅|| +|WaveRecipe|✅|| +|WaveTemplateBundle|✅|| +|WaveXmd|✅|| +|Web3Settings|✅|| +|WebLink|✅|| +|WebStoreBundle|✅|| +|WebStoreTemplate|✅|| +|WebToXSettings|✅|| +|WorkDotComSettings|✅|| +|WorkSkillRouting|✅|| +|Workflow|✅|| +|WorkflowAlert|✅|| +|WorkflowFieldUpdate|✅|| +|WorkflowFlowAction|❌|Not supported, but support could be added| +|WorkflowKnowledgePublish|✅|| +|WorkflowOutboundMessage|✅|| +|WorkflowRule|✅|| +|WorkflowSend|✅|| +|WorkflowTask|✅|| +|WorkforceEngagementSettings|✅|| + + ## Next Release (v62) -v62 introduces the following new types. Here's their current level of support +v62 introduces the following new types. Here's their current level of support -| Metadata Type | Support | Notes | -| :---------------------------------- | :------ | :--------------------------------------------------------------- | -| AccountPlanSettings | ✅ | | -| BillingSettings | ✅ | | -| ChannelRevMgmtSettings | ✅ | | -| ChoiceList | ❌ | Not supported, but support could be added (but not for tracking) | -| ConvIntelligenceSignalRule | ❌ | Not supported, but support could be added | -| ConversationMessageDefinition | ✅ | | -| EnblProgramTaskSubCategory | ✅ | | -| ExtlClntAppPushConfigurablePolicies | ❌ | Not supported, but support could be added (but not for tracking) | -| ExtlClntAppPushSettings | ✅ | | -| HerokuIntegrationSettings | ✅ | | -| IndustriesRatingSettings | ✅ | | -| IndustriesUsageSettings | ✅ | | -| LearningItemType | ✅ | | -| ProductDiscoverySettings | ✅ | | -| PublicKeyCertificate | ❌ | Not supported, but support could be added (but not for tracking) | -| PublicKeyCertificateSet | ❌ | Not supported, but support could be added (but not for tracking) | -| StageDefinition | ✅ | | -| UiFormatSpecificationSet | ✅ | | -| WorkflowFlowAutomation | ❌ | Not supported, but support could be added | +|Metadata Type|Support|Notes| +|:---|:---|:---| +|AccountPlanSettings|✅|| +|BillingSettings|✅|| +|ChannelRevMgmtSettings|✅|| +|ChoiceList|❌|Not supported, but support could be added (but not for tracking)| +|ConvIntelligenceSignalRule|❌|Not supported, but support could be added| +|ConversationMessageDefinition|✅|| +|EnblProgramTaskSubCategory|✅|| +|EvfSettings|✅|| +|ExtlClntAppPushConfigurablePolicies|❌|Not supported, but support could be added (but not for tracking)| +|ExtlClntAppPushSettings|✅|| +|HerokuIntegrationSettings|✅|| +|IndustriesRatingSettings|✅|| +|IndustriesUsageSettings|✅|| +|LearningItemType|✅|| +|ProductDiscoverySettings|✅|| +|PublicKeyCertificate|❌|Not supported, but support could be added (but not for tracking)| +|PublicKeyCertificateSet|❌|Not supported, but support could be added (but not for tracking)| +|StageDefinition|✅|| +|UiFormatSpecificationSet|✅|| +|WorkflowFlowAutomation|❌|Not supported, but support could be added| ## Additional Types -> The following types are supported by this library but not in the coverage reports for either version. These are typically +> The following types are supported by this library but not in the coverage reports for either version. These are typically > > 1. types that have been removed from the metadata API but were supported in previous versions > 1. types that are available for pilots but not officially part of the metadata API (use with caution) diff --git a/package.json b/package.json index 1b76f00d2a..a9cff46205 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "got": "^11.8.6", "graceful-fs": "^4.2.11", "ignore": "^5.3.2", + "isbinaryfile": "^5.0.2", "jszip": "^3.10.1", "mime": "2.6.0", "minimatch": "^9.0.5", diff --git a/src/convert/replacements.ts b/src/convert/replacements.ts index cba3f2e23e..e583b32419 100644 --- a/src/convert/replacements.ts +++ b/src/convert/replacements.ts @@ -6,11 +6,12 @@ */ import { readFile } from 'node:fs/promises'; import { Transform, Readable } from 'node:stream'; -import { sep, posix, join, isAbsolute } from 'node:path'; +import { sep, posix, join, isAbsolute, extname } from 'node:path'; import { Lifecycle, Messages, SfError, SfProject } from '@salesforce/core'; import { minimatch } from 'minimatch'; import { Env } from '@salesforce/kit'; import { ensureString, isString } from '@salesforce/ts-types'; +import { isBinaryFileSync } from 'isbinaryfile'; import { SourcePath } from '../common/types'; import { SourceComponent } from '../resolve/sourceComponent'; import { MarkedReplacement, ReplacementConfig, ReplacementEvent } from './types'; @@ -20,14 +21,20 @@ const messages = Messages.loadMessages('@salesforce/source-deploy-retrieve', 'sd const fileContentsCache = new Map(); +// First do a quick check for common text extensions +// If that fails, confirm that it is not a binary file +const textExtensions = new Set(['.cls', '.xml', '.json', '.js', '.css', '.html', '.htm', '.txt', '.md']); +const isTextFile = (path: string): boolean => textExtensions.has(extname(path)) || !isBinaryFileSync(path); + /** If a component has replacements, you get it piped through the replacementStream * Otherwise, you'll get the original readable stream + * Ignore binary files, they will get corrupted in the replacement process */ export const getReplacementStreamForReadable = ( component: SourceComponent, path: SourcePath ): Readable | ReplacementStream => - component.replacements?.[path] + component.replacements?.[path] && isTextFile(path) ? component.tree.stream(path).pipe(new ReplacementStream(component.replacements?.[path])) : component.tree.stream(path); diff --git a/test/collections/componentSet.test.ts b/test/collections/componentSet.test.ts index 0190af5541..9030c8408c 100644 --- a/test/collections/componentSet.test.ts +++ b/test/collections/componentSet.test.ts @@ -92,7 +92,7 @@ describe('ComponentSet', () => { { members: ['replaceStuff'], name: 'ApexClass' }, { members: ['TestObj__c.FieldA__c'], name: 'CustomField' }, { members: ['TestObj__c'], name: 'CustomObject' }, - { members: ['Test'], name: 'StaticResource' }, + { members: ['ImageTest', 'Test'], name: 'StaticResource' }, ], version, }); diff --git a/test/nuts/local/replacements/replacements.nut.ts b/test/nuts/local/replacements/replacements.nut.ts index bd58563bad..26faf35858 100644 --- a/test/nuts/local/replacements/replacements.nut.ts +++ b/test/nuts/local/replacements/replacements.nut.ts @@ -95,5 +95,29 @@ describe('e2e replacements test', () => { } } }); + it('skips images in static resources to prevent file corruption', async () => { + const srZipPath = path.join(session.project.dir, 'unzipped', 'staticresources', 'ImageTest.resource'); + expect(fs.existsSync(srZipPath)).to.be.true; + const srZip = await JSZip.loadAsync(fs.readFileSync(srZipPath)); + + // static resource zip should have 2 files: + // 1. test-image.png, 2. test-image.resource-meta.xml + expect(Object.entries(srZip.files).length).to.equal(2); + + const imageMeta = srZip.file('test-image.resource-meta.xml'); + if (imageMeta && !imageMeta.dir) { + const content = await imageMeta.async('nodebuffer'); + const imageMetaAsString = content.toString(); + expect(imageMetaAsString).to.not.include('placeholder'); + expect(imageMetaAsString).to.include('foo'); + } + + const image = srZip.file('test-image.png'); + if (image && !image.dir) { + const content = await image.async('nodebuffer'); + // The file size would be much larger if it was corrupted via the string replacement method + expect(content.byteLength).to.equal(1562121); + } + }); }); }); diff --git a/test/nuts/local/replacements/testProj/force-app/main/default/staticresources/ImageTest.resource-meta.xml b/test/nuts/local/replacements/testProj/force-app/main/default/staticresources/ImageTest.resource-meta.xml new file mode 100644 index 0000000000..1e72ff0a9b --- /dev/null +++ b/test/nuts/local/replacements/testProj/force-app/main/default/staticresources/ImageTest.resource-meta.xml @@ -0,0 +1,7 @@ + + + Private + application/zip + added from sfdx plugin + ImageTest + \ No newline at end of file diff --git a/test/nuts/local/replacements/testProj/force-app/main/default/staticresources/ImageTest/test-image.png b/test/nuts/local/replacements/testProj/force-app/main/default/staticresources/ImageTest/test-image.png new file mode 100644 index 0000000000..61f1e126b5 Binary files /dev/null and b/test/nuts/local/replacements/testProj/force-app/main/default/staticresources/ImageTest/test-image.png differ diff --git a/test/nuts/local/replacements/testProj/force-app/main/default/staticresources/ImageTest/test-image.resource-meta.xml b/test/nuts/local/replacements/testProj/force-app/main/default/staticresources/ImageTest/test-image.resource-meta.xml new file mode 100644 index 0000000000..a8dd419d4b --- /dev/null +++ b/test/nuts/local/replacements/testProj/force-app/main/default/staticresources/ImageTest/test-image.resource-meta.xml @@ -0,0 +1,6 @@ + + + Private + image/png + Test placeholder + diff --git a/test/nuts/local/replacements/testProj/sfdx-project.json b/test/nuts/local/replacements/testProj/sfdx-project.json index 469a60cbf0..2877e8ed99 100644 --- a/test/nuts/local/replacements/testProj/sfdx-project.json +++ b/test/nuts/local/replacements/testProj/sfdx-project.json @@ -59,6 +59,11 @@ "glob": "**/*.css", "replaceWithEnv": "THE_REPLACEMENT", "stringToReplace": "placeholder" + }, + { + "glob": "force-app/main/default/staticresources/ImageTest/**/**", + "replaceWithEnv": "THE_REPLACEMENT", + "stringToReplace": "placeholder" } ], "sfdcLoginUrl": "https://login.salesforce.com", diff --git a/yarn.lock b/yarn.lock index cc5ec1e06d..9583daef92 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3233,6 +3233,11 @@ isarray@~1.0.0: resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== +isbinaryfile@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-5.0.2.tgz#fe6e4dfe2e34e947ffa240c113444876ba393ae0" + integrity sha512-GvcjojwonMjWbTkfMpnVHVqXW/wKMYDfEpY94/8zy8HFMOqb/VL6oeONq9v87q4ttVlaTLnGXnJD4B5B1OTGIg== + isexe@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" @@ -5066,16 +5071,7 @@ srcset@^5.0.0: resolved "https://registry.yarnpkg.com/srcset/-/srcset-5.0.0.tgz#9df6c3961b5b44a02532ce6ae4544832609e2e3f" integrity sha512-SqEZaAEhe0A6ETEa9O1IhSPC7MdvehZtCnTR0AftXk3QhY2UNgb+NApFOUPZILXk/YTDfFxMTNJOBpzrJsEdIA== -"string-width-cjs@npm:string-width@^4.2.0": - version "4.2.3" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" - integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== - dependencies: - emoji-regex "^8.0.0" - is-fullwidth-code-point "^3.0.0" - strip-ansi "^6.0.1" - -string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -5134,14 +5130,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1": - version "6.0.1" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" - integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== - dependencies: - ansi-regex "^5.0.1" - -strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@6.0.1, strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -5631,7 +5620,7 @@ workerpool@^6.5.1: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== @@ -5649,15 +5638,6 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" -wrap-ansi@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" - integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^8.1.0: version "8.1.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"