This is quite simple and follow the general behind the scenes pattern Mediachase use.
Expected result
To programmatically register template references in the commerce manager
Code
// Get all templates Mediachase.Cms.Dto.TemplateDto templateDto = Mediachase.Cms.Managers.DictionaryManager.GetTemplateDto(); string newTemplateName = "PromotionTemplate"; string newTemplateFriendlyName = "Promotion Template"; // Check if the template exist if (!templateDto.main_Templates.Any(x => x.Name.Equals(newTemplateName, StringComparison.InvariantCultureIgnoreCase))) { // Create empty template dto templateDto = new Mediachase.Cms.Dto.TemplateDto(); Mediachase.Cms.Dto.TemplateDto.main_TemplatesRow row = null; row = templateDto.main_Templates.Newmain_TemplatesRow(); row.ApplicationId = Mediachase.Cms.CmsConfiguration.Instance.ApplicationId; row.Name = newTemplateName; row.FriendlyName = newTemplateFriendlyName; row.Path = string.Format("~/Templates/DisplayTemplates/{0}.ascx", newTemplateName); row.TemplateType = "Entry"; row.LanguageCode = "en-us"; if (row.RowState == DataRowState.Detached) templateDto.main_Templates.Rows.Add(row); // Save any changes if (templateDto.HasChanges()) Mediachase.Cms.Managers.DictionaryManager.SaveTemplateDto(templateDto); }