locked
returning target ID on crm 4 custom activity RRS feed

  • Question

  • I just want a simple custom workflow activity to return the accounted (guid value) so I can pass it to another activity like an email. this is the code that I am using . it is pretty simple but is not working

    I need to run it "ON DEMAND", so, I would expect it would get at least the accountId of my selected record

    the activity is appearing on the workflow wizard but when I use it, my workflow fails.

    am I doing something wrong?

    [CrmWorkflowActivity("Return accountid")]
        public partial class RetrieveContactIDActivity : Activity
        {
    
            public static DependencyProperty ResponseProperty = DependencyProperty.Register("Response", typeof(string), typeof(RetrieveContactIDActivity));
            [CrmOutput("ResponseId")]
            [CrmReferenceTarget("account")]
            public string Response
            {
                get
                {
                    return (string)base.GetValue(ResponseProperty);
                }
                set
                {
                    base.SetValue(ResponseProperty, value);
                }
            }
            
            protected override ActivityExecutionStatus Execute(ActivityExecutionContext executionContext)
            {
    
                // Get the context service.
                IContextService contextService = (IContextService)executionContext.GetService(typeof(IContextService));
                IWorkflowContext context = contextService.Context;
                ICrmService crmService = context.CreateCrmService(true);
    
               
                try
                {
    
                    if (context.InputParameters.Properties.Contains("Target") && context.InputParameters.Properties["Target"] is DynamicEntity)
                    {
                        
                        DynamicEntity entity = context.InputParameters.Properties["Target"] as DynamicEntity;
    
                        if (entity.Properties.Contains("contactid"))
                        {
                            Response = ((Key)entity.Properties["contactid"]).Value.ToString();
    
                        }
                        
    
                        if (entity.Properties.Contains("id"))
                        {
                            Response = ((Key)entity.Properties["contactid"]).Value.ToString();
    
                        }                    
                    }
                }
                catch (SoapException ex)            {
                   
                    //logger.LogError(ex.Detail.InnerText);
                }
                catch (Exception ex)            {
                    
                    //logger.LogError(ex.Message);
                }
    
                return base.Execute(executionContext);
            }
        }

    Tuesday, September 3, 2013 9:00 AM