private void TrackWorkflowInstanceAbortedRecord(WorkflowInstanceRecord record)
        {
            WorkflowInstanceAbortedRecord aborted = record as WorkflowInstanceAbortedRecord;

            if (aborted.WorkflowDefinitionIdentity == null)
            {
                if (WfEtwTrackingEventSource.Instance.WorkflowInstanceAbortedRecordIsEnabled())
                {
                    WfEtwTrackingEventSource.Instance.WorkflowInstanceAbortedRecord(aborted.InstanceId, aborted.RecordNumber,
                                                                                    aborted.EventTime, aborted.ActivityDefinitionId, aborted.Reason,
                                                                                    aborted.HasAnnotations ? JsonConvert.SerializeObject(aborted.Annotations, Formatting.Indented) : emptyItemsTag,
                                                                                    this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name, this.ApplicationReference);
                }
            }
            else
            {
                if (WfEtwTrackingEventSource.Instance.WorkflowInstanceAbortedRecordWithIdIsEnabled())
                {
                    WfEtwTrackingEventSource.Instance.WorkflowInstanceAbortedRecordWithId(aborted.InstanceId, aborted.RecordNumber,
                                                                                          aborted.EventTime, aborted.ActivityDefinitionId, aborted.Reason,
                                                                                          aborted.HasAnnotations ? JsonConvert.SerializeObject(aborted.Annotations, Formatting.Indented) : emptyItemsTag,
                                                                                          this.TrackingProfile == null ? string.Empty : this.TrackingProfile.Name == null ? string.Empty : this.TrackingProfile.Name,
                                                                                          aborted.WorkflowDefinitionIdentity.ToString(), this.ApplicationReference);
                }
            }
        }
        public void PushDataToTraceManager(TrackingRecord data)
        {
            if (this.PushToTrackingDataManager != true)
            {
                return;
            }

            TraceEventType eventType = TraceEventType.Information;

            if (data is ActivityScheduledRecord)
            {
                ActivityScheduledRecord record = (ActivityScheduledRecord)data;
                string displayName             = record.Child.Name;
                if (this.TestTraceManager.TraceFilter.Contains(displayName))
                {
                    return;
                }
                AddActivityTrace(eventType, record.InstanceId, displayName, ActivityInstanceState.Executing, record);
            }
            else if (data is ActivityStateRecord)
            {
                ActivityStateRecord record = (ActivityStateRecord)data;
                if (TryConvertToEnum(record.State, out ActivityInstanceState state))
                {
                    string displayName = record.Activity.Name;
                    if (this.TestTraceManager.TraceFilter.Contains(displayName))
                    {
                        return;
                    }
                    AddActivityTrace(eventType, record.InstanceId, displayName, state, record);
                }
            }
            else if (data is WorkflowInstanceAbortedRecord)
            {
                WorkflowInstanceAbortedRecord record = (WorkflowInstanceAbortedRecord)data;
                AddWorkflowInstanceAbortedTrace(eventType, record.InstanceId, record.Reason);
            }
            //else if (data is WorkflowInstanceUpdatedRecord)
            //{
            //    WorkflowInstanceUpdatedRecord record = (WorkflowInstanceUpdatedRecord)data;
            //    AddWorkflowInstanceUpdatedTrace(eventType, record.InstanceId, record.OriginalDefinitionIdentity, record.WorkflowDefinitionIdentity, record.State, record.BlockingActivities, record.IsSuccessful);
            //}

            else if (data is WorkflowInstanceRecord)
            {
                WorkflowInstanceRecord record = (WorkflowInstanceRecord)data;
                WorkflowInstanceState  state  = (WorkflowInstanceState)Enum.Parse(typeof(WorkflowInstanceState), record.State);
                //these are new states that got added as part of the DCR = 109342, we do not contain them in the expceted states, hence
                //explicitly removing them. have separate test cases to test the states.
                if ((state == WorkflowInstanceState.Suspended) ||
                    (state == WorkflowInstanceState.Unsuspended))
                {
                    return;
                }

                AddWorkflowInstanceTrace(eventType, record.InstanceId, record.WorkflowDefinitionIdentity, state);
            }
            else if (data is BookmarkResumptionRecord record)
            {
                AddBookmarkResumptionTrace(eventType, record.InstanceId, record.Owner.Name, record.BookmarkName,
                                           record.BookmarkScope);
            }
        }