/// <summary>
        /// Processes the work item. pushes give document files for tagging
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void ProcessMessage(PipeMessageEnvelope message)
        {
            Send(message);
            var documentCollection = message.Body as DocumentCollection;

            documentCollection.ShouldNotBe(null);
            documentCollection.documents.ShouldNotBe(null);
            documentCollection.documents.ShouldNotBeEmpty();
            var nativeSet =
                documentCollection.documents.FindAll(
                    d => (d.docType == DocumentsetType.NativeSet));

            try
            {
                IDictionary <int, List <BulkDocumentInfoBEO> > tags = new Dictionary <int, List <BulkDocumentInfoBEO> >();
                IDictionary <int, string> tagKeys = new Dictionary <int, string>();
                //Converting to RVWDocument from Document detail object
                var documents = ToDocumentBeoList(nativeSet);
                foreach (var document in documents)
                {
                    var bulkDocumentInfoBEO = new BulkDocumentInfoBEO
                    {
                        DocumentId        = document.DocumentId,
                        DuplicateId       = document.DuplicateId,
                        FromOriginalQuery = true,
                        CreatedBy         = _jobParams.CreatedBy,
                        FamilyId          = document.FamilyId
                    };

                    foreach (var tag in document.Tags)
                    {
                        if (tags.ContainsKey(tag.TagId))
                        {
                            var bulkDocumentInfoBeOs = tags.FirstOrDefault(t => t.Key == tag.TagId).Value;
                            bulkDocumentInfoBeOs.Add(bulkDocumentInfoBEO);
                        }
                        else
                        {
                            var bulkDocumentInfoBeOs = new List <BulkDocumentInfoBEO> {
                                bulkDocumentInfoBEO
                            };
                            tags.Add(tag.TagId, bulkDocumentInfoBeOs);
                            tagKeys.Add(tag.TagId, tag.TagName);
                        }
                    }
                }

                BulkTagging(tags, tagKeys);
                LogTaggingMessage(nativeSet, true, TagSuccesMessage);
            }
            catch (Exception ex)
            {
                LogTaggingMessage(nativeSet, false, TagFailureMessage);
                ReportToDirector(ex.ToUserString());
                ex.Trace().Swallow();
            }
        }
        /// <summary>
        /// Processes the work item. pushes give document files for tagging
        /// </summary>
        /// <param name="message">The message.</param>
        protected override void ProcessMessage(PipeMessageEnvelope message)
        {
            Send(message);
            var documentCollection = message.Body as DocumentCollection;
            documentCollection.ShouldNotBe(null);
            documentCollection.documents.ShouldNotBe(null);
            documentCollection.documents.ShouldNotBeEmpty();
            var nativeSet =
                    documentCollection.documents.FindAll(
                        d => (d.docType == DocumentsetType.NativeSet));
            
            try
            {
                IDictionary<int, List<BulkDocumentInfoBEO>> tags = new Dictionary<int, List<BulkDocumentInfoBEO>>();
                IDictionary<int, string> tagKeys = new Dictionary<int, string>();
                //Converting to RVWDocument from Document detail object
                var documents = ToDocumentBeoList(nativeSet);
                foreach (var document in documents)
                {
                    var bulkDocumentInfoBEO = new BulkDocumentInfoBEO
                    {
                        DocumentId = document.DocumentId,
                        DuplicateId = document.DuplicateId,
                        FromOriginalQuery = true,
                        CreatedBy = _jobParams.CreatedBy,
                        FamilyId = document.FamilyId
                    };

                    foreach (var tag in document.Tags)
                    {
                        if (tags.ContainsKey(tag.TagId))
                        {
                            var bulkDocumentInfoBeOs = tags.FirstOrDefault(t => t.Key == tag.TagId).Value;
                            bulkDocumentInfoBeOs.Add(bulkDocumentInfoBEO);
                        }
                        else
                        {
                            var bulkDocumentInfoBeOs = new List<BulkDocumentInfoBEO> {bulkDocumentInfoBEO};
                            tags.Add(tag.TagId, bulkDocumentInfoBeOs);
                            tagKeys.Add(tag.TagId, tag.TagName);
                        }
                    }
                }

                BulkTagging(tags, tagKeys);
                LogTaggingMessage(nativeSet, true, TagSuccesMessage);
            }
            catch (Exception ex)
            {
                LogTaggingMessage(nativeSet, false, TagFailureMessage);
                ReportToDirector(ex.ToUserString());
                ex.Trace().Swallow();
            }
        }