SharePoint Online: import search configuration xml using app permissions

%3CLINGO-SUB%20id%3D%22lingo-sub-49773%22%20slang%3D%22en-US%22%3ESharePoint%20Online%3A%20import%20search%20configuration%20xml%20using%20app%20permissions%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-49773%22%20slang%3D%22en-US%22%3E%3CP%3EHi%2C%3C%2FP%3E%3CP%3EI%20have%20a%20console%20application%20connecting%20to%20a%20SharePoint%20Online%20tenant%20using%20app%20permissions%3B%20the%20app%20principal%20has%20full%20control%20permissions%20in%20the%20whole%20tenant.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI'm%20trying%20to%26nbsp%3Bimport%20a%20search%20configuration%20XML%20to%20a%20site%20collection%2C%20but%20when%20I%20do%20I%20get%20the%20following%20error%3A%26nbsp%3B%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%3CEM%3EAn%20unhandled%20exception%20of%20type%20'Microsoft.SharePoint.Client.ServerException'%20occurred%20in%20Microsoft.SharePoint.Client.Runtime.dll%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3EAdditional%20information%3A%20The%20server%20was%20unable%20to%20process%20the%20request%20due%20to%20an%20internal%20error.%20For%20more%20information%20about%20the%20error%2C%20either%20turn%20on%20IncludeExceptionDetailInFaults%20(either%20from%20ServiceBehaviorAttribute%20or%20from%20the%20%3CSERVICEDEBUG%3E%20configuration%20behavior)%20on%20the%20server%20in%20order%20to%20send%20the%20exception%20information%20back%20to%20the%20client%2C%20or%20turn%20on%20tracing%20as%20per%20the%20Microsoft%20.NET%20Framework%20SDK%20documentation%20and%20inspect%20the%20server%20trace%20logs.%3C%2FSERVICEDEBUG%3E%3C%2FEM%3E%3C%2FP%3E%3CP%3E%3CEM%3E%26nbsp%3B%3C%2FEM%3E%3C%2FP%3E%3CP%3EHere's%20my%20code%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3EUri%20siteUrl%20%3D%20new%20Uri(%22https%3A%2F%2F%7Btenant%7D.sharepoint.com%2Fteams%2Ftestsite%22)%3B%3CBR%20%2F%3Evar%20settingsFile%20%3D%20%22SearchConfiguration.xml%22%3B%3CBR%20%2F%3Estring%20realm%20%3D%20TokenHelper.GetRealmFromTargetUrl(siteUrl)%3B%3CBR%20%2F%3Estring%20accessToken%20%3D%20TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal%2C%20siteUrl.Authority%2C%20realm).AccessToken%3B%3CBR%20%2F%3E%3CBR%20%2F%3Eusing%20(ClientContext%20context%20%3D%20TokenHelper.GetClientContextWithAccessToken(siteUrl.ToString()%2C%20accessToken))%0A%7B%0A%20%20%20%20%20Web%20web%20%3D%20context.Web%3B%0A%20%20%20%20%20context.Load(web)%3B%0A%20%20%20%20%20context.ExecuteQuery()%3B%0A%0A%20%20%20%20%20SearchConfigurationPortability%20sconfig%20%3D%20new%20SearchConfigurationPortability(context)%3B%0A%20%20%20%20%20SearchObjectOwner%20owner%20%3D%20new%20SearchObjectOwner(context%2C%20SearchObjectLevel.SPWeb)%3B%0A%0A%20%20%20%20%20sconfig.ImportSearchConfiguration(owner%2C%20System.IO.File.ReadAllText(settingsFile))%3B%0A%20%20%20%20%20context.Load(sconfig)%3B%0A%20%20%20%20%20context.ExecuteQueryRetry()%3B%0A%7D%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EAnd%20here's%20the%20search%20configuration%20XML%3A%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3E%26lt%3BSearchConfigurationSettings%20xmlns%3Ai%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema-instance%22%20xmlns%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Portability%22%26gt%3B%0A%20%20%26lt%3BSearchQueryConfigurationSettings%26gt%3B%0A%20%20%20%20%26lt%3BSearchQueryConfigurationSettings%26gt%3B%0A%20%20%20%20%20%20%26lt%3BBestBets%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fwww.microsoft.com%2Fsharepoint%2Fsearch%2FKnownTypes%2F2008%2F08%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%26lt%3BDefaultSourceId%26gt%3B00000000-0000-0000-0000-000000000000%26lt%3B%2FDefaultSourceId%26gt%3B%0A%20%20%20%20%20%20%26lt%3BDefaultSourceIdSet%26gt%3Btrue%26lt%3B%2FDefaultSourceIdSet%26gt%3B%0A%20%20%20%20%20%20%26lt%3BDeployToParent%26gt%3Bfalse%26lt%3B%2FDeployToParent%26gt%3B%0A%20%20%20%20%20%20%26lt%3BDisableInheritanceOnImport%26gt%3Bfalse%26lt%3B%2FDisableInheritanceOnImport%26gt%3B%0A%20%20%20%20%20%20%26lt%3BQueryRuleGroups%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fwww.microsoft.com%2Fsharepoint%2Fsearch%2FKnownTypes%2F2008%2F08%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%26lt%3BQueryRules%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fwww.microsoft.com%2Fsharepoint%2Fsearch%2FKnownTypes%2F2008%2F08%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%26lt%3BResultTypes%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Administration%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%26lt%3BSources%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Administration.Query%22%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3ASource%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AActive%26gt%3Btrue%26lt%3B%2Fd4p1%3AActive%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AAuthInfo%20xmlns%3Ad6p1%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Administration%22%20i%3Anil%3D%22true%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3ABuiltIn%26gt%3Bfalse%26lt%3B%2Fd4p1%3ABuiltIn%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AConnectionTimeout%26gt%3B15000%26lt%3B%2Fd4p1%3AConnectionTimeout%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AConnectionUrlTemplate%20%2F%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3ACreatedDate%26gt%3B2017-03-02T10%3A16%3A37.267%26lt%3B%2Fd4p1%3ACreatedDate%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3ADescription%20%2F%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AHasPermissionToReadAuthInfo%26gt%3Btrue%26lt%3B%2Fd4p1%3AHasPermissionToReadAuthInfo%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AId%26gt%3Bcdb12bed-2bb3-4099-9be2-f28cb885cafa%26lt%3B%2Fd4p1%3AId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AIndexOffset%26gt%3B0%26lt%3B%2Fd4p1%3AIndexOffset%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3ALastModifiedDate%26gt%3B2017-03-02T10%3A16%3A37.267%26lt%3B%2Fd4p1%3ALastModifiedDate%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AMaximumResponseLength%26gt%3B64%26lt%3B%2Fd4p1%3AMaximumResponseLength%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AName%26gt%3BPortaal%26lt%3B%2Fd4p1%3AName%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AOwner%20xmlns%3Ad6p1%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Administration%22%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3ADatabaseId%26gt%3B00000000-0000-0000-0000-000000000000%26lt%3B%2Fd6p1%3ADatabaseId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3ADisableInheritance%26gt%3Bfalse%26lt%3B%2Fd6p1%3ADisableInheritance%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3ASPFarmId%26gt%3Bbaa1b08f-cbca-4af8-95fe-67ba9526f9b6%26lt%3B%2Fd6p1%3ASPFarmId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3ASPSiteId%26gt%3Bd1befcbb-1418-46f6-b081-3f49fc647d39%26lt%3B%2Fd6p1%3ASPSiteId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3ASPSiteSubscriptionId%26gt%3B68ec952c-1c59-47b4-848c-4e41c1039ed1%26lt%3B%2Fd6p1%3ASPSiteSubscriptionId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3ASPWebId%26gt%3B8c99e281-0327-4be0-8625-b3752a0b1cf2%26lt%3B%2Fd6p1%3ASPWebId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3B%2Fd4p1%3AOwner%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AProviderId%26gt%3Bfa947043-6046-4f97-9714-40d4c113963d%26lt%3B%2Fd4p1%3AProviderId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3Bd4p1%3AQueryTransform%20xmlns%3Ad6p1%3D%22http%3A%2F%2Fwww.microsoft.com%2Fsharepoint%2Fsearch%2FKnownTypes%2F2008%2F08%22%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3AId%26gt%3Be0ca6315-71f2-4db9-a073-a594039b61a2%26lt%3B%2Fd6p1%3AId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3AIsSystem%26gt%3Bfalse%26lt%3B%2Fd6p1%3AIsSystem%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3AOverridePropertiesForSeralization%20xmlns%3Ad7p1%3D%22http%3A%2F%2Fschemas.microsoft.com%2F2003%2F10%2FSerialization%2FArrays%22%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd7p1%3AKeyValueOfstringanyType%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd7p1%3AKey%26gt%3BAllowPartialResults%26lt%3B%2Fd7p1%3AKey%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd7p1%3AValue%20xmlns%3Ad9p1%3D%22http%3A%2F%2Fwww.w3.org%2F2001%2FXMLSchema%22%20i%3Atype%3D%22d9p1%3Aboolean%22%26gt%3Btrue%26lt%3B%2Fd7p1%3AValue%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%2Fd7p1%3AKeyValueOfstringanyType%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%2Fd6p1%3AOverridePropertiesForSeralization%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3AOwnerId%26gt%3Bf68831ed-693d-4960-8263-c8038268c95b%26lt%3B%2Fd6p1%3AOwnerId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3AParentId%26gt%3Bcdb12bed-2bb3-4099-9be2-f28cb885cafa%26lt%3B%2Fd6p1%3AParentId%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3AParentType%26gt%3BSource%26lt%3B%2Fd6p1%3AParentType%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3AQueryPropertyExpressions%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3AMaxSize%26gt%3B2147483647%26lt%3B%2Fd6p1%3AMaxSize%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3AOrderedItems%20%2F%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3B%2Fd6p1%3AQueryPropertyExpressions%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3A_IsReadOnly%26gt%3Btrue%26lt%3B%2Fd6p1%3A_IsReadOnly%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3A_QueryTemplate%26gt%3B%7BsearchTerms%7D%20Path%3A%7BSiteCollection.URL%7D%26lt%3B%2Fd6p1%3A_QueryTemplate%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%26lt%3Bd6p1%3A_SourceId%20i%3Anil%3D%22true%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%20%20%20%20%26lt%3B%2Fd4p1%3AQueryTransform%26gt%3B%0A%20%20%20%20%20%20%20%20%26lt%3B%2Fd4p1%3ASource%26gt%3B%0A%20%20%20%20%20%20%26lt%3B%2FSources%26gt%3B%0A%20%20%20%20%20%20%26lt%3BUserSegments%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fwww.microsoft.com%2Fsharepoint%2Fsearch%2FKnownTypes%2F2008%2F08%22%20%2F%26gt%3B%0A%20%20%20%20%26lt%3B%2FSearchQueryConfigurationSettings%26gt%3B%0A%20%20%26lt%3B%2FSearchQueryConfigurationSettings%26gt%3B%0A%20%20%26lt%3BSearchRankingModelConfigurationSettings%26gt%3B%0A%20%20%20%20%26lt%3BRankingModels%20xmlns%3Ad3p1%3D%22http%3A%2F%2Fschemas.microsoft.com%2F2003%2F10%2FSerialization%2FArrays%22%20%2F%26gt%3B%0A%20%20%26lt%3B%2FSearchRankingModelConfigurationSettings%26gt%3B%0A%20%20%26lt%3BSearchSchemaConfigurationSettings%26gt%3B%0A%20%20%20%20%26lt%3BAliases%20xmlns%3Ad3p1%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Administration%22%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bd3p1%3ALastItemName%20i%3Anil%3D%22true%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bd3p1%3Adictionary%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fschemas.microsoft.com%2F2003%2F10%2FSerialization%2FArrays%22%20%2F%26gt%3B%0A%20%20%20%20%26lt%3B%2FAliases%26gt%3B%0A%20%20%20%20%26lt%3BCategoriesAndCrawledProperties%20xmlns%3Ad3p1%3D%22http%3A%2F%2Fschemas.microsoft.com%2F2003%2F10%2FSerialization%2FArrays%22%20%2F%26gt%3B%0A%20%20%20%20%26lt%3BCrawledProperties%20xmlns%3Ad3p1%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Administration%22%20i%3Anil%3D%22true%22%20%2F%26gt%3B%0A%20%20%20%20%26lt%3BManagedProperties%20xmlns%3Ad3p1%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Administration%22%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bd3p1%3ALastItemName%20i%3Anil%3D%22true%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bd3p1%3Adictionary%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fschemas.microsoft.com%2F2003%2F10%2FSerialization%2FArrays%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bd3p1%3ATotalCount%26gt%3B0%26lt%3B%2Fd3p1%3ATotalCount%26gt%3B%0A%20%20%20%20%26lt%3B%2FManagedProperties%26gt%3B%0A%20%20%20%20%26lt%3BMappings%20xmlns%3Ad3p1%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Administration%22%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bd3p1%3ALastItemName%20i%3Anil%3D%22true%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bd3p1%3Adictionary%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fschemas.microsoft.com%2F2003%2F10%2FSerialization%2FArrays%22%20%2F%26gt%3B%0A%20%20%20%20%26lt%3B%2FMappings%26gt%3B%0A%20%20%20%20%26lt%3BOverrides%20xmlns%3Ad3p1%3D%22http%3A%2F%2Fschemas.datacontract.org%2F2004%2F07%2FMicrosoft.Office.Server.Search.Administration%22%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bd3p1%3ALastItemName%20i%3Anil%3D%22true%22%20%2F%26gt%3B%0A%20%20%20%20%20%20%26lt%3Bd3p1%3Adictionary%20xmlns%3Ad4p1%3D%22http%3A%2F%2Fschemas.microsoft.com%2F2003%2F10%2FSerialization%2FArrays%22%20%2F%26gt%3B%0A%20%20%20%20%26lt%3B%2FOverrides%26gt%3B%0A%20%20%26lt%3B%2FSearchSchemaConfigurationSettings%26gt%3B%0A%26lt%3B%2FSearchConfigurationSettings%26gt%3B%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThe%20same%20console%20app%20is%20able%20to%20provision%20site%20collections%20to%20the%20tenant%2C%20so%20I%20know%20the%20permissions%20are%20working.%20And%20if%20I%20connect%20to%20the%20tenant%20using%20an%20admin%20username%20and%20password%20then%20I%20can%20succesfully%20import%20the%20same%20XML%20file.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EAny%20ideas%20as%20to%20why%20this%20doesn't%20work%3F%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3EThanks%20in%20advance%20for%20your%20help!%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-49773%22%20slang%3D%22en-US%22%3E%3CLINGO-LABEL%3EDeveloper%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-50749%22%20slang%3D%22en-US%22%3ERe%3A%20SharePoint%20Online%3A%20import%20search%20configuration%20xml%20using%20app%20permissions%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-50749%22%20slang%3D%22en-US%22%3E%3CP%3ESomething%20for%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Ftechcommunity.microsoft.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F369%22%20target%3D%22_blank%22%3E%40Vesa%20Juvonen%3C%2FA%3E%26nbsp%3Bto%20confirm%3F%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-50743%22%20slang%3D%22en-US%22%3ERe%3A%20SharePoint%20Online%3A%20import%20search%20configuration%20xml%20using%20app%20permissions%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-50743%22%20slang%3D%22en-US%22%3E%3CP%3EThanks%2C%20Luis%2C%20that%20was%20my%20guess%20too%20but%20couldn't%20find%20any%20information%20to%20confirm%20it%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-50052%22%20slang%3D%22en-US%22%3ERe%3A%20SharePoint%20Online%3A%20import%20search%20configuration%20xml%20using%20app%20permissions%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-50052%22%20slang%3D%22en-US%22%3EHi%20Marcela%2C%20not%20100%25%20sure%2C%20but%20I'd%20say%2C%20the%20Import%20search%20configuration%20is%20not%20allowed%20in%20an%20App-Only%20context%20(kind%20of%20a%20bug%2C%20as%20the%20permissions%20are%20assigned%20correctly).%3C%2FLINGO-BODY%3E
Highlighted
New Contributor

Hi,

I have a console application connecting to a SharePoint Online tenant using app permissions; the app principal has full control permissions in the whole tenant.

 

I'm trying to import a search configuration XML to a site collection, but when I do I get the following error: 

 

An unhandled exception of type 'Microsoft.SharePoint.Client.ServerException' occurred in Microsoft.SharePoint.Client.Runtime.dll

Additional information: The server was unable to process the request due to an internal error. For more information about the error, either turn on IncludeExceptionDetailInFaults (either from ServiceBehaviorAttribute or from the <serviceDebug> configuration behavior) on the server in order to send the exception information back to the client, or turn on tracing as per the Microsoft .NET Framework SDK documentation and inspect the server trace logs.

 

Here's my code:

 

Uri siteUrl = new Uri("https://{tenant}.sharepoint.com/teams/testsite");
var settingsFile = "SearchConfiguration.xml";
string realm = TokenHelper.GetRealmFromTargetUrl(siteUrl);
string accessToken = TokenHelper.GetAppOnlyAccessToken(TokenHelper.SharePointPrincipal, siteUrl.Authority, realm).AccessToken;

using (ClientContext context = TokenHelper.GetClientContextWithAccessToken(siteUrl.ToString(), accessToken)) { Web web = context.Web; context.Load(web); context.ExecuteQuery(); SearchConfigurationPortability sconfig = new SearchConfigurationPortability(context); SearchObjectOwner owner = new SearchObjectOwner(context, SearchObjectLevel.SPWeb); sconfig.ImportSearchConfiguration(owner, System.IO.File.ReadAllText(settingsFile)); context.Load(sconfig); context.ExecuteQueryRetry(); }

 

And here's the search configuration XML:

 

<SearchConfigurationSettings xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Portability">
  <SearchQueryConfigurationSettings>
    <SearchQueryConfigurationSettings>
      <BestBets xmlns:d4p1="http://www.microsoft.com/sharepoint/search/KnownTypes/2008/08" />
      <DefaultSourceId>00000000-0000-0000-0000-000000000000</DefaultSourceId>
      <DefaultSourceIdSet>true</DefaultSourceIdSet>
      <DeployToParent>false</DeployToParent>
      <DisableInheritanceOnImport>false</DisableInheritanceOnImport>
      <QueryRuleGroups xmlns:d4p1="http://www.microsoft.com/sharepoint/search/KnownTypes/2008/08" />
      <QueryRules xmlns:d4p1="http://www.microsoft.com/sharepoint/search/KnownTypes/2008/08" />
      <ResultTypes xmlns:d4p1="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Administration" />
      <Sources xmlns:d4p1="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Administration.Query">
        <d4p1:Source>
          <d4p1:Active>true</d4p1:Active>
          <d4p1:AuthInfo xmlns:d6p1="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Administration" i:nil="true" />
          <d4p1:BuiltIn>false</d4p1:BuiltIn>
          <d4p1:ConnectionTimeout>15000</d4p1:ConnectionTimeout>
          <d4p1:ConnectionUrlTemplate />
          <d4p1:CreatedDate>2017-03-02T10:16:37.267</d4p1:CreatedDate>
          <d4p1:Description />
          <d4p1:HasPermissionToReadAuthInfo>true</d4p1:HasPermissionToReadAuthInfo>
          <d4p1:Id>cdb12bed-2bb3-4099-9be2-f28cb885cafa</d4p1:Id>
          <d4p1:IndexOffset>0</d4p1:IndexOffset>
          <d4p1:LastModifiedDate>2017-03-02T10:16:37.267</d4p1:LastModifiedDate>
          <d4p1:MaximumResponseLength>64</d4p1:MaximumResponseLength>
          <d4p1:Name>Portaal</d4p1:Name>
          <d4p1:Owner xmlns:d6p1="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Administration">
            <d6p1:DatabaseId>00000000-0000-0000-0000-000000000000</d6p1:DatabaseId>
            <d6p1:DisableInheritance>false</d6p1:DisableInheritance>
            <d6p1:SPFarmId>baa1b08f-cbca-4af8-95fe-67ba9526f9b6</d6p1:SPFarmId>
            <d6p1:SPSiteId>d1befcbb-1418-46f6-b081-3f49fc647d39</d6p1:SPSiteId>
            <d6p1:SPSiteSubscriptionId>68ec952c-1c59-47b4-848c-4e41c1039ed1</d6p1:SPSiteSubscriptionId>
            <d6p1:SPWebId>8c99e281-0327-4be0-8625-b3752a0b1cf2</d6p1:SPWebId>
          </d4p1:Owner>
          <d4p1:ProviderId>fa947043-6046-4f97-9714-40d4c113963d</d4p1:ProviderId>
          <d4p1:QueryTransform xmlns:d6p1="http://www.microsoft.com/sharepoint/search/KnownTypes/2008/08">
            <d6p1:Id>e0ca6315-71f2-4db9-a073-a594039b61a2</d6p1:Id>
            <d6p1:IsSystem>false</d6p1:IsSystem>
            <d6p1:OverridePropertiesForSeralization xmlns:d7p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
              <d7p1:KeyValueOfstringanyType>
                <d7p1:Key>AllowPartialResults</d7p1:Key>
                <d7p1:Value xmlns:d9p1="http://www.w3.org/2001/XMLSchema" i:type="d9p1:boolean">true</d7p1:Value>
              </d7p1:KeyValueOfstringanyType>
            </d6p1:OverridePropertiesForSeralization>
            <d6p1:OwnerId>f68831ed-693d-4960-8263-c8038268c95b</d6p1:OwnerId>
            <d6p1:ParentId>cdb12bed-2bb3-4099-9be2-f28cb885cafa</d6p1:ParentId>
            <d6p1:ParentType>Source</d6p1:ParentType>
            <d6p1:QueryPropertyExpressions>
              <d6p1:MaxSize>2147483647</d6p1:MaxSize>
              <d6p1:OrderedItems />
            </d6p1:QueryPropertyExpressions>
            <d6p1:_IsReadOnly>true</d6p1:_IsReadOnly>
            <d6p1:_QueryTemplate>{searchTerms} Path:{SiteCollection.URL}</d6p1:_QueryTemplate>
            <d6p1:_SourceId i:nil="true" />
          </d4p1:QueryTransform>
        </d4p1:Source>
      </Sources>
      <UserSegments xmlns:d4p1="http://www.microsoft.com/sharepoint/search/KnownTypes/2008/08" />
    </SearchQueryConfigurationSettings>
  </SearchQueryConfigurationSettings>
  <SearchRankingModelConfigurationSettings>
    <RankingModels xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
  </SearchRankingModelConfigurationSettings>
  <SearchSchemaConfigurationSettings>
    <Aliases xmlns:d3p1="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Administration">
      <d3p1:LastItemName i:nil="true" />
      <d3p1:dictionary xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    </Aliases>
    <CategoriesAndCrawledProperties xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    <CrawledProperties xmlns:d3p1="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Administration" i:nil="true" />
    <ManagedProperties xmlns:d3p1="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Administration">
      <d3p1:LastItemName i:nil="true" />
      <d3p1:dictionary xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
      <d3p1:TotalCount>0</d3p1:TotalCount>
    </ManagedProperties>
    <Mappings xmlns:d3p1="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Administration">
      <d3p1:LastItemName i:nil="true" />
      <d3p1:dictionary xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    </Mappings>
    <Overrides xmlns:d3p1="http://schemas.datacontract.org/2004/07/Microsoft.Office.Server.Search.Administration">
      <d3p1:LastItemName i:nil="true" />
      <d3p1:dictionary xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays" />
    </Overrides>
  </SearchSchemaConfigurationSettings>
</SearchConfigurationSettings>

 

The same console app is able to provision site collections to the tenant, so I know the permissions are working. And if I connect to the tenant using an admin username and password then I can succesfully import the same XML file.

 

Any ideas as to why this doesn't work?

 

Thanks in advance for your help!

3 Replies
Highlighted
Hi Marcela, not 100% sure, but I'd say, the Import search configuration is not allowed in an App-Only context (kind of a bug, as the permissions are assigned correctly).
Highlighted

Thanks, Luis, that was my guess too but couldn't find any information to confirm it

Highlighted