public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var assignRequest = (AssignRequest)request; var target = assignRequest.Target; var assignee = assignRequest.Assignee; if (target == null) { throw new FaultException<OrganizationServiceFault>(new OrganizationServiceFault(), "Can not assign without target"); } if (assignee == null) { throw new FaultException<OrganizationServiceFault>(new OrganizationServiceFault(), "Can not assign without assignee"); } var service = ctx.GetFakedOrganizationService(); var assignment = new Entity { LogicalName = target.LogicalName, Id = target.Id, Attributes = new AttributeCollection { { "ownerid", assignee } } }; service.Update(assignment); return new AssignResponse(); }
public void Put_HasNoId_ThrowsException() { // Given var response = new OrganizationResponse { Item = new Organization { Name = "blah blah" } }; var request = new OrganizationRequest { Item = new Organization { Name = "blah blah" } }; _client.Setup(b => b.Put<OrganizationResponse>(It.IsAny<Uri>(), request, "application/json")).Returns(response); var resource = new OrganizationResource(_client.Object); // When, Then Assert.Throws<ArgumentException>(() => resource.Put(request)); }
public override void Execute(IProcessExecutionContext executionContext, IWorkSession session, ITransaction transaction, ISerializedParameters parameters) { try { if (!parameters.ContainsKey("ActionName")) { throw new Exception("ContextRecordAction requires a parameter for ActionName"); } var contextRecord = transaction.TransactionContext; var dataRecord = transaction.DataRecord; var req = new OrganizationRequest(parameters["ActionName"]); req["Target"] = new EntityReference(contextRecord.RecordType, contextRecord.Id); req["Transaction"] = transaction.ToEntityReference(); req["DataRecord"] = new EntityReference(dataRecord.RecordType, dataRecord.Id); //process any additional parameter data passed in from the configuration. if (parameters.Count > 1) { foreach (var key in parameters.Keys) { if (key != "ActionName" && !string.IsNullOrEmpty(parameters[key])) { req[key] = parameters[key]; } } } executionContext.DataService.ToOrgService().Execute(req); } catch (Exception ex) { throw new Exception(ex.Message, ex); } }
public async Task ReturnsCorrectOrganizationsWithSince() { string orgLogin1 = Helper.MakeNameWithTimestamp("MyOrganization1"); string orgName1 = string.Concat(orgLogin1, " Display Name 1"); string orgLogin2 = Helper.MakeNameWithTimestamp("MyOrganization2"); string orgName2 = string.Concat(orgLogin2, " Display Name 2"); string orgLogin3 = Helper.MakeNameWithTimestamp("MyOrganization3"); string orgName3 = string.Concat(orgLogin3, " Display Name 3"); var newOrganization1 = new NewOrganization(orgLogin1, EnterpriseHelper.UserName, orgName1); var newOrganization2 = new NewOrganization(orgLogin2, EnterpriseHelper.UserName, orgName2); var newOrganization3 = new NewOrganization(orgLogin3, EnterpriseHelper.UserName, orgName3); var createdOrganization1 = await _github.Enterprise.Organization.Create(newOrganization1); var createdOrganization2 = await _github.Enterprise.Organization.Create(newOrganization2); var createdOrganization3 = await _github.Enterprise.Organization.Create(newOrganization3); var requestParameter = new OrganizationRequest(createdOrganization1.Id); var organizations = await _organizationsClient.GetAll(requestParameter); Assert.DoesNotContain(organizations, (org => org.Login == orgLogin1)); Assert.Contains(organizations, (org => org.Login == orgLogin2)); Assert.Contains(organizations, (org => org.Login == orgLogin3)); }
/// <summary> /// Override Execute method only /// </summary> /// <param name="request">OrganizationRequest</param> /// <returns>OrganizationResponse</returns> public override OrganizationResponse Execute(OrganizationRequest request) { // If request is RetrieveMultipleReuqest, and Query is QueryExpression, then propagate to Event. if(request is RetrieveMultipleRequest && (request as RetrieveMultipleRequest).Query is QueryExpression) { this.PreExecute(this, new PreExecuteEventArgs((request as RetrieveMultipleRequest).Query as QueryExpression)); } return base.Execute(request); }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var associateRequest = request as AssociateRequest; var service = ctx.GetFakedOrganizationService(); if (associateRequest == null) { throw new Exception("Only associate request can be processed!"); } var associateRelationship = associateRequest.Relationship; var relationShipName = associateRelationship.SchemaName; var fakeRelationShip = ctx.GetRelationship(relationShipName); if (fakeRelationShip == null) { throw new Exception(string.Format("Relationship {0} does not exist in the metadata cache", relationShipName)); } if (associateRequest.Target == null) { throw new Exception("Association without target is invalid!"); } foreach (var relatedEntityReference in associateRequest.RelatedEntities) { if (fakeRelationShip.RelationshipType == XrmFakedRelationship.enmFakeRelationshipType.ManyToMany) { var association = new Entity(fakeRelationShip.IntersectEntity) { Attributes = new AttributeCollection { { fakeRelationShip.Entity1Attribute, associateRequest.Target.Id }, { fakeRelationShip.Entity2Attribute, relatedEntityReference.Id } } }; service.Create(association); } else { //One to many //Get entity to update var entityToUpdate = new Entity(relatedEntityReference.LogicalName) { Id = relatedEntityReference.Id }; entityToUpdate[fakeRelationShip.Entity2Attribute] = associateRequest.Target; service.Update(entityToUpdate); } } return new AssociateResponse (); }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var createRequest = (CreateRequest)request; var service = ctx.GetFakedOrganizationService(); service.Create(createRequest.Target); return new CreateResponse(); }
public void Put_Called_BuildsUri() { // Given var request = new OrganizationRequest { Item = new Organization { Name = "Organizations", Id = 123 } }; var resource = new OrganizationResource(_client.Object); // When resource.Put(request); // Then _client.Setup(b => b.BuildUri(It.IsAny<string>(), "")); }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var req = request as WhoAmIRequest; var response = new WhoAmIResponse { Results = new ParameterCollection { { "UserId", ctx.CallerId.Id } } }; return response; }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var req = request as PublishXmlRequest; if(string.IsNullOrWhiteSpace(req.ParameterXml)) { throw new Exception(string.Format("ParameterXml property must not be blank.")); } return new PublishXmlResponse() { }; }
public void Put_CalledWithItem_ReturnsReponse() { // Given var response = new OrganizationResponse { Item = new Organization { Name = "blah blah" } }; var request = new OrganizationRequest { Item = new Organization { Name = "blah blah", Id = 123 } }; _client.Setup(b => b.Put<OrganizationResponse>(It.IsAny<Uri>(), request, "application/json")).Returns(response); var resource = new OrganizationResource(_client.Object); // When var result = resource.Put(request); // Then Assert.That(result, Is.EqualTo(response)); }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var createRequest = (CreateRequest)request; var service = ctx.GetFakedOrganizationService(); var guid = service.Create(createRequest.Target); return new CreateResponse() { ResponseName = "Create", Results = new ParameterCollection { { "id", guid } } }; }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var deleteRequest = (DeleteRequest)request; var target = deleteRequest.Target; if (target == null) { throw new FaultException<OrganizationServiceFault>(new OrganizationServiceFault(), "Can not delete without target"); } var service = ctx.GetFakedOrganizationService(); service.Delete(target.LogicalName, target.Id); return new DeleteResponse(); }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var disassociateRequest = request as DisassociateRequest; var service = ctx.GetFakedOrganizationService(); if (disassociateRequest == null) { throw new Exception("Only disassociate request can be processed!"); } var relationShipName = disassociateRequest.Relationship.SchemaName; var relationShip = ctx.GetRelationship(relationShipName); if (relationShip == null) { throw new Exception(string.Format("Relationship {0} does not exist in the metadata cache", relationShipName)); } if (disassociateRequest.Target == null) { throw new Exception("Disassociation without target is invalid!"); } foreach (var relatedEntity in disassociateRequest.RelatedEntities) { var query = new QueryExpression(relationShip.IntersectEntity) { ColumnSet = new ColumnSet(true), Criteria = new FilterExpression(LogicalOperator.And) }; query.Criteria.AddCondition(new ConditionExpression(relationShip.Entity1Attribute, ConditionOperator.Equal, disassociateRequest.Target.Id)); query.Criteria.AddCondition(new ConditionExpression(relationShip.Entity2Attribute, ConditionOperator.Equal, relatedEntity.Id)); var results = service.RetrieveMultiple(query); if (results.Entities.Count == 1) { service.Delete(relationShip.IntersectEntity, results.Entities.First().Id); } } return new DisassociateResponse(); }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var executeTransactionRequest = (ExecuteTransactionRequest)request; var response = new ExecuteTransactionResponse { ["Responses"] = new OrganizationResponseCollection() }; var service = ctx.GetFakedOrganizationService(); foreach (var r in executeTransactionRequest.Requests) { var result = service.Execute(r); if (executeTransactionRequest.ReturnResponses.HasValue && executeTransactionRequest.ReturnResponses.Value) { response.Responses.Add(result); } } return response; }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var req = request as SetStateRequest; //We are going to translate a SetStateRequest into an update message basically var entityName = req.EntityMoniker.LogicalName; var guid = req.EntityMoniker.Id; var entityToUpdate = new Entity(entityName) { Id = guid }; entityToUpdate["statecode"] = req.State; entityToUpdate["statuscode"] = req.Status; var fakedService = ctx.GetFakedOrganizationService(); fakedService.Update(entityToUpdate); return new SetStateResponse(); }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var associateRequest = request as AssociateRequest; var service = ctx.GetFakedOrganizationService(); if (associateRequest == null) { throw new Exception("Only associate request can be processed!"); } var relationShipName = associateRequest.Relationship.SchemaName; var relationShip = ctx.GetRelationship(relationShipName); if (relationShip == null) { throw new Exception(string.Format("Relationship {0} does not exist in the metadata cache", relationShipName)); } if (associateRequest.Target == null) { throw new Exception("Association without target is invalid!"); } foreach (var relatedEntity in associateRequest.RelatedEntities) { var association = new Entity(relationShip.IntersectEntity) { Attributes = new AttributeCollection { { relationShip.Entity1Attribute, associateRequest.Target.Id }, { relationShip.Entity2Attribute, relatedEntity.Id } } }; service.Create(association); } return new AssociateResponse (); }
public string GetCustomCrmConfig() { string xmlCustom = string.Empty; byte[] binary = null; OrganizationServiceProxy serviceProxy = GetOrganizationService(); //Request the action "GetLog4Net" OrganizationRequest request = new OrganizationRequest("new_GetLog4NetConfiguration"); //Get the response for the action OrganizationResponse response = serviceProxy.Execute(request); EntityReference webResourceReference = (EntityReference)response.Results["appender"]; //Retrieve the webresource entity object Entity wb = serviceProxy.Retrieve("webresource", webResourceReference.Id, new ColumnSet("content")); binary = Convert.FromBase64String(wb.Attributes["content"].ToString()); if (binary != null) xmlCustom = UnicodeEncoding.UTF8.GetString(binary); return xmlCustom; }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var req = request as InsertOptionValueRequest; if(req.Label == null) throw new Exception("Label must not be null"); if (string.IsNullOrWhiteSpace(req.Label.LocalizedLabels[0].Label)) { throw new Exception("Label must not be empty"); } if(string.IsNullOrEmpty(req.OptionSetName) && (string.IsNullOrEmpty(req.EntityLogicalName) || string.IsNullOrEmpty(req.AttributeLogicalName))) { throw new Exception("At least OptionSetName or both the EntityName and AttributeName must not be provided"); } string key = ""; if (!string.IsNullOrWhiteSpace(req.OptionSetName)) key = req.OptionSetName; else key = string.Format("{0}#{1}", req.EntityLogicalName, req.AttributeLogicalName); if (!ctx.OptionSetValuesMetadata.ContainsKey(key)) ctx.OptionSetValuesMetadata.Add(key, new OptionSetMetadata()); var optionSetMetadata = ctx.OptionSetValuesMetadata[key]; optionSetMetadata.Options.Add(new OptionMetadata() { MetadataId = Guid.NewGuid(), Value = req.Value, Label = req.Label }); return new InsertOptionValueResponse(); }
private void PublishSolution() { ExecuteAction(Solution.ToString(), delegate { WriteProgress(new ProgressRecord(1, "Publishing Components", string.Format("Collecting components from solution '{0}'...", Solution)) { RecordType = ProgressRecordType.Processing }); IEnumerable <PublishComponentInfo> solutioncomponents = CollectSolutionComponents(Solution); WriteProgress(new ProgressRecord(1, "Publishing Components", "Initializing components to publish...") { RecordType = ProgressRecordType.Processing }); solutioncomponents = InitializePublishComponents(solutioncomponents); string publishXml = ConstructPublishXml( solutioncomponents, solutioncomponents.Any(e => e.ComponentType == 48 || e.ComponentType == 49 || e.ComponentType == 50 || e.ComponentType == 52 || e.ComponentType == 53 || e.ComponentType == 55), solutioncomponents.Any(e => e.ComponentType == 62)); base.WriteVerboseWithTimestamp(publishXml); WriteProgress(new ProgressRecord(1, "Publishing Components", string.Format("Publishing components for solution '{0}'...", Solution)) { RecordType = ProgressRecordType.Processing }); OrganizationRequest request = new OrganizationRequest("PublishXml") { Parameters = new ParameterCollection() }; request.Parameters.Add("ParameterXml", publishXml); OrganizationResponse response = _repository.Execute(request); }); }
internal override OrganizationResponse Execute(OrganizationRequest orgRequest, EntityReference userRef) { var request = MakeRequest <AddMembersTeamRequest>(orgRequest); // Check if the team exist if (!db.HasRow(new EntityReference(LogicalNames.Team, request.TeamId))) { throw new MockupException($"Team with id {request.TeamId} does not exist"); } var teamMembers = db.GetEntities(LogicalNames.TeamMembership).Where(x => x.GetAttributeValue <Guid>("teamid") == request.TeamId); foreach (var userId in request.MemberIds) { // Check if the user exist if (!db.HasRow(new EntityReference(LogicalNames.SystemUser, userId))) { throw new MockupException($"User with id {userId} does not exist"); } // Check if the user is already a member of the team if (teamMembers.Any(t => t.GetAttributeValue <Guid>("systemuserid") == userId)) { throw new MockupException($"User with id {userId} is already member of the team with id {request.TeamId}"); } } foreach (var userId in request.MemberIds) { var teamMember = new Entity(LogicalNames.TeamMembership); teamMember["teamid"] = request.TeamId; teamMember["systemuserid"] = userId; teamMember.Id = Guid.NewGuid(); db.Add(teamMember); } return(new AddMembersTeamResponse()); }
private OrganizationResponse ExecuteAction(OrganizationRequest request) { var action = workflowManager.GetActionDefaultNull(request.RequestName); var workflow = workflowManager.ParseWorkflow(action); if (workflow.Input.Where(a => a.Required).Any(required => !request.Parameters.ContainsKey(required.Name))) { throw new FaultException($"Call to action '{request.RequestName}' but no all required input arguments were provided"); } var entity = db.GetEntityOrNull(request.Parameters["Target"] as EntityReference).CloneEntity(); var inputs = workflow.Input.Where(a => request.Parameters.ContainsKey(a.Name)) .Select(a => new KeyValuePair <string, object>(a.Name, request.Parameters[a.Name])); foreach (var input in inputs) { var argumentName = "{" + input.Key + "(Arguments)}"; workflow.Variables.Add(argumentName, input.Value); } var postExecution = workflowManager.ExecuteWorkflow(workflow, entity, null, this); var outputs = workflow.Output.Where(a => postExecution.Variables.ContainsKey(a.Name)) .Select(a => new KeyValuePair <string, object>(a.Name, postExecution.Variables[a.Name])); var resp = new OrganizationResponse(); foreach (var output in outputs) { resp.Results[output.Key] = output.Value; } postExecution.Variables = new Dictionary <string, object>(); return(resp); }
public OrganizationResponse GetOrganizationUsers(OrganizationRequest request) { try { Epi.Web.BLL.User userImplementation = new Epi.Web.BLL.User(_userDao); // Transform SurveyInfo data transfer object to SurveyInfo business object OrganizationBO organization = request.Organization.ToOrganizationBO(); var response = new OrganizationResponse(); if (!ValidRequest(request, response, Validate.All)) { return(response); } List <UserBO> userBOList = userImplementation.GetUsersByOrgId(request.Organization.OrganizationId); response.OrganizationUsersList = userBOList.ToUserDTOList(); return(response); } catch (Exception ex) { throw new FaultException <CustomFaultException>(new CustomFaultException(ex)); } }
public async void PostAsync_CalledWithItem_ReturnsReponse() { // Given var response = new OrganizationResponse { Item = new Organization { Name = "blah blah" } }; var request = new OrganizationRequest { Item = new Organization { Name = "blah blah" } }; _client.Setup(b => b.PostAsync <OrganizationResponse>(It.IsAny <Uri>(), request, "application/json")).Returns(TaskHelper.CreateTaskFromResult(response)); var resource = new OrganizationResource(_client.Object); // When var result = await resource.PostAsync(request); // Then Assert.That(result, Is.EqualTo(response)); }
private static void ExecuteWhoAmI(SecurityToken token, string serviceUrl, Uri issuerUri) { using (OrganizationServiceClient client = new OrganizationServiceClient("CustomBinding_IOrganizationService", new EndpointAddress(serviceUrl))) { client.ConfigureCrmOnlineBinding(issuerUri); client.Token = token; OrganizationRequest request = new OrganizationRequest(); request.RequestName = "WhoAmI"; OrganizationResponse response = (OrganizationResponse)client.Execute(request); foreach (KeyValuePair <string, object> result in response.Results) { if ("UserId" == result.Key) { Console.WriteLine("User ID: {0}", result.Value); break; } } } }
public OrganizationResponse GetAdminOrganizations(OrganizationRequest request) { try { Epi.Web.BLL.Organization organizationImplementation = new Epi.Web.BLL.Organization(_organizationDao); var response = new OrganizationResponse(); if (!ValidRequest(request, response, Validate.All)) { return(response); } List <OrganizationBO> organizationBOList = organizationImplementation.GetOrganizationInfoForAdmin(request.UserId, request.UserRole); response.OrganizationList = organizationBOList.ToOrganizationDTOList(); return(response); } catch (Exception ex) { throw new FaultException <CustomFaultException>(new CustomFaultException(ex)); } }
public static DataCollection <Entity> GetMultipleSystemFormsWithAllLabels(FilterExpression filterExpression, OrganizationServiceContext context) { QueryExpression qExpression = new QueryExpression(); qExpression.ColumnSet.AllColumns = true; qExpression.Criteria = filterExpression; qExpression.EntityName = "systemform"; OrganizationRequest req = new OrganizationRequest(); req.RequestName = "RetrieveMultipleSystemFormsWithAllLabels"; req.Parameters.Add("Query", qExpression); EntityCollection entities; using (PerformanceProfiler.Instance.StartMarker(PerformanceMarkerName.Metadata, PerformanceMarkerArea.Crm, PerformanceMarkerTagName.GetSystemFormEntityWithAllLabels)) { var response = context.Execute(req); entities = (EntityCollection)response.Results.Values.First(); } return(entities.Entities); }
private FormModel GetFormModel(string surveyId, int userId, Guid userIdGuid, out int orgnizationId) { FormModel formModel = new Models.FormModel(); formModel.UserHighestRole = GetIntSessionValue(UserSession.Key.UserHighestRole); // Get OrganizationList OrganizationRequest request = new OrganizationRequest(); request.UserId = userId; request.UserRole = formModel.UserHighestRole; OrganizationResponse organizations = _securityFacade.GetOrganizationsByUserId(request); formModel.OrganizationList = organizations.OrganizationList.ToOrganizationModelList(); //Get Forms orgnizationId = organizations.OrganizationList[0].OrganizationId; formModel.FormList = GetFormsInfoList(userIdGuid, orgnizationId); // Set user Info formModel.UserFirstName = GetStringSessionValue(UserSession.Key.UserFirstName); formModel.UserLastName = GetStringSessionValue(UserSession.Key.UserLastName); formModel.SelectedForm = surveyId; return(formModel); }
private object ProcessValue(object value, IPlannedValue plannedValueX = null) { if (plannedValueX != null) { valueMap[plannedValueX.Id] = value is AliasedValue aliased ? aliased.Value : value; } return(value switch { OrganizationRequest e => ProcessMappedValue(e.Parameters, plannedValueX as PlannedMapBase, e), OrganizationResponse e => ProcessMappedValue(e.Results, plannedValueX as PlannedMapBase, e), Entity e => ProcessMappedValue(e.Attributes, plannedValueX as PlannedMapBase, e), EntityReference e => ProcessProperties(e, plannedValueX as PlannedMapBase), EntityCollection e => ProcessCollection(e.Entities, plannedValueX as PlannedMapBase, e), OptionSetValue e => ProcessProperties(e, plannedValueX as PlannedMapBase), DataCollection <string, object> e => ProcessMappedValue(e, plannedValueX as PlannedMapBase, e), DataCollection <Entity> e => ProcessCollection(e, plannedValueX as PlannedMapBase, e), DataCollection <EntityReference> e => ProcessCollection(e, plannedValueX as PlannedMapBase, e), DataCollection <OptionSetValue> e => ProcessCollection(e, plannedValueX as PlannedMapBase, e), DataCollection <object> e => ProcessCollection(e, plannedValueX as PlannedMapBase, e), IPlannedValue e => valueMap.TryGetValue(e.Id, out var mappedValue) ? mappedValue : e, _ => value != null && Guid.TryParse(value.ToString(), out var id) ? (valueMap.TryGetValue(id, out var mappedId) ? mappedId : value) : value });
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var req = request as SetStateRequest; //We are going to translate a SetStateRequest into an update message basically var entityName = req.EntityMoniker.LogicalName; var guid = req.EntityMoniker.Id; var entityToUpdate = new Entity(entityName) { Id = guid }; entityToUpdate["statecode"] = req.State; entityToUpdate["statuscode"] = req.Status; var fakedService = ctx.GetFakedOrganizationService(); fakedService.Update(entityToUpdate); return(new SetStateResponse()); }
public void CreateNewRecordTest() { OrganizationRequest orgReq = null; Guid respId = Guid.NewGuid(); MCreateResponse orgResp = new MCreateResponse(); orgResp.idGet = () => respId; BCrmServiceClient.AddResponse(typeof(CreateRequest), orgResp); BCrmServiceClient.MockCrmCommandExecute(); Dictionary <string, CrmDataTypeWrapper> newFields = new Dictionary <string, CrmDataTypeWrapper>(); newFields.Add("name", new CrmDataTypeWrapper("CrudTestAccount", CrmFieldType.String)); newFields.Add("accountnumber", new CrmDataTypeWrapper("12345", CrmFieldType.String)); newFields.Add("telephone1", new CrmDataTypeWrapper("555-555-5555", CrmFieldType.String)); newFields.Add("donotpostalmail", new CrmDataTypeWrapper(true, CrmFieldType.CrmBoolean)); Guid result = crmaction.CreateNewRecord("account", newFields); Assert.AreEqual(result, respId); result = crmaction.CreateNewRecord("", new Dictionary <string, CrmDataTypeWrapper>()); Assert.AreNotEqual(result, respId); orgReq = BCrmServiceClient.GetRequest(typeof(CreateRequest)); Assert.IsNotNull(((CreateRequest)orgReq).Target); }
public void Put_CalledWithItem_ReturnsReponse() { // Given var response = new OrganizationResponse { Item = new Organization { Name = "blah blah" } }; var request = new OrganizationRequest { Item = new Organization { Name = "blah blah", Id = 123 } }; _client.Setup(b => b.Put <OrganizationResponse>(It.IsAny <Uri>(), request, "application/json")).Returns(response); var resource = new OrganizationResource(_client.Object); // When var result = resource.Put(request); // Then Assert.That(result, Is.EqualTo(response)); }
internal override OrganizationResponse Execute(OrganizationRequest orgRequest, EntityReference userRef) { var request = MakeRequest <SetStateRequest>(orgRequest); var row = db.GetDbRow(request.EntityMoniker); var record = row.ToEntity(); if (Utility.IsValidAttribute("statecode", row.Metadata) && Utility.IsValidAttribute("statuscode", row.Metadata)) { var prevEntity = record.CloneEntity(); record["statecode"] = request.State; record["statuscode"] = request.Status; #if !(XRM_MOCKUP_2011 || XRM_MOCKUP_2013) Utility.CheckStatusTransitions(row.Metadata, record, prevEntity); #endif Utility.HandleCurrencies(metadata, db, record); Utility.Touch(record, row.Metadata, core.TimeOffset, userRef); db.Update(record); } return(new SetStateResponse()); }
public UpdaterServiceResponse <bool> PublishWebResources(ConnectionDetail connectionDetail, IEnumerable <Guid> webResourcesIds) { var response = new UpdaterServiceResponse <bool>(); try { Console.WriteLine("Requesting WR publish"); var client = connectionDetail.GetCrmServiceClient(true); var orgContext = new OrganizationServiceContext(client); if (webResourcesIds == null || !webResourcesIds.Any()) { throw new ArgumentNullException("webresourcesId"); } var request = new OrganizationRequest { RequestName = "PublishXml" }; request.Parameters = new ParameterCollection(); request.Parameters.Add(new KeyValuePair <string, object>("ParameterXml", string.Format("<importexportxml><webresources>{0}</webresources></importexportxml>", string.Join("", webResourcesIds.Select(a => string.Format("<webresource>{0}</webresource>", a))) ))); orgContext.Execute(request); response.IsSuccessful = true; return(response); } catch (Exception ex) { Console.WriteLine(ex); response.Error = ex.ToString(); response.IsSuccessful = false; return(response); } }
internal override OrganizationResponse Execute(OrganizationRequest orgRequest, EntityReference userRef) { var request = MakeRequest <ExecuteMultipleRequest>(orgRequest); var toReturn = new ExecuteMultipleResponse(); var responses = new ExecuteMultipleResponseItemCollection(); for (var i = 0; i < request.Requests.Count; i++) { var resp = new ExecuteMultipleResponseItem { RequestIndex = i }; var r = request.Requests[i]; try { var orgResp = core.Execute(r, userRef); if (request.Settings.ReturnResponses) { resp.Response = orgResp; responses.Add(resp); } } catch (Exception e) { resp.Fault = new OrganizationServiceFault { Message = e.Message, Timestamp = DateTime.Now }; responses.Add(resp); if (!request.Settings.ContinueOnError) { toReturn.Results["Responses"] = responses; toReturn.Results["IsFaulted"] = true; return(toReturn); } } } toReturn.Results["Responses"] = responses; toReturn.Results["IsFaulted"] = responses.Any(x => x.Fault != null); return(toReturn); }
/// <summary> /// Determines if the request type can be translated to WebAPI /// This is a temp method to support the staged transition to the webAPI and will be removed or reintegrated with the overall pipeline at some point in the future. /// </summary> /// <param name="req"></param> /// <returns></returns> internal static bool IsRequestValidForTranslationToWebAPI(OrganizationRequest req) { string RequestName = req.RequestName.ToLower(); switch (RequestName) { case "create": case "update": case "delete": return(true); case "upsert": // Disabling WebAPI support for upsert right now due to issues with generating the response. // avoid bug in WebAPI around Support for key's as EntityRefeances //TODO: TEMP //Xrm.Sdk.Messages.UpsertRequest upsert = (Xrm.Sdk.Messages.UpsertRequest)req; //if (upsert.Target.KeyAttributes?.Any(a => a.Value is string) != true) // return false; //else //return true; default: return(false); } }
protected ExecuteWorkflowResult ExecuteWorkflow(OrganizationServiceContext context, string workflowName, string targetEntityName, Guid targetEntityID) { var workflow = context.CreateQuery("workflow") .FirstOrDefault(w => w.GetAttributeValue <string>("name") == workflowName && w.GetAttributeValue <string>("primaryentity") == targetEntityName && w.GetAttributeValue <bool?>("ondemand").GetValueOrDefault(false)); if (workflow == null) { ADXTrace.Instance.TraceInfo(TraceCategory.Application, string.Format(@"Workflow named ""{0}"" with primary entity {1} not found.", workflowName, EntityNamePrivacy.GetEntityName(targetEntityName))); return(new WorkflowNotFoundResult(ResourceManager.GetString("Could_Not_Find_Workflow_With_Name_And_Target_EntityName_Message").FormatWith(workflowName, targetEntityName))); } var request = new OrganizationRequest("ExecuteWorkflow"); request.Parameters["WorkflowId"] = workflow.GetAttributeValue <Guid>("workflowid"); request.Parameters["EntityId"] = targetEntityID; var response = context.Execute(request); return(new ExecuteWorkflowResult(ResourceManager.GetString("Workflow_Executed_Successfully_Message").FormatWith(workflowName), response)); }
// GET: MappingMaster #region ::Organization Role:: public ActionResult OrgPrivilegeList() { OrganizationPrivilegeModel opmodel = new OrganizationPrivilegeModel(); if (Request.QueryString["orgid"] != null) { var reqOrg = new OrganizationRequest { Data = new OrganizationModel { Id = Convert.ToInt64(Request.QueryString["orgid"].ToString()) } }; var respOrg = new OrganizationResponse(); respOrg = new OrganizationHandler(_unitOfWork).GetDetailOrganizationById(reqOrg); opmodel.OrganizationName = respOrg.Entity.OrgName; opmodel.OrgID = respOrg.Entity.Id; var _request = new OrganizationPrivilegeRequest { Data = new OrganizationPrivilegeModel { OrgID = Convert.ToInt64(Request.QueryString["orgid"].ToString()) } }; //get Privilege Ids for organization var selPrivileges = new OrganizationPrivilegeHandler(_unitOfWork, _context).GetListData(_request); if (selPrivileges.Entity.PrivilegeIDs != null && selPrivileges.Entity.PrivilegeIDs.Count > 0) { opmodel.PrivilegeIDs = selPrivileges.Entity.PrivilegeIDs; } } return(View(opmodel)); }
public async Task <IList <SonarQubeOrganization> > GetAllOrganizationsAsync(CancellationToken token) { EnsureIsConnected(); var currentPage = 1; var allOrganizations = new List <OrganizationResponse>(); Result <OrganizationResponse[]> organizationsResult; do { var request = new OrganizationRequest { Page = currentPage, PageSize = MaximumPageSize }; organizationsResult = await this.sonarqubeClient.GetOrganizationsAsync(request, token); organizationsResult.EnsureSuccess(); allOrganizations.AddRange(organizationsResult.Value); currentPage++; }while (organizationsResult.Value.Length > 0); return(allOrganizations.Select(SonarQubeOrganization.FromResponse).ToList()); }
private static OrganizationWebProxyClient CRMCall(TraceWriter log) { var aadInstance = "https://login.microsoftonline.com/"; //var organizationUrl = "https://firstkeyhomesdev.crm.dynamics.com"; //DEV ENVIRONMENT var organizationUrl = Environment.GetEnvironmentVariable("D365OrgUrl"); //"https://firstkeyhomestest.crm.dynamics.com"; log.Info($"D365 Org Url : {organizationUrl}"); var tenantId = "aa33e5f2-00dd-407e-b337-8cb00f28c25d"; //[Azure AD Tenant ID]; var clientId = Environment.GetEnvironmentVariable("ClientId"); //"df227c93-0513-43be-a02c-690167459b52";//[Azure AD Application ID]; log.Info($"CLient ID : {clientId}"); var appKey = Environment.GetEnvironmentVariable("appKey"); //"OXE+UZQfM6vIQPVwBD2B/KL4O56jfJ0BJHLsuXSSqgk=";//[Azure AD Application Key]; log.Info($"Application Key : {appKey}"); var clientcred = new ClientCredential(clientId, appKey); var authenticationContext = new AuthenticationContext(aadInstance + tenantId); var authenticationResult = authenticationContext.AcquireTokenAsync(organizationUrl, clientcred); var requestedToken = authenticationResult.Result.AccessToken; var sdkService = new OrganizationWebProxyClient(GetServiceUrl(organizationUrl), false); if (sdkService is OrganizationWebProxyClient) { sdkService.HeaderToken = requestedToken; OrganizationRequest request = new OrganizationRequest() { RequestName = "WhoAmI" }; WhoAmIResponse response = sdkService.Execute(new WhoAmIRequest()) as WhoAmIResponse; log.Info("D365 User ID : " + response.UserId); return(sdkService); } else { return(null); } }
// public void CreateEmail(EntityReference contactRef, EntityReferenceCollection accountsReference, Guid currentUserId, string subject, string description, Guid regardingObjId) { Entity contact = Service.Retrieve(contactRef.LogicalName, contactRef.Id, new ColumnSet(new string[] { "contactid", "fullname" })); var SendEmailAction = new OrganizationRequest() { RequestName = "new_SendCustomEmailAction" }; SendEmailAction["Sender"] = new EntityReference("systemuser", currentUserId); SendEmailAction["RecepientEmail"] = new EntityReference("contact", (Guid)contact.Attributes["contactid"]); // foreach (var accountRef in accountsReference) { Entity account = Service.Retrieve(accountRef.LogicalName, accountRef.Id, new ColumnSet(new string[] { "name" })); var linkContact = $"https://andriikyrstiuksenvironment.crm11.dynamics.com/main.aspx?appid=42251675-59f8-ea11-a815-000d3a86b9ef&pagetype=entityrecord&etn=account&id=" + $"{account.Id}"; SendEmailAction["Subject"] = $"{subject} {account.Attributes["name"]} with contact {contact.Attributes["fullname"]}"; SendEmailAction["Body"] = $"{description} - {linkContact}"; if (regardingObjId != Guid.Empty) { SendEmailAction["RegardingContact"] = new EntityReference("contact", regardingObjId); } Service.Execute(SendEmailAction); } }
private void GetEntityRecords(QuickSearchFetchXml qsfx) { string xml = CreateXml(qsfx.FormattedFetchXml, qsfx.PagingCookie, qsfx.PageNumber == 0 ? 1 : qsfx.PageNumber, 5); FetchExpression query = new FetchExpression(); query.Query = xml; OrganizationRequest request = new OrganizationRequest() { RequestName = "RetrieveMultiple" }; request["Query"] = query; IOrganizationService service = SilverlightUtility.GetSoapService(); AsynchMethodParameters param = new AsynchMethodParameters { Service = service, QSFetchXml = qsfx }; service.BeginExecute(request, new AsyncCallback(GetEntities_Callback), param); }
/// <summary> /// 启用 /// </summary> /// <param name="service"></param> /// <param name="entity"></param> public static void Enable(this IOrganizationService service, Entity entity) { if (entity == null || entity.Id == Guid.Empty) { return; } OptionSetValue state = new OptionSetValue(); OptionSetValue status = new OptionSetValue(); state.Value = 0; status.Value = 1; EntityReference moniker = new EntityReference(entity.LogicalName, entity.Id); OrganizationRequest request = new OrganizationRequest() { RequestName = "SetState" }; request["EntityMoniker"] = moniker; request["State"] = state; request["Status"] = status; service.Execute(request); }
public virtual IDictionary <Guid, OrganizationResponse> ExecutePlan() { ValidateExecutionPlanState(); var serialised = executionQueue.ToList().SerialiseContractJson(true, surrogate: new DateTimeCrmContractSurrogateCustom()); if (serialised.IsEmpty()) { throw new InvalidPluginExecutionException("Could not deserialise planned execution operations." + " Possibly because one of the serialised types could not be found through the sandbox plugin."); } var request = new OrganizationRequest("ys_LibrariesExecutePlannedOperations") { Parameters = new ParameterCollection { { "ExecutionPlan", serialised.Compress() } } }; string response; using (var service = enhancedOrgServiceBase.GetService()) { response = ((string)service.Execute(request)["SerialisedResult"]).Decompress(); } var result = response.DeserialiseContractJson <MockDictionary>(true, surrogate: new DateTimeCrmContractSurrogateCustom()) .ToDictionary(e => Guid.Parse(e.Key), e => e.Value.Unmock <OrganizationResponse>()); CancelPlanning(); return(result); }
private IEnumerable <string> GetDependencies(OrganizationRequest request, IEnumerable <object> path) { if (IsContentRequest(request)) { yield return(_dependencyContentFormat.FormatWith(CacheEntryChangeMonitorPrefix)); } else if (IsMetadataRequest(request)) { yield return(_dependencyMetadataFormat.FormatWith(CacheEntryChangeMonitorPrefix)); } foreach (var parameter in request.Parameters) { var value = parameter.Value; if (value != null && !path.Contains(value)) { foreach (var child in GetDependenciesForObject(value, path.Concat(new[] { value }))) { yield return(child); } } } }
public ActionResult Index() { string tenantID = ClaimsPrincipal.Current.FindFirst("http://schemas.microsoft.com/identity/claims/tenantid").Value; // Clean organization name from user logged string organizationName = User.Identity.Name.Substring( User.Identity.Name.IndexOf('@') + 1, User.Identity.Name.IndexOf('.') - (User.Identity.Name.IndexOf('@') + 1)); //string crmResourceId = "https://[orgname].crm.microsoftonline.com"; var resource = string.Format(OrganizationHostName, organizationName); // Request a token using application credentials ClientCredential clientcred = new ClientCredential(clientId, appKey); AuthenticationContext authenticationContext = new AuthenticationContext(aadInstance + tenantID); AuthenticationResult authenticationResult = authenticationContext.AcquireToken(resource, clientcred); var requestedToken = authenticationResult.AccessToken; // Invoke SDK using using the requested token using (var sdkService = new OrganizationWebProxyClient(GetServiceUrl(organizationName), false)) { // Query CRM sdkService.HeaderToken = requestedToken; OrganizationRequest request = new OrganizationRequest() { RequestName = "WhoAmI" }; OrganizationResponse response = sdkService.Execute(request); return(View((object)string.Join(",", response.Results.ToList()))); } }
/// <inheritdoc /> public OrganizationResponse Execute(OrganizationRequest request) { var message = Settings.LogDetailedRequests ? GetDetailedMessage(request) : $"Execute Request {request.RequestName}"; if (Settings.TimeRequests) { var timer = new Stopwatch(); try { TraceStart(message); timer.Start(); return(Service.Execute(request)); } finally { TraceEnd(timer); } } TraceExecute(message); return(Service.Execute(request)); }
private void UpsertItemSetConfigurationData() { var pluginContext = this.PluginContext; var baseConfigDataWebResourceId = new Guid("CBD99D59-A2DD-E711-81A8-08002703F176"); var configurationContent = pluginContext.OrgCtx.WebResourceSet .Where(r => r.WebResourceId == baseConfigDataWebResourceId) .Select(r => r.Content).FirstOrDefault(); if (configurationContent == null) { throw new InvalidPluginExecutionException("'[tuneXrm] Base Demo Item Set Configuration' webresource does not contain data."); } var configuratonBinary = Convert.FromBase64String(configurationContent); var configuration = Encoding.UTF8.GetString(configuratonBinary); var importConfigurationRequest = new OrganizationRequest("pavelkh_ItemSetConfigurationImport") { ["Configuration"] = configuration }; pluginContext.OrgCtx.Execute(importConfigurationRequest); }
/// <summary> /// Override that handles the setting of entity state codes on entities that have complex state transitions. /// </summary> /// <param name="stateToSet">The state code to be set.</param> /// <param name="statusToSet">The status code to be set.</param> /// <param name="entityId">The unique identifier of the entity to set the state and status on.</param> /// <returns>A CRM <c>OrganizationRequest</c> that can be used to set the state and status on an entity in an organization.</returns> protected override OrganizationRequest GetSetStateRequest(int stateToSet, int statusToSet, Guid entityId) { OrganizationRequest returnedRequest = new OrganizationRequest(); Entity requestEntity = new Entity() { Id = entityId }; if (this.ProvidedEntityName == "opportunity") { requestEntity.LogicalName = "opportunityclose"; returnedRequest.Parameters["OpportunityClose"] = requestEntity; if (stateToSet == 2) { returnedRequest.RequestName = "LoseOpportunity"; } if (stateToSet == 1) { returnedRequest.RequestName = "WinOpportunity"; } return returnedRequest; } if (this.ProvidedEntityName == "quote") { requestEntity.LogicalName = "quoteclose"; returnedRequest.Parameters["QuoteClose"] = requestEntity; if (stateToSet == 2) { returnedRequest.RequestName = "WinQuote"; } if (stateToSet == 3) { returnedRequest.RequestName = "CloseQuote"; } return returnedRequest; } return base.GetSetStateRequest(stateToSet, statusToSet, entityId); }
private void RunEMR(OrganizationRequest or, BackgroundWorker sender) { requestWithResults.Requests.Add(or); emrCount++; if (requestWithResults.Requests.Count >= emrBatchSize) { //emrCount += requestWithResults.Requests.Count; //writeit("Executing Multiple Workflows: " + requestWithResults.Requests.Count); ((BackgroundWorker)sender).ReportProgress(0, string.Format("Executing Workflows.. {0} of {1}", emrCount, ExecutionRecordSet.Entities.Count)); this.Invoke((MethodInvoker)delegate() { progressBar1.Maximum = ExecutionRecordSet.Entities.Count; progressBar1.Value = emrCount; }); ExecuteMultipleResponse emrsp = (ExecuteMultipleResponse)service.Execute(requestWithResults); HandleErrors(emrsp); //writeit("Total Workflows Started: " + (emrCount - errorCount) + " / " + ExecutionRecordSet.Entities.Count); requestWithResults.Requests.Clear(); if (txtDelay.Text != "0") { System.Threading.Thread.Sleep(Convert.ToInt16(txtDelay.Text) * 1000); } } }
public EntityMetadataResultSet(CrmDbConnection connection, OrganizationRequest request, List<ColumnMetadata> columnMetadata) : base(connection, request, columnMetadata) { }
SdkMessages RetrieveSdkRequests(IOrganizationService service) { var fetchQuery = "<fetch distinct='true' version='1.0'>\r\n\t<entity name='sdkmessage'>\r\n\t\t<attribute name='name'/>\r\n\t\t<attribute name='isprivate'/>\r\n\t\t<attribute name='sdkmessageid'/>\r\n\t\t<link-entity name='sdkmessagepair' alias='sdkmessagepair' to='sdkmessageid' from='sdkmessageid' link-type='inner'>\r\n\t\t\t<filter>\r\n\t\t\t\t<condition alias='sdkmessagepair' attribute='endpoint' operator='eq' value='2011/Organization.svc' />\r\n\t\t\t</filter>\r\n\t\t\t<attribute name='sdkmessagepairid'/>\r\n\t\t\t<attribute name='namespace'/>\r\n\t\t\t<link-entity name='sdkmessagerequest' alias='sdkmessagerequest' to='sdkmessagepairid' from='sdkmessagepairid' link-type='outer'>\r\n\t\t\t\t<attribute name='sdkmessagerequestid'/>\r\n\t\t\t\t<attribute name='name'/>\r\n\t\t\t\t<link-entity name='sdkmessagerequestfield' alias='sdkmessagerequestfield' to='sdkmessagerequestid' from='sdkmessagerequestid' link-type='outer'>\r\n\t\t\t\t\t<attribute name='name'/>\r\n\t\t\t\t\t<attribute name='optional'/>\r\n\t\t\t\t\t<attribute name='position'/>\r\n\t\t\t\t\t<attribute name='publicname'/>\r\n\t\t\t\t\t<attribute name='clrparser'/>\r\n\t\t\t\t</link-entity>\r\n\t\t\t\t<link-entity name='sdkmessageresponse' alias='sdkmessageresponse' to='sdkmessagerequestid' from='sdkmessagerequestid' link-type='outer'>\r\n\t\t\t\t\t<attribute name='sdkmessageresponseid'/>\r\n\t\t\t\t\t<link-entity name='sdkmessageresponsefield' alias='sdkmessageresponsefield' to='sdkmessageresponseid' from='sdkmessageresponseid' link-type='outer'>\r\n\t\t\t\t\t\t<attribute name='publicname'/>\r\n\t\t\t\t\t\t<attribute name='value'/>\r\n\t\t\t\t\t\t<attribute name='clrformatter'/>\r\n\t\t\t\t\t\t<attribute name='name'/>\r\n\t\t\t\t\t\t<attribute name='position' />\r\n\t\t\t\t\t</link-entity>\r\n\t\t\t\t</link-entity>\r\n\t\t\t</link-entity>\r\n\t\t</link-entity>\r\n\t\t<link-entity name='sdkmessagefilter' alias='sdmessagefilter' to='sdkmessageid' from='sdkmessageid' link-type='inner'>\r\n\t\t\t<filter>\r\n\t\t\t\t<condition alias='sdmessagefilter' attribute='isvisible' operator='eq' value='1' />\r\n\t\t\t</filter>\r\n\t\t\t<attribute name='sdkmessagefilterid'/>\r\n\t\t\t<attribute name='primaryobjecttypecode'/>\r\n\t\t\t<attribute name='secondaryobjecttypecode'/>\r\n\t\t</link-entity>\r\n\t </entity>\r\n</fetch>"; MessagePagingInfo info = null; var pageNumber = 1; var messages = new SdkMessages(null); var request = new OrganizationRequest("ExecuteFetch"); while ((info == null) || info.HasMoreRecords) { var str2 = fetchQuery; if (info != null) { str2 = SetPagingCookie(fetchQuery, info.PagingCookig, pageNumber); } request.Parameters["FetchXml"] = str2; var response = service.Execute(request); info = SdkMessages.FromFetchResult(messages, (string) response.Results["FetchXmlResult"]); pageNumber++; } return messages; }
public SelectMultipleEntitiesOperation(List<ColumnMetadata> columnMetadata, OrganizationRequest request) { this.Columns = columnMetadata; this.Request = request; }
public bool CanExecute(OrganizationRequest request) { return request is AssignRequest; }
public CreateEntityOperation(List<ColumnMetadata> columnMetadata, OrganizationRequest request) { this.Columns = columnMetadata; this.Request = request; }
public OrganizationResponse RetrieveEntityMock(OrganizationRequest req) { return new RetrieveEntityResponse {ResponseName = "Successful"}; }
public bool CanExecute(OrganizationRequest request) { return request is RetrieveAttributeRequest; }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { throw PullRequestException.NotImplementedOrganizationRequest(request.GetType()); }
public bool CanExecute(OrganizationRequest request) { return request is PublishXmlRequest; }
public OrganizationResponse Execute(OrganizationRequest request, XrmFakedContext ctx) { var updateRequest = (UpdateRequest) request; var target = (Entity)request.Parameters["Target"]; var service = ctx.GetFakedOrganizationService(); service.Update(target); return new UpdateResponse(); }