public ActionInitialising InitialiseAction <T>( WorkflowAction workflowAction, DateTime?expiryDate, DateTime?executeOnDate = null) where T : Workflow { var workflowType = typeof(T); var workflowName = workflowType.Name; var actionType = workflowAction.GetType(); var actionName = actionType.Name; if (expiryDate < DateTime.UtcNow || expiryDate is null) { expiryDate = DateTime.UtcNow.AddDays(1); } var workflow = StateflowDbContext .Queries .FetchWorkflowByName(this, workflowName); var actionData = workflowAction.GetData(); var output = JsonConvert.SerializeObject(actionData); var actionEntity = new WorkflowActionEntity { Uuid = Guid.NewGuid(), WorkflowUuid = workflow.Uuid, Retries = 0, ActionBody = output, ActionName = actionName, ActionEvent = string.Empty, IsComplete = false, DateToExecute = executeOnDate, DateExpires = expiryDate, DateCreated = DateTime.UtcNow, DateModified = DateTime.UtcNow, DateProcessed = null }; return(new ActionInitialising(actionEntity, this)); }