public JsonSchema.RootObject CreateSchemas(SchemaMigrationItemViewModel schemaItem) { var schema = schemaItem.MigrationEntity; string schemaName = schema.fullNameOfSchemaToUpload; JsonSchema.RootObject schemaRootObject = new JsonSchema.RootObject(); try { string directroyPathForJsonFiles = Resources.JsonSchemaFilesLocalPath; string fileName = string.Format(directroyPathForJsonFiles, FileOperations.GetFileName(schemaName), ".json"); string schemaJsonFileContent = Newtonsoft.Json.JsonConvert.SerializeObject(schemaRootObject); FileOperations.CreateFolder(fileName); System.IO.File.WriteAllText(fileName, schemaJsonFileContent); return(schemaRootObject); } catch (Exception ex) { schemaItem.ImportStatus = MigrationStatus.Failed; schemaItem.ImportStatusText = ex.Message; TraceProvider.WriteLine(string.Format("Schema Export to Json Failed:{0}", ExceptionHelper.GetExceptionMessage(ex))); TraceProvider.WriteLine(); throw ex; } }
public void CreateCertificates(string certName, string certThumbprint) { try { X509Certificate2 partnerCert; string partnerCertBase64String; bool certFound = false; X509Certificate2Collection collection = new X509Certificate2Collection(); //BiztalkServerDetails BizTalkServerDetails = this.thisApplicationContext.GetService<BiztalkServerDetails>(); //string serverName = BizTalkServerDetails.RemoteServerName; //if (BizTalkServerDetails.UseDifferentAccount) //{ // string domain = BizTalkServerDetails.RemoteDomainName; // string username = BizTalkServerDetails.RemoteUserName; // string password = BizTalkServerDetails.RemoteUserPassword; // using (UserImpersonation user = new UserImpersonation(username, domain, password)) // { // if (user.ImpersonateValidUser()) // { //collection = GetCertificate(certThumbprint, serverName); //if (collection.Count == 0) //{ // certFound = false; //} //else //{ // certFound = true; //} //} //else //{ // throw new Exception(string.Format(@"Failed to read Certificates from the Server {0}\{1}. Invalid Credentails used to read Certificates.", domain, username)); //} // } // } //else //{ string serverName = System.Environment.MachineName; collection = GetCertificate(certThumbprint, serverName); if (collection.Count == 0) { certFound = false; } else { certFound = true; } // } if (certFound) { partnerCert = collection[0]; partnerCertBase64String = Convert.ToBase64String(partnerCert.GetRawCertData()); JsonCertificate.Rootobject certificateRootObject = new JsonCertificate.Rootobject() { name = FileOperations.GetFileName(certName), properties = new JsonCertificate.Properties() { publicCertificate = partnerCertBase64String, metadata = GenerateMetadata(certName) } }; if (partnerCert.HasPrivateKey) { //CHECK IF IT's EXPORTABLE, and ensure you write traces certificateRootObject.properties.key = new JsonCertificate.Key() { keyName = "<KeyNameHere>", keyVersion = "<KeyVersionHere>", keyVault = new JsonCertificate.KeyVault() { id = "<ResourceUriHere>" } }; //TODO: Create KeyVault Secret JSON. string keyvaultjson = this.GetKeyVaultSecretJsonForPrivateKey(partnerCert); string keyvaultfilename = FileOperations.GetKeyVaultJsonFilePath(certName + "Privatekey"); FileOperations.CreateFolder(keyvaultfilename); System.IO.File.WriteAllText(keyvaultfilename, keyvaultjson); } string fileName = FileOperations.GetCertificateJsonFilePath(certName); string partnerJsonFileContent = Newtonsoft.Json.JsonConvert.SerializeObject(certificateRootObject); FileOperations.CreateFolder(fileName); System.IO.File.WriteAllText(fileName, partnerJsonFileContent); TraceProvider.WriteLine(string.Format("Certificate {0} for partner has been succesfully exported to Json with Name {1}", certName, FileOperations.GetFileName(certName))); } else { TraceProvider.WriteLine(string.Format("Certificate Export to Json Failed. Reason : Certificate {0} Not Found in LocalCertificate store in Server {1}", certName, serverName)); throw new Exception(string.Format("Certificate {0} Not Found in LocalCertificate store in Server {1}", certName, serverName)); } } catch (Exception ex) { throw ex; } }
public JsonPartner.Rootobject CreatePartners(PartnerMigrationItemViewModel partnerItem) { var partner = partnerItem.MigrationEntity; string partnerName = partner.Name; JsonPartner.Rootobject partnerRootObject = new JsonPartner.Rootobject(); #region Certificates try { if (partner.CertificateName != null && partner.CertificateThumbprint != null) { try { certificateRequired = true; CerificateMigrator <PartnerMigrationItemViewModel> cMigrator = new CerificateMigrator <PartnerMigrationItemViewModel>(thisApplicationContext); cMigrator.CreateCertificates(partner.CertificateName, partner.CertificateThumbprint); succesfullCertificateImport = MigrationStatus.Succeeded; } catch (Exception) { certificateRequired = true; succesfullCertificateImport = MigrationStatus.Failed; } } else { certificateRequired = false; succesfullCertificateImport = MigrationStatus.NotStarted; TraceProvider.WriteLine(string.Format("No certificate is configured with the Partner")); } } catch (Exception ex) { certificateRequired = true; succesfullCertificateImport = MigrationStatus.Failed; TraceProvider.WriteLine(string.Format("Certificate Export to Json Failed:{0}", ExceptionHelper.GetExceptionMessage(ex))); } #endregion #region Partner try { var businessProfile = partner.GetBusinessProfiles().ToList <Server.BusinessProfile>(); List <Microsoft.BizTalk.B2B.PartnerManagement.BusinessIdentity> businessIdentities = new List <Microsoft.BizTalk.B2B.PartnerManagement.BusinessIdentity>(); foreach (var item in businessProfile) { businessIdentities.AddRange(item.GetBusinessIdentities().ToList()); } partnerRootObject = new JsonPartner.Rootobject() { id = "", name = FileOperations.GetFileName(partnerName), type = Resources.JsonPartnerType, properties = new JsonPartner.Properties() { partnerType = Resources.JsonPartnerTypeB2B, content = new JsonPartner.Content() { b2b = new JsonPartner.B2b() { businessIdentities = (businessIdentities.Select(delegate(BizTalk.B2B.PartnerManagement.BusinessIdentity bi) { return(new JsonPartner.Businessidentity() { qualifier = ((Microsoft.BizTalk.B2B.PartnerManagement.QualifierIdentity)bi).Qualifier, value = ((Microsoft.BizTalk.B2B.PartnerManagement.QualifierIdentity)bi).Value }); } )).ToArray() } }, createdTime = DateTime.Now, changedTime = DateTime.Now, metadata = GenerateMetadata(partnerName) } }; string directroyPathForJsonFiles = Resources.JsonPartnerFilesLocalPath; string fileName = string.Format(directroyPathForJsonFiles, FileOperations.GetFileName(partnerName), ".json"); string partnerJsonFileContent = Newtonsoft.Json.JsonConvert.SerializeObject(partnerRootObject); FileOperations.CreateFolder(fileName); System.IO.File.WriteAllText(fileName, partnerJsonFileContent); return(partnerRootObject); } catch (Exception ex) { partnerItem.ImportStatus = MigrationStatus.Failed; partnerItem.ImportStatusText = ex.Message; TraceProvider.WriteLine(string.Format("Partner Export to Json Failed:{0}", ExceptionHelper.GetExceptionMessage(ex))); TraceProvider.WriteLine(); throw ex; } #endregion }
public void CreatePartnerFiles(string partnerName, AgreementMigrationItemViewModel agreementItem) { string directroyPathForJsonFiles = Resources.MetaDataContextPath; string fileName = string.Format(directroyPathForJsonFiles, partnerName); if (!Directory.Exists(fileName)) { FileOperations.CreateFolder(fileName); } else { Directory.Delete(fileName, true); FileOperations.CreateFolder(fileName); } // Inbound Partner Details string newGuid = CreateNewGuid(); PartnerContext partnrCtxt = new PartnerContext(); partnrCtxt.id = newGuid; inboundPartnerDetails = newGuid; partnrCtxt.recordType = AppConstants.partnerDetails; partnrCtxt.description = "EDI AS2 Partner Details For " + partnerName; partnrCtxt.docKey = new Dockey() { messageFormat = agreementItem.MigrationEntity.Protocol.ToUpper(), senderQualifier = agreementItem.GuestPartnerQualifer, senderIdentifier = agreementItem.GuestPartnerId, receiverQualifier = agreementItem.HostPartnerQualifier, receiverIdentifier = agreementItem.HostPartnerId }; partnrCtxt.as2Config = new As2config() { as2From = "NA", as2To = "NA" }; partnrCtxt.preserveInterchange = new Preserveinterchange() { IB = true, PT = true }; partnrCtxt.preDecodeProcessing = new JArray(); partnrCtxt.postDecodeProcessing = new JArray(); partnrCtxt.preEncodeProcessing = new PreEncodeprocessing[0]; partnrCtxt.postEncodeProcessing = new PostEncodeprocessing[0]; partnrCtxt.epDetailId = CreateNewGuid(); fileName = fileName + partnerName + "_InboundPartnerDetails.json"; if (!File.Exists(fileName)) { File.Create(fileName).Close(); System.IO.File.WriteAllText(fileName, JObject.Parse(JsonConvert.SerializeObject(partnrCtxt)).ToString()); } // Outbound Partner Details newGuid = CreateNewGuid(); PartnerContext obpartnrCtxt = new PartnerContext(); obpartnrCtxt.id = newGuid; outboundPartnerDetails = newGuid; obpartnrCtxt.recordType = AppConstants.partnerDetails; obpartnrCtxt.description = "EDI AS2 Partner Details For " + partnerName; obpartnrCtxt.docKey = new Dockey() { messageFormat = agreementItem.MigrationEntity.Protocol.ToUpper(), senderQualifier = agreementItem.HostPartnerQualifier, senderIdentifier = agreementItem.HostPartnerId, receiverQualifier = agreementItem.GuestPartnerQualifer, receiverIdentifier = agreementItem.GuestPartnerId }; obpartnrCtxt.as2Config = new As2config() { as2From = "NA", as2To = "NA" }; obpartnrCtxt.preDecodeProcessing = new JArray(); obpartnrCtxt.postDecodeProcessing = new JArray(); obpartnrCtxt.preEncodeProcessing = new PreEncodeprocessing[0]; obpartnrCtxt.postEncodeProcessing = new PostEncodeprocessing[0]; obpartnrCtxt.epDetailId = CreateNewGuid(); fileName = string.Empty; fileName = string.Format(directroyPathForJsonFiles, partnerName); fileName = fileName + partnerName + "_OutboundPartnerDetails.json"; if (!File.Exists(fileName)) { File.Create(fileName).Close(); System.IO.File.WriteAllText(fileName, JObject.Parse(JsonConvert.SerializeObject(obpartnrCtxt)).ToString()); } }