In this article, let us provision the TermSet and Terms using PNP Provisioning Template by using C#. The Provisioning Template is as below.
 <?xml version="1.0"?>
 <pnp:Provisioning xmlns:pnp="http://schemas.dev.office.com/PnP/2018/01/ProvisioningSchema">
   <pnp:Preferences Generator="OfficeDevPnP.Core, Version=4.0.30319, Culture=neutral, PublicKeyToken=5e633289e95c321a" />
   <pnp:Templates>
     <pnp:ProvisioningTemplate ID="SPPALS.ProvisioningTemplate.TermGroups" Version="1" Scope="RootSite">
       <pnp:TermGroups>
         <pnp:TermGroup Name="{sitecollectiontermgroupname}">
           <pnp:TermSets>
             <pnp:TermSet Name="TermSet1" Language="1033">
               <pnp:Terms>
                 <pnp:Term Name="Term1"   IsAvailableForTagging="true" IsSourceTerm="false"></pnp:Term>
                 <pnp:Term Name="Term2"  IsAvailableForTagging="true" IsSourceTerm="false"></pnp:Term>
                 <pnp:Term Name="Term3"   IsAvailableForTagging="true" IsSourceTerm="false"></pnp:Term>
               </pnp:Terms>
             </pnp:TermSet>
           </pnp:TermSets>
         </pnp:TermGroup>
       </pnp:TermGroups>
     </pnp:ProvisioningTemplate>
   </pnp:Templates>
 </pnp:Provisioning>
 And the C# code is straight forward. It is as below.
 static void Main(string[] args)
         {
             ProvisionTaxonomyPNP();
         }
 
         public static void ProvisionTaxonomyPNP()
         {
             OfficeDevPnP.Core.AuthenticationManager authMgr = new OfficeDevPnP.Core.AuthenticationManager();
 
             string siteUrl = "https://sppalsmvp.sharepoint.com/sites/TeamSite/";
             string userName = "sathish@sppals.com";
             string password = "*****";
 
             using (var clientContext = authMgr.GetSharePointOnlineAuthenticatedContextTenant(siteUrl, userName, password))
             {
                 Web web = clientContext.Web;
                 clientContext.Load(web);
                 clientContext.Load(web.Lists);
                 clientContext.ExecuteQuery();
 
                 var templateLocation = "D:\PRACTICE SOURCE CODE\SPPALS.Console\SPPALS.Console\ProvisioningTemplate";
                 var provisioningProvider = new XMLFileSystemTemplateProvider(templateLocation, string.Empty);
 
                 var organizationSiteProvisioningTemplate = provisioningProvider.GetTemplate("SPPals.ProvisioningTemplate.TermGroups.xml");
                 organizationSiteProvisioningTemplate.Connector.Parameters[FileConnectorBase.CONNECTIONSTRING] = templateLocation;
                 clientContext.Web.ApplyProvisioningTemplate(organizationSiteProvisioningTemplate);
             }
         }
 
The terms will be provisioned as below.

Happy Coding,
Sathish Nadarajan.

 
  
 
Leave a comment