sfpowerkit icon indicating copy to clipboard operation
sfpowerkit copied to clipboard

source:profile:retrieve fails when pulling a Profile with Single Quotes in the Name

Open Domitius opened this issue 2 years ago • 1 comments

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.

Domitius avatar Aug 31 '22 16:08 Domitius

Hey @Domitius I have encountered the same previously. Let me see how we can better handle this

Caitlyn-Mills avatar Sep 05 '22 23:09 Caitlyn-Mills