diff --git a/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/PublishXrmThemeCommand.cs b/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/PublishXrmThemeCommand.cs
new file mode 100644
index 00000000..f4a16bb8
--- /dev/null
+++ b/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/PublishXrmThemeCommand.cs
@@ -0,0 +1,82 @@
+using System;
+using System.Management.Automation;
+using Microsoft.Crm.Sdk.Messages;
+using Microsoft.Xrm.Sdk;
+using Xrm.Framework.CI.PowerShell.Cmdlets.Common;
+using System.Linq;
+using Microsoft.Xrm.Sdk.Messages;
+using Microsoft.Xrm.Sdk.Query;
+
+namespace Xrm.Framework.CI.PowerShell.Cmdlets
+{
+ ///
+ /// Publishes a Dynamics Theme
+ /// The Publish-XrmTheme cmdlet publishes a Dynamics Theme.
+ ///
+ ///
+ /// C:\PS>Publish-XrmTheme -ThemeId $themeId
+ /// Publishes a theme.
+ ///
+ /// PublishTheme.
+ [Cmdlet(VerbsData.Publish, "XrmTheme")]
+ public class PublishXrmThemeCommand : XrmCommandBase
+ {
+ #region Parameters
+
+ ///
+ /// The Id of the Theme to publish.
+ ///
+ [Parameter(Mandatory = false)]
+ public Guid? ThemeId { get; set; }
+
+ [Parameter(Mandatory = false)]
+ public string ThemeName { get; set; }
+
+ #endregion
+
+ #region Process Record
+
+ protected override void ProcessRecord()
+ {
+ base.ProcessRecord();
+
+ if (ThemeId == null && ThemeName == null)
+ {
+ throw new Exception("ThemeId or ThemeName not provided");
+ }
+
+ if (ThemeId != null && ThemeName != null)
+ {
+ throw new Exception("Only 1 of ThemeId or ThemeName can be specified");
+ }
+
+ if (ThemeName != null)
+ {
+ //query for the theme to get the Id
+ var q = new QueryExpression("theme");
+ q.Criteria.AddCondition("name", ConditionOperator.Equal, ThemeName);
+
+ var entities = OrganizationService.RetrieveMultiple(q);
+ if (!entities.Entities.Any())
+ {
+ throw new Exception("Could not locate theme by name");
+ }
+
+ ThemeId = entities.Entities.First().Id;
+
+ }
+
+
+ base.WriteVerbose(string.Format("Publishing Theme"));
+
+ var req = new PublishThemeRequest();
+ req.Target = new EntityReference("theme", ThemeId.Value);
+
+ OrganizationService.Execute(req);
+
+ base.WriteVerbose(string.Format("Theme Published"));
+ }
+
+ #endregion
+ }
+}
\ No newline at end of file
diff --git a/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/Xrm.Framework.CI.PowerShell.Cmdlets.csproj b/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/Xrm.Framework.CI.PowerShell.Cmdlets.csproj
index 2b72a8c9..355ba474 100644
--- a/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/Xrm.Framework.CI.PowerShell.Cmdlets.csproj
+++ b/CRM365/Xrm.Framework.CI/Xrm.Framework.CI.PowerShell.Cmdlets/Xrm.Framework.CI.PowerShell.Cmdlets.csproj
@@ -124,6 +124,7 @@
+