public MessageTemplate CopyMessageTemplate(MessageTemplate messageTemplate) { if (messageTemplate == null) { throw new ArgumentNullException("messageTemplate"); } var mtCopy = new MessageTemplate { Name = messageTemplate.Name, BccEmailAddresses = messageTemplate.BccEmailAddresses, Subject = messageTemplate.Subject, Body = messageTemplate.Body, IsActive = messageTemplate.IsActive, AttachedDownloadId = messageTemplate.AttachedDownloadId, EmailAccountId = messageTemplate.EmailAccountId, LimitedToStores = messageTemplate.LimitedToStores, }; InsertMessageTemplate(mtCopy); var languages = _languageService.GetAllLanguages(true); //localization foreach (var lang in languages) { var bccEmailAddresses = messageTemplate.GetLocalized(x => x.BccEmailAddresses, lang.Id, false, false); if (!String.IsNullOrEmpty(bccEmailAddresses)) { _localizedEntityService.SaveLocalizedValue(mtCopy, x => x.BccEmailAddresses, bccEmailAddresses, lang.Id); } var subject = messageTemplate.GetLocalized(x => x.Subject, lang.Id, false, false); if (!String.IsNullOrEmpty(subject)) { _localizedEntityService.SaveLocalizedValue(mtCopy, x => x.Subject, subject, lang.Id); } var body = messageTemplate.GetLocalized(x => x.Body, lang.Id, false, false); if (!String.IsNullOrEmpty(body)) { _localizedEntityService.SaveLocalizedValue(mtCopy, x => x.Body, body, lang.Id); } var emailAccountId = messageTemplate.GetLocalized(x => x.EmailAccountId, lang.Id, false, false); if (emailAccountId > 0) { _localizedEntityService.SaveLocalizedValue(mtCopy, x => x.EmailAccountId, emailAccountId, lang.Id); } } //store mapping var selectedStoreIds = _storeMappingService.GetStoreIdsWithAccess(messageTemplate); foreach (var id in selectedStoreIds) { _storeMappingService.InsertStoreMapping(mtCopy, id); } return(mtCopy); }