/// <summary>
        /// Interface for providing XML export.
        /// </summary>
        /// <remarks>
        /// This is the entry point for export requests that come via the console. c.f. EntityManager.ExportEntity.
        /// </remarks>
        /// <param name="entityIds">ID of entity to export.</param>
        /// <param name="xmlWriter">Xml Writer to write the exported entity to.</param>
        /// <param name="settings">Export settings.</param>
        public void GenerateXml(IEnumerable <long> entityIds, XmlWriter xmlWriter, EntityXmlExportSettings settings)
        {
            if (xmlWriter == null)
            {
                throw new ArgumentNullException(nameof(xmlWriter));
            }
            if (settings == null)
            {
                settings = EntityXmlExportSettings.Default;
            }

            var context = new ProcessingContext( );

            context.Report.StartTime = DateTime.Now;

            long tenantId = RequestContext.TenantId;

            /////
            // Create source to load app data from tenant
            /////
            using (IDataTarget target = CreateDataTarget(xmlWriter, settings))
            {
                ExportEntity(tenantId, entityIds, target, context, true);
            }

            context.Report.EndTime = DateTime.Now;
        }
 /// <summary>
 /// Create a data target object.
 /// </summary>
 /// <param name="xmlWriter"></param>
 /// <param name="settings"></param>
 /// <returns></returns>
 private IDataTarget CreateDataTarget(XmlWriter xmlWriter, EntityXmlExportSettings settings)
 {
     return(new XmlPackageTarget
     {
         XmlWriter = xmlWriter,
         NameResolver = new UpgradeMapNameResolver( ),
         EntityXmlExportSettings = settings,
         Format = Format.XmlVer2
     });
 }
        /// <summary>
        /// Interface for providing XML export.
        /// </summary>
        /// <param name="entityIds">ID of entity to export.</param>
        /// <param name="textWriter">Xml Writer to write the exported entity to.</param>
        /// <param name="settings">Export settings.</param>
        public string GenerateXml(IEnumerable <long> entityIds, EntityXmlExportSettings settings)
        {
            XmlWriterSettings xmlWriterSettings = GetXmlWriterSettings( );

            using (StringWriter stringWriter = new StringWriter( ))
                using (XmlWriter xmlWriter = XmlWriter.Create(stringWriter, xmlWriterSettings))
                {
                    GenerateXml(entityIds, xmlWriter, settings);

                    xmlWriter.Flush( );
                    stringWriter.Flush( );
                    return(stringWriter.ToString( ));
                }
        }