Search code examples
c#dynamics-crmworkflow

Cant get GUID from newly created Record


With the line:

Guid AlertsId = service.Create(NewAlert);
NewAlert["new_alertguid"] = "Spennende: " + AlertsId.ToString();

I am trying to get the newly created GUID. But nothing happens. I dont get the GUID and the workflow does not fail. It does not write "Spennende" in the field neither. But I cant see how to find out what I am doing wrong.

What can I do to solve this. Do you guys see anything wrong?

Tried to insert other values in the same field.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Activities;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Workflow;

namespace WordCountWorkflow
{
    public class WordCount : CodeActivity
    {



        [Input("Hvilket felt skal endres")]
        public InArgument<string> FieldToChange { get; set; }

        [RequiredArgument]
        [Input("Tekst som skal telles")]
        public InArgument<string> InputText { get; set; }

        [Output("Antall tegn")]
        public OutArgument<int> CountOfWords { get; set; }


        protected override void Execute(CodeActivityContext context)
        {
            this.CountOfWords.Set(
                context,
                this.InputText.Get<string>(context).Split(
                    new char[] { ' ', '\r', '\n' },
                    StringSplitOptions.RemoveEmptyEntries).Length);
            //------------------
            ITracingService tracingService = context.GetExtension<ITracingService>();
            IWorkflowContext workflowContext = context.GetExtension<IWorkflowContext>();
            IOrganizationServiceFactory serviceFactory = context.GetExtension<IOrganizationServiceFactory>();
            IOrganizationService service = serviceFactory.CreateOrganizationService(workflowContext.UserId);
            Entity NewAlert = new Entity("new_alerts");
            NewAlert["new_name"] = "Navn på alert";
            NewAlert["new_message"] = "Her er beskjed";
            Guid AlertsId = service.Create(NewAlert);
            NewAlert["new_alertguid"] = "Spennende: " + AlertsId.ToString();
        }
    }
}

I tried to change to this:

    ITracingService tracingService = context.GetExtension<ITracingService>();
    IWorkflowContext workflowContext = context.GetExtension<IWorkflowContext>();
    IOrganizationServiceFactory serviceFactory = context.GetExtension<IOrganizationServiceFactory>();
    IOrganizationService service = serviceFactory.CreateOrganizationService(workflowContext.UserId);
    Entity NewAlert = new Entity("new_alerts");
    Guid AlertsId = service.Create(NewAlert);
    NewAlert["new_name"] = "Navn på alert";
    NewAlert["new_message"] = "Her er beskjed " + AlertsId.ToString();
    NewAlert["new_shortmessage"] = "Spennende: " + AlertsId.ToString();

But then everything stopped. And none of the fields where filled out.


Solution

  • You can use below code with you creating guid for a record

    Entity NewAlert = new Entity("new_alerts");
    NewAlert.Id = Guid.NewGuid();
    NewAlert["new_name"] = "Navn på alert";
    NewAlert["new_message"] = "Her er beskjed";            
    NewAlert["new_alertguid"] = "Spennende: " + NewAlert.Id.ToString();
    Guid AlertsId = service.Create(NewAlert);
    

    OR you can create new Object and then update it.

    Entity NewAlert = new Entity("new_alerts");
    NewAlert["new_name"] = "Navn på alert";
    NewAlert["new_message"] = "Her er beskjed";
    Guid AlertsId = service.Create(NewAlert);        
    Entity CompleteNewAlert = new Entity("new_alerts",AlertsId );
    CompleteNewAlert ["new_alertguid"] = "Spennende: " + AlertsId.ToString();
    service.Update(CompleteNewAlert );