public override List<ArtefactInfo> Generate_Artefact()
        {
            List<ArtefactInfo> RetVal;
            ArtefactInfo Artefact;
            SDMXObjectModel.Registry.NotifyRegistryEventType NotifyRegistryEvent;

            RetVal = null;

            try
            {
                NotifyRegistryEvent = new SDMXObjectModel.Registry.NotifyRegistryEventType();

                NotifyRegistryEvent.EventTime = this._eventTime;
                NotifyRegistryEvent.SubscriptionURN = this._subscriptionURN;
                NotifyRegistryEvent.EventAction = this._action;

                if (this._registrationNotificationFlag == true)
                {
                    NotifyRegistryEvent.Item = this._registrationId;
                    NotifyRegistryEvent.ItemElementName = NotifyRegistryEventChoiceType.RegistrationID;

                    NotifyRegistryEvent.Item1 = new RegistrationEventType();
                    ((RegistrationEventType)NotifyRegistryEvent.Item1).Registration = this._registration;
                }
                else
                {
                    NotifyRegistryEvent.Item = string.Empty;
                    NotifyRegistryEvent.ItemElementName = NotifyRegistryEventChoiceType.ObjectURN;

                    NotifyRegistryEvent.Item1 = new StructuralEventType();
                    ((StructuralEventType)NotifyRegistryEvent.Item1).Item = new StructuresType();

                    foreach (ArtefactRef ArtefactRef in this._artefacts)
                    {
                        if (ArtefactRef.ArtefactType == ArtefactTypes.DSD)
                        {
                            if (((StructuralEventType)NotifyRegistryEvent.Item1).Item.DataStructures == null)
                            {
                                ((StructuralEventType)NotifyRegistryEvent.Item1).Item.DataStructures = new List<SDMXObjectModel.Structure.DataStructureType>();
                            }

                            ((StructuralEventType)NotifyRegistryEvent.Item1).Item.DataStructures.Add(new SDMXObjectModel.Structure.DataStructureType(ArtefactRef.Id, ArtefactRef.AgencyId, ArtefactRef.Version, ArtefactRef.Name, ArtefactRef.Description, ArtefactRef.Language, null));
                        }

                        if (ArtefactRef.ArtefactType == ArtefactTypes.MSD)
                        {
                            if (((StructuralEventType)NotifyRegistryEvent.Item1).Item.MetadataStructures == null)
                            {
                                ((StructuralEventType)NotifyRegistryEvent.Item1).Item.MetadataStructures = new List<SDMXObjectModel.Structure.MetadataStructureType>();
                            }

                            ((StructuralEventType)NotifyRegistryEvent.Item1).Item.MetadataStructures.Add(new SDMXObjectModel.Structure.MetadataStructureType(ArtefactRef.Id, ArtefactRef.AgencyId, ArtefactRef.Version, ArtefactRef.Name, ArtefactRef.Description, ArtefactRef.Language, null));
                        }
                    }
                }

                // Preparing Artefact and saving
                Artefact = this.Prepare_ArtefactInfo_From_NotifyRegistryEvent(NotifyRegistryEvent);
                this.Add_ArtefactInfo_To_List(ref RetVal, Artefact);
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
            }

            return RetVal;
        }
 public NotifyRegistryEventType()
 {
     this.notifyRegistryEventField = new SDMXObjectModel.Registry.NotifyRegistryEventType();
     this.headerField = new BasicHeaderType();
 }