private void ConvertSaveActions(SCItem form, string tracking, SCItem buttonItem, bool saveToDatabaseActionCreated) { var formSaveActionField = form.Fields .FirstOrDefault(field => field.FieldId == new Guid(FormConstants.FormSaveActionFieldId)); var formSaveActions = formSaveActionField?.Value; if (!string.IsNullOrEmpty(formSaveActions)) { var saveActionElements = XmlHelper.GetXmlElementNodeList(XmlHelper.GetXmlElementNode(formSaveActions, "g").InnerXml, "li"); List <SaveAction> saveActionItems = new List <SaveAction>(); if (saveActionElements != null) { foreach (XmlNode saveActionElement in saveActionElements) { if (saveActionElement.Attributes != null) { var saveAction = new SaveAction() { Id = saveActionElement.Attributes["id"].Value, UnicId = saveActionElement.Attributes["unicid"].Value, Parameters = XmlHelper.GetXmlElementValue(saveActionElement.InnerXml, "parameters") }; saveActionItems.Add(saveAction); } } foreach (var saveActionItem in saveActionItems) { if (saveActionItem.Id == FormConstants.FormSaveAction_RegisterCampaignValue) { var trackingCampaign = XmlHelper.GetXmlElementNodeList(tracking, "campaign"); var xmlAttributeCollection = trackingCampaign[0].Attributes; if (xmlAttributeCollection != null) { var trackingCampaignId = trackingCampaign.Count > 0 ? xmlAttributeCollection["id"]?.Value : null; if (trackingCampaignId != null) { if (!_appSettings.enableReferencedItemCheck || _destMasterRepository.ItemExists(new Guid(trackingCampaignId))) { // Create Trigger Campaign Activity Save Action var triggerCampaignActivityValues = new Dictionary <Guid, string>(); triggerCampaignActivityValues.Add(new Guid(SubmitActionConstants.SubmitActionFieldId), SubmitActionConstants.SubmitActionField_TriggerCampaignActivityActionValue); triggerCampaignActivityValues.Add(new Guid(SubmitActionConstants.ParametersFieldId), string.Format("{{\"referenceId\":\"{0}\"}}", trackingCampaignId)); ConvertFieldsToSubmitActionItem("Trigger Campaign Activity", triggerCampaignActivityValues, buttonItem); } } } } else if (!saveToDatabaseActionCreated && saveActionItem.Id == FormConstants.FormSaveAction_SaveToDatabaseValue) { ConvertSaveDataAction(form, buttonItem); } else { // Convert other save actions if mapped in AppSettings.json var submitAction = _appSettings.submitActions.FirstOrDefault(s => s.sourceSaveActionId == Guid.Parse(saveActionItem.Id)); if (submitAction != null) { IFieldConverter converter = IoC.CreateInstance(submitAction.destParametersConverterType); var submitActionValues = new Dictionary <Guid, string>(); submitActionValues.Add(new Guid(SubmitActionConstants.SubmitActionFieldId), submitAction.destSubmitActionFieldValue); try { submitActionValues.Add(new Guid(SubmitActionConstants.ParametersFieldId), converter.ConvertValue( HttpUtility.HtmlDecode((saveActionItem.Parameters.Replace("&", "&"))))); } catch (Exception ex) { _logger.Log(new LogEntry(LoggingEventType.Error, string.Format("SubmitConverter - Failed to parse Xml value of Parameters field of Submit Action. FormID = {0} - FieldID = {1} - FieldValue = {2}", form.ID, formSaveActionField.Id, saveActionItem.Parameters), ex)); } var destSubmitActionItemId = ConvertFieldsToSubmitActionItem(submitAction.destSubmitActionItemName, submitActionValues, buttonItem); // Only if Save Action is Send Email if (submitAction.sourceSaveActionId == Guid.Parse(FormConstants.FormSaveAction_SendEmailValue)) { CreateAddressBookSender(destSubmitActionItemId); } } else { _analysisReporter.AddUnmappedSaveAction(formSaveActionField, form.ID, Guid.Parse(saveActionItem.Id)); } } } } } }