public async Task ReceiveEditOrderCommand(object sender, Core.Document.PreviewDocument document)
        {
            if (document != null)
            {
                if (ViewModelRequestingDocument != null)
                {
                    ViewModelRequestingDocument.ReceiveData(SelectedDocument);
                    ParentViewModel.SelectedContent = ViewModelRequestingDocument.TabContent;
                    ViewModelRequestingDocument = null;
                }
                else
                {
                    var list = from factories in documentFactories where factories.DocumentType == document.DocumentType select factories;
                    Core.Document.Document loadingDocument;
                    if (list.Count() > 0)
                    {
                        try
                        {
                            var factory = list.First();

                            loadingDocument = factory.GetNewDocument();
                            loadingDocument.DocumentID = document.DocumentID;
                            loadingDocument = await ParentViewModel.Database.GetDocument(loadingDocument);

                            var documentEditViewModel = new UI.DocumentView.Contextual.DocumentEditViewModel(this, loadingDocument, false);
                            foreach (var tab in factory.GetEditContentTabs())
                            {
                                documentEditViewModel.EditContentTabs.Add(tab);
                            }
                            documentEditViewModel.ExportClass = ParentViewModel.SettingsTabViewModel.GetPreferedExportClass(loadingDocument);
                            await documentEditViewModel.LoadData();
                            ParentViewModel.AddTabContentViewModel(documentEditViewModel);
                            documentEditViewModel.RibbonTabItem.IsSelected = true;

                            foreach (var observer in registeredObservers)
                                observer.ReceiveDocumentEditViewModel(documentEditViewModel);
                        }
                        catch (Exception e)
                        {
                            logger.ErrorException("Error loading document. Sender was " + sender.ToString(), e);
                        }
                    }
                    else
                    {
                        var ErrorNotification = new Controls.Notification.Notification();
                        ErrorNotification.ImageUrl = "..\\..\\Images\\appbar.app.remove.png";
                        ErrorNotification.Title = "Fehler beim Laden";
                        ErrorNotification.Message = "Für " + SelectedDocument.DocumentType + " existiert kein registrierter Dienst.";
                        ParentViewModel.NotificationManager.ShowNotification(ErrorNotification);
                    }
                }
            }
        }
        /// <summary>
        /// Create a new <see cref="Document"/>
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="DocoumentType"></param>
        /// <returns></returns>
        public async Task ReceiveNewDocumentCommand(object sender, string DocumentType)
        {
            var list = from factories in documentFactories where factories.DocumentType == DocumentType select factories;
            if (list.Count() > 0)
            {
                var factory = list.First();
                var document = factory.GetNewDocument();
                var documentEditViewModel = new UI.DocumentView.Contextual.DocumentEditViewModel(this, document, true);
                foreach (var tab in factory.GetEditContentTabs())
                    documentEditViewModel.EditContentTabs.Add(tab);

                documentEditViewModel.ExportClass = ParentViewModel.SettingsTabViewModel.GetPreferedExportClass(document);
                await documentEditViewModel.LoadData();
                ParentViewModel.AddTabContentViewModel(documentEditViewModel);
                documentEditViewModel.RibbonTabItem.IsSelected = true;

                foreach (var observer in registeredObservers)
                    observer.ReceiveDocumentEditViewModel(documentEditViewModel);
            }
            else
            {
                var ErrorNotification = new Controls.Notification.Notification();
                ErrorNotification.ImageUrl = "..\\..\\Images\\appbar.app.remove.png";
                ErrorNotification.Title = "Fehler beim Laden";
                ErrorNotification.Message = "Für " + DocumentType + " existiert kein registrierter Dienst.";
                ParentViewModel.NotificationManager.ShowNotification(ErrorNotification);
            }
        }