/// <summary>
        /// Upgrade from SSIS 2008 to 2012/2014
        /// </summary>
        /// <param name="pipelineVersion">components pipeline verion</param>
        public override void PerformUpgrade(int pipelineVersion)
        {
            try
            {
                if (LineageMapping.NeedsMapping())
                {
                    InitProperties(false);

                    foreach (ColumnConfig config in _IsagCustomProperties.ColumnConfigList)
                    {
                        if (string.IsNullOrEmpty(config.CustomId))
                        {
                            config.CustomId = Guid.NewGuid().ToString();
                        }
                        AddInputColumnCustomProperty(config.InputColumnName, config.CustomId, LineageMapping.IdPropertyName);
                    }

                    LineageMapping.UpdateInputIdProperties(this.ComponentMetaData, _IsagCustomProperties);
                    _IsagCustomProperties.Save(this.ComponentMetaData);
                }

                DtsPipelineComponentAttribute attr =
                    (DtsPipelineComponentAttribute)Attribute.GetCustomAttribute(this.GetType(), typeof(DtsPipelineComponentAttribute), false);
                ComponentMetaData.Version = attr.CurrentVersion;
            }
            catch (Exception ex)
            {
                bool cancel = false;
                this.ComponentMetaData.FireError(0, "DataConverter Upgrade", ex.ToString(), "", 0, out cancel);
                throw (ex);
            }
        }
        /// <summary>
        /// Reiniitalized the components metadata
        /// </summary>
        public override void ReinitializeMetaData()
        {
            base.ReinitializeMetaData();
            this.ComponentMetaData.RemoveInvalidInputColumns();
            InitProperties(false);
            LineageMapping.UpdateInputIdProperties(ComponentMetaData, _IsagCustomProperties);

            _IsagCustomProperties.RebuildMappings(ComponentMetaData, _events);
        }
        /// <summary>
        /// Validates the component metadata
        /// </summary>
        /// <returns>Is component configuration valid?</returns>
        public override DTSValidationStatus Validate()
        {
            InitProperties(false);
            LineageMapping.UpdateInputIdProperties(ComponentMetaData, _IsagCustomProperties);

            DTSValidationStatus status = base.Validate();

            if (status != DTSValidationStatus.VS_ISVALID)
            {
                return(status);
            }

            if (!_IsagCustomProperties.IsValid(ComponentMetaData, _events))
            {
                return(DTSValidationStatus.VS_NEEDSNEWMETADATA);
            }

            if (!this.ComponentMetaData.AreInputColumnsValid)
            {
                return(DTSValidationStatus.VS_NEEDSNEWMETADATA);
            }

            return(DTSValidationStatus.VS_ISVALID);
        }