/// <summary>
        /// Returns a list of custom defect properties.
        /// </summary>
        /// <returns>List of custom properties</returns>
        protected List <CustomDefectProperty> GetCustomDefectProperties(Dictionary <string, string> defectInfos)
        {
            List <CustomDefectProperty> result = new List <CustomDefectProperty>();

            string[] customProperties =
                GetDefectIntegrationSetting("CustomDefectProperties", defectInfos)
                .Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string customProperty in customProperties)
            {
                CustomDefectProperty property = new CustomDefectProperty();

                string propertyNameID;

                int position = customProperty.IndexOf('=');
                if (position > 0)
                {
                    property.value = customProperty.Substring(position + 1);
                    propertyNameID = customProperty.Substring(0, position);
                }
                else
                {
                    propertyNameID = customProperty;
                }
                position = propertyNameID.IndexOf(':');
                if (position > 0)
                {
                    property.name = propertyNameID.Substring(0, position);
                    property.id   = propertyNameID.Substring(position + 1);
                }
                else
                {
                    property.name = property.id = propertyNameID;
                }

                if (defectInfos.ContainsKey(ExecutionListProperty + property.name))
                {
                    property.value = defectInfos[ExecutionListProperty + property.name];
                }

                if (property.name != string.Empty && property.value != null)
                {
                    result.Add(property);
                }
            }
            return(result);
        }
        /// <summary>
        /// Returns a list of custom defect properties.
        /// </summary>
        /// <returns>List of custom properties</returns>
        protected List<CustomDefectProperty> GetCustomDefectProperties( Dictionary<string, string> defectInfos ) {
            List<CustomDefectProperty> result = new List<CustomDefectProperty>();

            string[] customProperties =
                GetDefectIntegrationSetting("CustomDefectProperties", defectInfos)
                    .Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);
            foreach (string customProperty in customProperties) {
                CustomDefectProperty property = new CustomDefectProperty();

                string propertyNameID;

                int position = customProperty.IndexOf('=');
                if (position > 0) {
                    property.value = customProperty.Substring(position + 1);
                    propertyNameID = customProperty.Substring(0, position);
                }
                else {
                    propertyNameID = customProperty;
                }
                position = propertyNameID.IndexOf(':');
                if (position > 0) {
                    property.name = propertyNameID.Substring(0, position);
                    property.id = propertyNameID.Substring(position + 1);
                }
                else {
                    property.name = property.id = propertyNameID;
                }

                if (defectInfos.ContainsKey(ExecutionListProperty + property.name)) {
                    property.value = defectInfos[ExecutionListProperty + property.name];
                }

                if (property.name != string.Empty && property.value != null) {
                    result.Add(property);
                }
            }
            return result;
        }