Участник
|
так, с нуля опишу проблему, а то не уточнил момент:
1. есть интерес, связанный с откликом от кампании через кастомное поле (1:N)
2. у этого интереса есть закрытый отклик от кампании.
3. ответственный за отклик от кампании - выключенный пользователь/без ролей.
4. выполняем QualifyLeadRequest с таргетом - физлицо.
получаем ошибки "нет ролей"/"не хватает привилегий" на ответственного за отклик от кампании пользователя.
из трейса:
at CrmException..ctor(String message, Exception innerException, Int32 errorCode, Boolean isFlowControlException) ilOffset = 0x0
at CrmException..ctor(String message, Exception innerException, Int32 errorCode) ilOffset = 0x0
at RuntimeMethodHandle._InvokeConstructor(IRuntimeMethodInfo method, Object[] args, SignatureStruct& signature, RuntimeType declaringType) ilOffset = 0xFFFFFFFF
at RuntimeConstructorInfo.Invoke(BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) ilOffset = 0xD8
at RuntimeType.CreateInstanceImpl(BindingFlags bindingAttr, Binder binder, Object[] args, CultureInfo culture, Object[] activationAttributes) ilOffset = 0x1E7
at VersionedPluginProxyStepBase.WrapExceptionToThrow(CrmException exception) ilOffset = 0x89
at VersionedPluginProxyStepBase.Execute(PipelineExecutionContext context) ilOffset = 0x65
at Pipeline.Execute(PipelineExecutionContext context) ilOffset = 0x65
at MessageProcessor.Execute(PipelineExecutionContext context) ilOffset = 0x1C5
at InternalMessageDispatcher.Execute(PipelineExecutionContext context) ilOffset = 0xE4
at ExternalMessageDispatcher.ExecuteInternal(IInProcessOrganizationServiceFactory serviceFactory, IPlatformMessageDispatcherFactory dispatcherFactory, String messageName, String requestName, Int32 primaryObjectTypeCode, Int32 secondaryObjectTypeCode, ParameterCollection fields, CorrelationToken correlationToken, CallerOriginToken originToken, UserAuth userAuth, Guid callerId, Guid transactionContextId, Int32 invocationSource, Nullable`1 requestId, Version endpointVersion) ilOffset = 0x156
at OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType, UserAuth userAuth, Guid targetUserId, Boolean traceRequest, OrganizationContext context, Boolean returnResponse) ilOffset = 0x145
at OrganizationSdkServiceInternal.ExecuteRequest(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType) ilOffset = 0x34
at OrganizationSdkServiceInternal.Execute(OrganizationRequest request, CorrelationToken correlationToken, CallerOriginToken callerOriginToken, WebServiceType serviceType) ilOffset = 0x24
at InprocessServiceProxy.ExecuteCore(OrganizationRequest request) ilOffset = 0x34
at PlatformCommand.XrmExecuteInternal() ilOffset = 0xF6
at QualifyLeadCommand.Execute() ilOffset = 0x6
at LeadRecordPageHandler.Qualify(Object sender, DataEventArgs e) ilOffset = 0x180
at DataEventProcessor.Raise(FormEventId eventId, FormState state, String objectId, Entity entity) ilOffset = 0x44
at AppForm.RaiseDataEvent(FormEventId eventId) ilOffset = 0x5E
at EndUserForm.Initialize(Entity entity) ilOffset = 0x1F
at CustomizableForm.Execute(Entity entity, FormDescriptor fd) ilOffset = 0x62
at LeadRecordPageHandler.ConfigureFormHandler() ilOffset = 0x66
at RecordPageHandler.ConfigureFormWrapper() ilOffset = 0xC
at GenericEventProcessor.RaiseEvent(String eventName) ilOffset = 0x2D
at PageManager.OnPreRender(EventArgs e) ilOffset = 0x53
at Control.PreRenderRecursiveInternal() ilOffset = 0x54
at Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) ilOffset = 0x69E
at Page.ProcessRequest(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) ilOffset = 0x3C
at Page.ProcessRequest() ilOffset = 0x14
at Page.ProcessRequest(HttpContext context) ilOffset = 0x31
at finamtest_userdefined_edit_aspx.ProcessRequest(HttpContext context) ilOffset = 0x8 c:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\82ce50f4\e77f4ed8\App_Web_z0zmcp2g.1.cs
at CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() ilOffset = 0x11D
at HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) ilOffset = 0x15
at ApplicationStepManager.ResumeSteps(Exception error) ilOffset = 0x10E
at HttpApplication.System.Web.IHttpAsyncHandler.BeginProcessRequest(HttpContext context, AsyncCallback cb, Object extraData) ilOffset = 0x5C
at HttpRuntime.ProcessRequestInternal(HttpWorkerRequest wr) ilOffset = 0xFC
at ISAPIRuntime.ProcessRequest(IntPtr ecb, Int32 iWRType) ilOffset = 0x45
>Crm Exception: Message: SecLib::RetrievePrivilegeForUser failed - no roles are assigned to user. Returned hr = -2147209463, User: 1b858e94-1e71-e011-9c74-005056ba670c, ErrorCode: -2147209463, InnerException: Microsoft.Crm.CrmSecurityException: SecLib::RetrievePrivilegeForUser failed - no roles are assigned to user. Returned hr = -2147209463, User: 1b858e94-1e71-e011-9c74-005056ba670c
at Microsoft.Crm.BusinessEntities.SecurityLibrary.RetrievePrivilegeForUser(IUser user, Guid privilege, ExecutionContext context)
at Microsoft.Crm.BusinessEntities.SecurityLibrary.TryCheckPrivilege(Guid user, Guid privilege, ExecutionContext context)
at Microsoft.Crm.BusinessEntities.SecurityLibrary.TryCheckPrivilege(SecurityPrincipal principal, Guid privilege, ExecutionContext context)
at Microsoft.Crm.BusinessEntities.SecurityExtension.PreCreateHandlerEntityPrivilegeCheck(Object sender, SecurityTraits traits, SecurityAttributes attributes, ExtensionEventArgs e)
at Microsoft.Crm.BusinessEntities.SecurityExtension.PreCreateHandler(ExtensionEventArgs e, Object sender)
at Microsoft.Crm.BusinessEntities.BusinessProcessObject.PreCreateEventHandler.Invoke(Object sender, ExtensionEventArgs e)
at Microsoft.Crm.BusinessEntities.BusinessProcessObject.Create(IBusinessEntity entity, ExecutionContext context)
at Microsoft.Crm.ObjectModel.ContactService.Create(IBusinessEntity entity, ExecutionContext context)
at Microsoft.Crm.ObjectModel.InitializeAndCreateUtility.InitializeAndCreate(BusinessEntityMoniker srcMoniker, BusinessEntity targetInput, ExecutionContext context)
at Microsoft.Crm.ObjectModel.LeadService.QualifyLead(BusinessEntityMoniker leadId, Boolean createAccount, Boolean createContact, Boolean createOpportunity, BusinessEntityMoniker opportunityCurrencyId, BusinessEntityMoniker opportunityCustomerId, BusinessEntityMoniker sourceCampaignId, Int32 statusCode, ExecutionContext context)
зачем СРМу этот SecurityCheck на связанную запись, по кастомному полю вообще (а не системное campaignresponse.customer) при создании физлица ?
|