sfpowerkit
sfpowerkit copied to clipboard
source:profile:retrieve fails when pulling a Profile with Single Quotes in the Name
My team has profiles that contain single quotes and parentheses, such as Custom Profile (A'M Team)
.
When I run sfdx sfpowerkit:source:profile:retrieve -n "Custom Profile (A'M Team)" --loglevel=trace
, I receive the error
-------------------------------------------------------------------------------------------
sfpowerkit -- The DX@Scale Developer Toolkit - Version:4.2.13 - Release:May 22
-------------------------------------------------------------------------------------------
Retrieving profiles
Requested profiles are..
Custom Profile (A'M Team)
Source Folders are
Profile Custom Profile (A'M Team) not found in the org
Number of profiles to retrieve 0
No Profiles found to retrieve
State Full Name Type Path
─────── ──────────────────────────────────── ─────── ────
Skipped Custom Profile (A'M Team) Profile
I believe this is because connection.metadata.list
returns an HTML encoded fullName and Custom Profile %28A%27M Team%29 != Custom Profile (A'M Team)
Ref: https://github.com/dxatscale/sfpowerkit/blob/main/src/utils/retrieveMetadata.ts
createdDate: 2019-07-05T21:24:06.000Z
fileName: profiles/Custom Profile %28A%27M Team%29.profile
fullName: Custom Profile %28A%27M Team%29
When I run the command sfdx sfpowerkit:source:profile:retrieve -n "Custom Profile %28A%27M Team%29" --loglevel=trace
, the command fails when it attempts to query profile metadata from the org
Unable to fetch SELECT Name, PermissionsEmailSingle, PermissionsEmailMass, PermissionsEditTask, PermissionsEditEvent, PermissionsExportReport, PermissionsImportPersonal, PermissionsDataExport, PermissionsManageUsers, PermissionsEditPublicFilters, PermissionsEditPublicTemplates, PermissionsModifyAllData, PermissionsEditBillingInfo, PermissionsManageCases, PermissionsMassInlineEdit, PermissionsEditKnowledge, PermissionsManageKnowledge, PermissionsManageSolutions, PermissionsCustomizeApplication, PermissionsEditReadonlyFields, PermissionsRunReports, PermissionsViewSetup, PermissionsTransferAnyEntity, PermissionsNewReportBuilder, PermissionsActivateContract, PermissionsActivateOrder, PermissionsImportLeads, PermissionsManageLeads, PermissionsTransferAnyLead, PermissionsViewAllData, PermissionsEditPublicDocuments, PermissionsViewEncryptedData, PermissionsEditBrandTemplates, PermissionsEditHtmlTemplates, PermissionsChatterInternalUser, PermissionsDeleteActivatedContract, PermissionsChatterInviteExternalUsers, PermissionsSendSitRequests, PermissionsOverrideForecasts, PermissionsViewAllForecasts, PermissionsApiUserOnly, PermissionsManageRemoteAccess, PermissionsCanUseNewDashboardBuilder, PermissionsManageCategories, PermissionsConvertLeads, PermissionsPasswordNeverExpires, PermissionsUseTeamReassignWizards, PermissionsEditActivatedOrders, PermissionsInstallMultiforce, PermissionsPublishMultiforce, PermissionsChatterOwnGroups, PermissionsEditOppLineItemUnitPrice, PermissionsCreateMultiforce, PermissionsBulkApiHardDelete, PermissionsInboundMigrationToolsUser, PermissionsSolutionImport, PermissionsManageCallCenters, PermissionsManageSynonyms, PermissionsOutboundMigrationToolsUser, PermissionsViewContent, PermissionsManageEmailClientConfig, PermissionsEnableNotifications, PermissionsIsSsoEnabled, PermissionsManageDataIntegrations, PermissionsDistributeFromPersWksp, PermissionsViewDataCategories, PermissionsManageDataCategories, PermissionsAuthorApex,
PermissionsManageMobile, PermissionsApiEnabled, PermissionsManageCustomReportTypes, PermissionsEditCaseComments, PermissionsTransferAnyCase, PermissionsContentAdministrator, PermissionsCreateWorkspaces, PermissionsManageContentPermissions, PermissionsManageContentProperties, PermissionsManageContentTypes, PermissionsScheduleJob, PermissionsManageExchangeConfig, PermissionsManageAnalyticSnapshots, PermissionsScheduleReports, PermissionsManageBusinessHourHolidays, PermissionsManageDynamicDashboards, PermissionsCustomSidebarOnAllPages, PermissionsManageInteraction, PermissionsViewMyTeamsDashboards, PermissionsModerateChatter, PermissionsResetPasswords, PermissionsFlowUFLRequired, PermissionsCanInsertFeedSystemFields, PermissionsActivitiesAccess, PermissionsManageKnowledgeImportExport, PermissionsEmailTemplateManagement, PermissionsEmailAdministration, PermissionsManageChatterMessages, PermissionsAllowEmailIC,
PermissionsChatterFileLink, PermissionsForceTwoFactor, PermissionsViewEventLogFiles, PermissionsManageNetworks, PermissionsViewCaseInteraction, PermissionsManageAuthProviders, PermissionsRunFlow, PermissionsManageQuotas, PermissionsCreateCustomizeDashboards, PermissionsCreateDashboardFolders, PermissionsViewPublicDashboards, PermissionsManageDashbdsInPubFolders, PermissionsCreateCustomizeReports, PermissionsCreateReportFolders, PermissionsViewPublicReports, PermissionsManageReportsInPubFolders, PermissionsEditMyDashboards, PermissionsEditMyReports, PermissionsViewAllUsers, PermissionsAllowUniversalSearch, PermissionsConnectOrgToEnvironmentHub, PermissionsCreateCustomizeFilters, PermissionsContentHubUser, PermissionsGovernNetworks, PermissionsSalesConsole, PermissionsTwoFactorApi, PermissionsDeleteTopics, PermissionsEditTopics, PermissionsCreateTopics, PermissionsAssignTopics, PermissionsIdentityEnabled, PermissionsIdentityConnect, PermissionsAllowViewKnowledge, PermissionsChatterEnabledForUser, PermissionsContentWorkspaces, PermissionsCreateWorkBadgeDefinition, PermissionsManageSearchPromotionRules, PermissionsCustomMobileAppsAccess, PermissionsViewHelpLink, PermissionsManageProfilesPermissionsets, PermissionsAssignPermissionSets, PermissionsManageRoles, PermissionsManageIpAddresses, PermissionsManageSharing, PermissionsManageInternalUsers, PermissionsManagePasswordPolicies, PermissionsManageLoginAccessPolicies, PermissionsManageCustomPermissions,
PermissionsCanVerifyComment, PermissionsManageUnlistedGroups, PermissionsStdAutomaticActivityCapture, PermissionsInsightsAppDashboardEditor, PermissionsManageTwoFactor, PermissionsInsightsAppUser, PermissionsInsightsAppAdmin, PermissionsInsightsAppEltEditor, PermissionsInsightsAppUploadUser, PermissionsInsightsCreateApplication, PermissionsDebugApex, PermissionsLightningExperienceUser, PermissionsConfigCustomRecs, PermissionsSubmitMacrosAllowed, PermissionsBulkMacrosAllowed, PermissionsShareInternalArticles, PermissionsManageSessionPermissionSets, PermissionsManageTemplatedApp, PermissionsUseTemplatedApp, PermissionsSendAnnouncementEmails, PermissionsChatterEditOwnPost, PermissionsChatterEditOwnRecordPost, PermissionsSalesAnalyticsUser, PermissionsServiceAnalyticsUser, PermissionsWaveTabularDownload, PermissionsManageSandboxes, PermissionsAutomaticActivityCapture, PermissionsImportCustomObjects, PermissionsDelegatedTwoFactor, PermissionsChatterComposeUiCodesnippet, PermissionsSelectFilesFromSalesforce, PermissionsModerateNetworkUsers, PermissionsMergeTopics, PermissionsSubscribeToLightningReports, PermissionsManagePvtRptsAndDashbds, PermissionsAllowLightningLogin, PermissionsCampaignInfluence2, PermissionsViewDataAssessment, PermissionsRemoveDirectMessageMembers, PermissionsCanApproveFeedPost, PermissionsAddDirectMessageMembers, PermissionsAllowViewEditConvertedLeads, PermissionsSocialInsightsLogoAdmin, PermissionsShowCompanyNameAsUserBadge, PermissionsAccessCMC, PermissionsViewHealthCheck, PermissionsManageHealthCheck, PermissionsPackaging2, PermissionsManageCertificates, PermissionsCreateReportInLightning, PermissionsPreventClassicExperience, PermissionsHideReadByList, PermissionsUseSmartDataDiscovery, PermissionsGetSmartDataDiscovery, PermissionsCreateUpdateSDDDataset, PermissionsCreateUpdateSDDStory, PermissionsManageSmartDataDiscovery, PermissionsShareSmartDataDiscoveryStory, PermissionsManageSmartDataDiscoveryModel, PermissionsListEmailSend, PermissionsFeedPinning, PermissionsChangeDashboardColors, PermissionsManageRecommendationStrategies, PermissionsManagePropositions, PermissionsCloseConversations, PermissionsSubscribeReportRolesGrps, PermissionsSubscribeDashboardRolesGrps, PermissionsUseWebLink, PermissionsHasUnlimitedNBAExecutions, PermissionsViewOnlyEmbeddedAppUser, PermissionsAdoptionAnalyticsUser, PermissionsSendExternalEmailAvailable,
PermissionsViewAllActivities, PermissionsSubscribeReportToOtherUsers, PermissionsLightningConsoleAllowedForUser, PermissionsSubscribeReportsRunAsUser, PermissionsSubscribeToLightningDashboards, PermissionsSubscribeDashboardToOtherUsers, PermissionsCreateLtngTempInPub, PermissionsTransactionalEmailSend, PermissionsViewPrivateStaticResources, PermissionsCreateLtngTempFolder, PermissionsApexRestServices, PermissionsGiveRecognitionBadge, PermissionsCanRunAnalysis, PermissionsUseMySearch, PermissionsLtngPromoReserved01UserPerm, PermissionsManageSubscriptions, PermissionsWaveManagePrivateAssetsUser, PermissionsCanEditDataPrepRecipe, PermissionsAddAnalyticsRemoteConnections, PermissionsManageSurveys, PermissionsUseAssistantDialog, PermissionsUseQuerySuggestions, PermissionsRecordVisibilityAPI, PermissionsViewRoles, PermissionsSmartDataDiscoveryForCommunity, PermissionsCanManageMaps, PermissionsStoryOnDSWithPredicate, PermissionsLMOutboundMessagingUserPerm, PermissionsModifyDataClassification, PermissionsPrivacyDataAccess, PermissionsQueryAllFiles, PermissionsModifyMetadata, PermissionsManageCMS, PermissionsSandboxTestingInCommunityApp, PermissionsCanEditPrompts, PermissionsViewUserPII, PermissionsManageHubConnections, PermissionsB2BMarketingAnalyticsUser, PermissionsTraceXdsQueries, PermissionsViewAllCustomSettings, PermissionsViewAllForeignKeyNames, PermissionsAddWaveNotificationRecipients, PermissionsHeadlessCMSAccess, PermissionsLMEndMessagingSessionUserPerm, PermissionsConsentApiUpdate, PermissionsAccessContentBuilder, PermissionsAccountSwitcherUser, PermissionsManageC360AConnections, PermissionsManageReleaseUpdates, PermissionsViewAllProfiles, PermissionsSkipIdentityConfirmation, PermissionsSendCustomNotifications, PermissionsPackaging2Delete, PermissionsViewRestrictionAndScopingRules, PermissionsFSCComprehensiveUserAccess, PermissionsBotManageBots, PermissionsBotManageBotsTrainingData, PermissionsManageTrustMeasures, PermissionsViewTrustMeasures, PermissionsVideoConferenceZoomUser, PermissionsIsotopeCToCUser, PermissionsHasUnlimitedErbScoringRequests, PermissionsSalesforceMeetingsUserPerm, PermissionsIsotopeAccess, PermissionsIsotopeLEX, PermissionsGetSmartDataDiscoveryExternal, PermissionsQuipMetricsAccess, PermissionsQuipUserEngagementMetrics, PermissionsManageExternalConnections, PermissionsUseSubscriptionEmails, PermissionsAIViewInsightObjects, PermissionsAICreateInsightObjects, PermissionsViewMLModels, PermissionsNativeWebviewScrolling, PermissionsViewDeveloperName, PermissionsBypassMFAForUiLogins, PermissionsClientSecretRotation, PermissionsMultiStepSchedulingUser, PermissionsAccessToServiceProcess, PermissionsManageOrchInstsAndWorkItems, PermissionsVideoConferenceTeamsUser, PermissionsManageScopedAccessGroup, PermissionsConfigureScopedAccessGroup, PermissionsEnableIPFSUpload, PermissionsEnableBCTransactionPolling, PermissionsFSCArcGraphCommunityUser FROM Profile WHERE Name IN ('Custom Profile (A'M Team)')
I believe this is failing due to the unescaped single quote in the profile name FROM Profile WHERE Name IN ('Custom Profile (A'M Team)')
I looked through the source trying to find where the query is generated, and I believe it is in src\impl\metadata\retriever\profileRetriever.ts
line #319
IMHO, it would be nice if we could enter the decoded profile name in the command, like so: sfdx sfpowerkit:source:profile:retrieve -n "Custom Profile (A'M Team)" --loglevel=trace
But, we'll need to at least escape the profile name in the query generation.
Hey @Domitius I have encountered the same previously. Let me see how we can better handle this