<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Thiyagarajan Thangavel</title>
    <description>The latest articles on Forem by Thiyagarajan Thangavel (@thiyagarajan_thangavel).</description>
    <link>https://forem.com/thiyagarajan_thangavel</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3606206%2F8698118e-7d60-4ffe-ad86-2f9fe8e08085.png</url>
      <title>Forem: Thiyagarajan Thangavel</title>
      <link>https://forem.com/thiyagarajan_thangavel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/thiyagarajan_thangavel"/>
    <language>en</language>
    <item>
      <title>laps-local account cyberark sync</title>
      <dc:creator>Thiyagarajan Thangavel</dc:creator>
      <pubDate>Tue, 02 Dec 2025 06:00:18 +0000</pubDate>
      <link>https://forem.com/thiyagarajan_thangavel/laps-local-account-cyberark-sync-4ao9</link>
      <guid>https://forem.com/thiyagarajan_thangavel/laps-local-account-cyberark-sync-4ao9</guid>
      <description>&lt;p&gt;As discussed during our call, we’ve identified that the LAPS setting is being applied through the local group policy, as confirmed by the RSoP results. However, when we checked the Local Group Policy Editor, the setting does not appear to be explicitly configured.&lt;br&gt;
Additionally, we verified the registry and found that no LAPS-related keys are defined either locally or via domain GPO. This leaves us in a bit of a gray area, as we’re unsure of the actual source applying the policy — possibly a default configuration from the OS image or another mechanism.&lt;br&gt;
Given this uncertainty, we’re evaluating whether applying the registry setting to disable LAPS will effectively override the current behavior. We’d appreciate any insights or recommendations you might have on how best to proceed.&lt;/p&gt;

&lt;p&gt;Registry key for disabled LAPS:  [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\LAPS\Config]&lt;br&gt;
"BackupDirectory"=dword:00000000&lt;/p&gt;

&lt;p&gt;Note: I have used the attached script for LAPS verification that.&lt;/p&gt;

&lt;p&gt;• ✅ No LAPS registry settings found — This means LAPS is not configured via registry (likely not applied via domain GPO or local GPO).&lt;br&gt;
• ✅ Local Group Policy file exists — So there might be some local GPO settings, but not necessarily LAPS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1c8x7i0hw3f30ecevq4i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1c8x7i0hw3f30ecevq4i.png" alt=" " width="624" height="221"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ztmk8luwqo277ub1uku.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6ztmk8luwqo277ub1uku.png" alt=" " width="624" height="256"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghglzzdvrc8vbtro9e1g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fghglzzdvrc8vbtro9e1g.png" alt=" " width="800" height="335"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmkffvhf9zsdi0b5v3ivb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmkffvhf9zsdi0b5v3ivb.png" alt=" " width="800" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Steps to get certificate from Internal CA server</title>
      <dc:creator>Thiyagarajan Thangavel</dc:creator>
      <pubDate>Tue, 02 Dec 2025 05:54:40 +0000</pubDate>
      <link>https://forem.com/thiyagarajan_thangavel/steps-to-get-certificate-from-internal-ca-server-2o2d</link>
      <guid>https://forem.com/thiyagarajan_thangavel/steps-to-get-certificate-from-internal-ca-server-2o2d</guid>
      <description>&lt;p&gt;Steps to get certificate from Internal CA server&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a text file and save the format of the file as “.inf”. For instance “policy.inf”.&lt;br&gt;
a.  We need to submit the inf file in order to generate the CSR through “Certreq” command.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The content of the policy file should be in specific format. Attached here the sample policy file for reference.&lt;br&gt;
a.   &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the policy file is created, open command prompt as admin and type the below command:&lt;br&gt;
a.  Certreq –new  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;b.  For instance,&lt;br&gt;
c.  Certreq –new policy.inf request.req&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A CSR file will be generated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use the following command to submit the CSR to an internal CA to get the certificate:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;a.  certreq -submit -attrib "CertificateTemplate:"  &lt;/p&gt;

&lt;p&gt;b.  For instance,&lt;br&gt;
c.  certreq -submit -attrib "CertificateTemplate:WebServerSSL" request.req certificate.cer&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; It will prompt you to select the CA server. Once the CA server is selected, a new certificate will be generated.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>networksec</category>
      <category>tools</category>
    </item>
    <item>
      <title>Cleanup of Inactive AD Accounts (User &amp; Computer) – Over 1 Year Old</title>
      <dc:creator>Thiyagarajan Thangavel</dc:creator>
      <pubDate>Tue, 02 Dec 2025 05:53:34 +0000</pubDate>
      <link>https://forem.com/thiyagarajan_thangavel/cleanup-of-inactive-ad-accounts-user-computer-over-1-year-old-2ia9</link>
      <guid>https://forem.com/thiyagarajan_thangavel/cleanup-of-inactive-ad-accounts-user-computer-over-1-year-old-2ia9</guid>
      <description>&lt;p&gt;Idea&lt;br&gt;
To improve Active Directory (AD) security hygiene, performance, and compliance with ARPAN or internal IT policies by identifying and removing inactive user and computer accounts that haven’t been used for over one year.&lt;br&gt;
Problem Statement&lt;br&gt;
Over time, user and computer accounts in Active Directory become stale due to employee attrition, decommissioned machines, or system account redundancies. These dormant accounts pose the following risks and issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security Risks: Inactive accounts are vulnerable to misuse or compromise.&lt;/li&gt;
&lt;li&gt;License Wastage: Consumes unnecessary licenses in environments like Microsoft 365.&lt;/li&gt;
&lt;li&gt;Administrative Overhead: Clutters AD with obsolete entries, complicating management.&lt;/li&gt;
&lt;li&gt;Compliance Gaps: May violate policies such as ARPAN which mandate timely account lifecycle management.
Solution
Implement a PowerShell-based automated process that:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Identifies all user and computer accounts that have not logged on in over 365 days.&lt;/li&gt;
&lt;li&gt;Exports these accounts to CSV files for review and audit purposes.&lt;/li&gt;
&lt;li&gt;Deletes the reviewed accounts safely (with optional backup and logging steps).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PowerShell Script (Summary):&lt;br&gt;
Benefits&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced Security: Minimizes attack surface by eliminating dormant accounts.&lt;/li&gt;
&lt;li&gt;Compliance Assurance: Meets ARPAN and internal audit standards for account lifecycle.&lt;/li&gt;
&lt;li&gt;Operational Efficiency: Reduces clutter in AD, improving admin productivity.&lt;/li&gt;
&lt;li&gt;Cost Optimization: Frees up licenses and reduces overhead in systems like Office 365 or Azure AD.
# Load AD module
Import-Module ActiveDirectory&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  Set time threshold
&lt;/h1&gt;

&lt;p&gt;$timeThreshold = (Get-Date).AddDays(-365)&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Export Inactive User Accounts ---
&lt;/h1&gt;

&lt;p&gt;$inactiveUsers = Get-ADUser -Filter {LastLogonDate -lt $timeThreshold -and Enabled -eq $true} -Properties LastLogonDate |&lt;br&gt;
    Select-Object Name, SamAccountName, LastLogonDate&lt;/p&gt;

&lt;p&gt;$inactiveUsers | Export-Csv -Path "C:\ADCleanup\InactiveUsers.csv" -NoTypeInformation&lt;br&gt;
Write-Host "Inactive users exported to InactiveUsers.csv"&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Export Inactive Computer Accounts ---
&lt;/h1&gt;

&lt;p&gt;$inactiveComputers = Get-ADComputer -Filter {LastLogonDate -lt $timeThreshold -and Enabled -eq $true} -Properties LastLogonDate |&lt;br&gt;
    Select-Object Name, SamAccountName, LastLogonDate&lt;/p&gt;

&lt;p&gt;$inactiveComputers | Export-Csv -Path "C:\ADCleanup\InactiveComputers.csv" -NoTypeInformation&lt;br&gt;
Write-Host "Inactive computers exported to InactiveComputers.csv"&lt;/p&gt;

&lt;h1&gt;
  
  
  Optional: Review before deleting
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Uncomment the following lines to perform deletion
&lt;/h1&gt;

&lt;p&gt;&amp;lt;# &lt;/p&gt;

&lt;h1&gt;
  
  
  Delete Inactive Users
&lt;/h1&gt;

&lt;p&gt;$inactiveUsers | ForEach-Object {&lt;br&gt;
    Remove-ADUser -Identity $_.SamAccountName -Confirm:$false&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  Delete Inactive Computers
&lt;/h1&gt;

&lt;p&gt;$inactiveComputers | ForEach-Object {&lt;br&gt;
    Remove-ADComputer -Identity $_.SamAccountName -Confirm:$false&lt;br&gt;
}&lt;br&gt;
Write-Host "Inactive users and computers deleted."&lt;/p&gt;

&lt;h1&gt;
  
  
  &amp;gt;
&lt;/h1&gt;

</description>
      <category>azure</category>
      <category>discuss</category>
      <category>networksec</category>
    </item>
    <item>
      <title>Script for site &amp; subnet creation in bulk</title>
      <dc:creator>Thiyagarajan Thangavel</dc:creator>
      <pubDate>Fri, 14 Nov 2025 13:23:29 +0000</pubDate>
      <link>https://forem.com/thiyagarajan_thangavel/script-for-site-subnet-creation-in-bulk-f0k</link>
      <guid>https://forem.com/thiyagarajan_thangavel/script-for-site-subnet-creation-in-bulk-f0k</guid>
      <description>&lt;h1&gt;
  
  
  Load Active Directory module
&lt;/h1&gt;

&lt;p&gt;Import-Module ActiveDirectory&lt;/p&gt;

&lt;h1&gt;
  
  
  Define CSV path
&lt;/h1&gt;

&lt;p&gt;$CSVPath = "C:\Scripts\Subnets.csv"&lt;/p&gt;

&lt;h1&gt;
  
  
  Import CSV
&lt;/h1&gt;

&lt;p&gt;$SubnetData = Import-Csv -Path $CSVPath&lt;/p&gt;

&lt;h1&gt;
  
  
  Extract site and linked site from first row (assumes consistent site across rows)
&lt;/h1&gt;

&lt;p&gt;$SiteName   = $SubnetData[0].SiteName&lt;br&gt;
$Location   = $SubnetData[0].Location&lt;br&gt;
$LinkedTo   = $SubnetData[0].LinkedTo&lt;br&gt;
$SiteLink   = "$SiteName-$LinkedTo-Link"&lt;/p&gt;

&lt;p&gt;try {&lt;br&gt;
    # Create AD Site if not exists&lt;br&gt;
    if (-not (Get-ADReplicationSite -Filter "Name -eq '$SiteName'")) {&lt;br&gt;
        New-ADReplicationSite -Name $SiteName&lt;br&gt;
        Write-Host "✅ Created Site: $SiteName"&lt;br&gt;
    }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# Loop through all subnets and associate with the site
foreach ($row in $SubnetData) {
    $Subnet = $row.Subnet
    if (-not (Get-ADReplicationSubnet -Filter "Name -eq '$Subnet'")) {
        New-ADReplicationSubnet -Name $Subnet -Site $SiteName -Location $Location
        Write-Host "✅ Added Subnet $Subnet to Site $SiteName"
    } else {
        Write-Host "ℹ️ Subnet $Subnet already exists."
    }
}

# Create Site Link if not exists
if (-not (Get-ADReplicationSiteLink -Filter "Name -eq '$SiteLink'")) {
    New-ADReplicationSiteLink -Name $SiteLink -SitesIncluded $SiteName,$LinkedTo -Cost 100 -ReplicationFrequencyInMinutes 180
    Write-Host "✅ Created Site Link: $SiteLink between $SiteName and $LinkedTo"
} else {
    Write-Host "ℹ️ Site Link $SiteLink already exists."
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
catch {&lt;br&gt;
    Write-Host "❌ Error: $($_.Exception.Message)"&lt;br&gt;
}&lt;/p&gt;

</description>
      <category>networking</category>
      <category>microsoft</category>
      <category>automation</category>
      <category>cli</category>
    </item>
    <item>
      <title>Script for GP result Comparison</title>
      <dc:creator>Thiyagarajan Thangavel</dc:creator>
      <pubDate>Fri, 14 Nov 2025 13:22:17 +0000</pubDate>
      <link>https://forem.com/thiyagarajan_thangavel/script-for-gp-result-comparison-435c</link>
      <guid>https://forem.com/thiyagarajan_thangavel/script-for-gp-result-comparison-435c</guid>
      <description>&lt;h1&gt;
  
  
  Define paths to the two GPResult HTML files
&lt;/h1&gt;

&lt;p&gt;$File1 = "C:\Reports\GPResult1.html"&lt;br&gt;
$File2 = "C:\Reports\GPResult2.html"&lt;/p&gt;

&lt;h1&gt;
  
  
  Load HTML content
&lt;/h1&gt;

&lt;p&gt;$Html1 = Get-Content $File1 -Raw&lt;br&gt;
$Html2 = Get-Content $File2 -Raw&lt;/p&gt;

&lt;h1&gt;
  
  
  Convert HTML to XML
&lt;/h1&gt;

&lt;p&gt;[xml]$Xml1 = $Html1&lt;br&gt;
[xml]$Xml2 = $Html2&lt;/p&gt;

&lt;h1&gt;
  
  
  Helper function to extract GPOs and settings
&lt;/h1&gt;

&lt;p&gt;function Get-GPODataFromHtml($Xml) {&lt;br&gt;
    $tables = $Xml.getElementsByTagName("table")&lt;br&gt;
    $gpoTable = $tables | Where-Object { $&lt;em&gt;.innerText -like "&lt;em&gt;Applied Group Policy Objects&lt;/em&gt;" }&lt;br&gt;
    $settingTables = $tables | Where-Object { $&lt;/em&gt;.innerText -match "Security Settings|Registry|Scripts|Folder Redirection" }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$gpoList = @()
$settingList = @()

if ($gpoTable.Count -gt 0) {
    $rows = $gpoTable[0].getElementsByTagName("tr")
    foreach ($row in $rows) {
        $cells = $row.getElementsByTagName("td")
        if ($cells.Count -gt 0) {
            $gpoList += $cells[0].innerText.Trim()
        }
    }
}

foreach ($table in $settingTables) {
    $rows = $table.getElementsByTagName("tr")
    foreach ($row in $rows) {
        $cells = $row.getElementsByTagName("td")
        if ($cells.Count -ge 2) {
            $settingList += "$($cells[0].innerText.Trim()) = $($cells[1].innerText.Trim())"
        }
    }
}

return @{GPOs = $gpoList; Settings = $settingList}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;h1&gt;
  
  
  Extract data
&lt;/h1&gt;

&lt;p&gt;$Data1 = Get-GPODataFromHtml $Xml1&lt;br&gt;
$Data2 = Get-GPODataFromHtml $Xml2&lt;/p&gt;

&lt;h1&gt;
  
  
  Compare GPOs
&lt;/h1&gt;

&lt;p&gt;$GPOsOnlyIn1 = Compare-Object $Data1.GPOs $Data2.GPOs -PassThru | Where-Object { $&lt;em&gt;.SideIndicator -eq "&amp;lt;=" }&lt;br&gt;
$GPOsOnlyIn2 = Compare-Object $Data1.GPOs $Data2.GPOs -PassThru | Where-Object { $&lt;/em&gt;.SideIndicator -eq "=&amp;gt;" }&lt;/p&gt;

&lt;h1&gt;
  
  
  Compare Settings
&lt;/h1&gt;

&lt;p&gt;$SettingsOnlyIn1 = Compare-Object $Data1.Settings $Data2.Settings -PassThru | Where-Object { $&lt;em&gt;.SideIndicator -eq "&amp;lt;=" }&lt;br&gt;
$SettingsOnlyIn2 = Compare-Object $Data1.Settings $Data2.Settings -PassThru | Where-Object { $&lt;/em&gt;.SideIndicator -eq "=&amp;gt;" }&lt;/p&gt;

&lt;h1&gt;
  
  
  Output differences
&lt;/h1&gt;

&lt;p&gt;Write-Host "`n🔍 GPOs only in File 1:"&lt;br&gt;
$GPOsOnlyIn1 | ForEach-Object { Write-Host " - $_" }&lt;/p&gt;

&lt;p&gt;Write-Host "`n🔍 GPOs only in File 2:"&lt;br&gt;
$GPOsOnlyIn2 | ForEach-Object { Write-Host " - $_" }&lt;/p&gt;

&lt;p&gt;Write-Host "`n🔧 Settings only in File 1:"&lt;br&gt;
$SettingsOnlyIn1 | ForEach-Object { Write-Host " - $_" }&lt;/p&gt;

&lt;p&gt;Write-Host "`n🔧 Settings only in File 2:"&lt;br&gt;
$SettingsOnlyIn2 | ForEach-Object { Write-Host " - $_" }&lt;/p&gt;

&lt;h1&gt;
  
  
  Optional: Export to CSV
&lt;/h1&gt;

&lt;p&gt;$Report = @()&lt;br&gt;
foreach ($item in $SettingsOnlyIn1) {&lt;br&gt;
    $Report += [PSCustomObject]@{Source="File1"; Setting=$item}&lt;br&gt;
}&lt;br&gt;
foreach ($item in $SettingsOnlyIn2) {&lt;br&gt;
    $Report += [PSCustomObject]@{Source="File2"; Setting=$item}&lt;br&gt;
}&lt;br&gt;
$Report | Export-Csv "C:\Reports\GPO_Differences.csv" -NoTypeInformation&lt;br&gt;
Write-Host "`n📁 Differences exported to C:\Reports\GPO_Differences.csv"&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>automation</category>
      <category>tooling</category>
      <category>security</category>
    </item>
    <item>
      <title>Domain controller decommission SOP</title>
      <dc:creator>Thiyagarajan Thangavel</dc:creator>
      <pubDate>Fri, 14 Nov 2025 13:19:42 +0000</pubDate>
      <link>https://forem.com/thiyagarajan_thangavel/domain-controller-decommission-sop-31l9</link>
      <guid>https://forem.com/thiyagarajan_thangavel/domain-controller-decommission-sop-31l9</guid>
      <description>&lt;p&gt;3   INTRODUCTION&lt;br&gt;
The objective of this document is to provide Domain controller decommission preparation and decommissioning steps.&lt;/p&gt;

&lt;p&gt;3.1 OBJECTIVE&lt;br&gt;
The Scope of this document includes the pre and post check of the uninstallation of Active directory services and validation steps.&lt;/p&gt;

&lt;p&gt;3.2 AUDIENCE&lt;br&gt;
This document will help Wintel AD Team (MBG PS) and who will go to embrace this technology.&lt;/p&gt;

&lt;p&gt;4   DISASTER RECOVERY CHALLENGES&lt;/p&gt;

&lt;p&gt;No disaster recovery process will be facilitated by this document.&lt;/p&gt;

&lt;p&gt;5   PLANNING OF DOMAIN CONROLLER DECOMMISSION&lt;br&gt;
• The prerequisite steps for safe domain controller decommission.&lt;/p&gt;

&lt;p&gt;•  Isolate the Domain Controller&lt;br&gt;
• Check Domain Controller authentication request.&lt;br&gt;
• Check Domain Controller Role.&lt;br&gt;
• Check the DNS Role.&lt;br&gt;
• Check is any other roles are holding by the DC.&lt;br&gt;
• Domain controller cooling period.&lt;/p&gt;

&lt;p&gt;5.1 ISOLATE THE DOMAIN CONTROLLER&lt;br&gt;
Just create temporary AD site and move the Domain Controller which you want to remove, make sure the temporary AD site only has the DC Subnet, so that there won’t be any client authentication reaching the DC.&lt;br&gt;
Also check the DC SRV records are pointing to new temporary AD site and delete if any record pointing from old user site, this should be dynamic and no manual action required, just make sure SRV records in-place as excepted.&lt;br&gt;
5.2 CHECK DOMAIN CONTROLLER AUTHENTICATION REQUEST&lt;br&gt;
Make sure auditing been enabled for all logon and logoff, check for Event ID 540 for Windows Server 2003 DC and Event ID 4624 for Windows server 2012 r2, windows 2008 R2 and windows 2016 in the decommissioning Domain Controller security event log to find any users have logged on the site from any workstation and even you will be able to see is any application uses the DC using static configuration.&lt;br&gt;
5.3 CHECK DOMAIN CONTROLLER ROLE.&lt;br&gt;
Check is any FSMO roles are holding on this DC by “netdom query fsmo”, move the roles to other Domain Controllers.&lt;br&gt;
5.4 CHECK THE DNS ROLE.&lt;br&gt;
Check is any member server/computer or DHCP Scope uses the Domain Controller IP as a primary DNS server, just change this to other DNS Server on the Domain&lt;br&gt;
5.5 CHECK IS ANY OTHER ROLES ARE HOLDING BY THE DC.&lt;br&gt;
Roles like DFSR, file server, print server and any other server role, move all the roles to different live Server.&lt;/p&gt;

&lt;p&gt;5.6 DOMAIN CONTROLLER COOLING PERIOD.&lt;br&gt;
Just Shut down the Domain Controller for a week time before permanent decommission/powered off, if any application server, users, client system uses the DC will be failed and you will be notified by them, you can fix the issue by re-pointing to other working Domain Controller&lt;br&gt;
In worst case you can power on the Domain Controller and keep live till the issue been fixed, this will minimize the impact.&lt;/p&gt;

&lt;p&gt;6   STEPS TO DEMOTE THE DOMAIN CONTROLLER ROLE&lt;br&gt;
The below recommended steps for removing a domain controller role from the server.&lt;/p&gt;

&lt;p&gt;Step 1. Open Server Manager&lt;/p&gt;

&lt;p&gt;Step2. Select manage -&amp;gt; “Remove Roles and Features” Click next on the “Before you begin page.”&lt;/p&gt;

&lt;p&gt;Step 3. On the server selection page, select the server you want to demote and click the next button.&lt;br&gt;
In this example, I’m demoting server “srv-2016”&lt;/p&gt;

&lt;p&gt;Step 4. Uncheck “Active Directory Domain Services” on the Server Roles page.&lt;/p&gt;

&lt;p&gt;When you uncheck, you will get a popup to remove features that require Active Directory Domain Services.&lt;/p&gt;

&lt;p&gt;If you will plan on using the server to manage Active Directory, then keep these installed. In this example, I plan to decommission the server so I will remove these management tools.&lt;/p&gt;

&lt;p&gt;Step 5. Select Demote this domain controller.&lt;/p&gt;

&lt;p&gt;On the next screen make sure you DO NOT select “Force the removal of this domain controller”. You should only select this if you are removing the last domain controller in the domain.&lt;br&gt;
You can also change credentials on this screen if needed.&lt;/p&gt;

&lt;p&gt;Click Next&lt;/p&gt;

&lt;p&gt;Step 6. On the warnings screen, it will give you a warning this server hosts additional roles. If you have client computers using this server for DNS you will need to update them to point to a different server since the DNS role will be removed.&lt;br&gt;
Check the box “Proceed with removal and click next.&lt;/p&gt;

&lt;p&gt;Step 7. If you have DNS delegation, you can select “Remove DNS delegation and click next. In most cases, you will not have DNS delegation and can uncheck this box.&lt;/p&gt;

&lt;p&gt;Step 8. Now put in the new administrator password. This will be for the local administrator account on this server.&lt;/p&gt;

&lt;p&gt;Step 9. Review options and click “Demote.”&lt;/p&gt;

&lt;p&gt;There is a “view script” button that generates a PowerShell script to automate all the steps we just walked through. If you have additional domain controllers to remove you could use this script.&lt;/p&gt;

&lt;p&gt;When you click demote, the server will be demoted and rebooted. Once it reboots the server will be a member server. You can log in with domain credentials to the server.&lt;/p&gt;

&lt;p&gt;7   POST CLEAN-UP ACTIVITY&lt;/p&gt;

&lt;p&gt;Step 1. On another domain controller or computer with RSAT tools open “Active Directory Users and Computers”&lt;br&gt;
Go to the domain Controllers folder. Right click the domain controller you want to remove and click delete.&lt;/p&gt;

&lt;p&gt;On the next screen select the box “Delete this Domain Controller anyway” and click delete”&lt;/p&gt;

&lt;p&gt;If the DC is a global catalog server, you will get an additional message to confirm the deletion. I’m going to click Yes.&lt;/p&gt;

</description>
      <category>networking</category>
      <category>sre</category>
      <category>distributedsystems</category>
      <category>security</category>
    </item>
    <item>
      <title>Clean up in active AD accounts</title>
      <dc:creator>Thiyagarajan Thangavel</dc:creator>
      <pubDate>Tue, 11 Nov 2025 16:48:39 +0000</pubDate>
      <link>https://forem.com/thiyagarajan_thangavel/clean-up-in-active-ad-accounts-13ki</link>
      <guid>https://forem.com/thiyagarajan_thangavel/clean-up-in-active-ad-accounts-13ki</guid>
      <description>&lt;p&gt;Cleanup of Inactive AD Accounts (User &amp;amp; Computer) – Over 1 Year Old&lt;br&gt;
Idea&lt;br&gt;
To improve Active Directory (AD) security hygiene, performance, and compliance with ARPAN or internal IT policies by identifying and removing inactive user and computer accounts that haven’t been used for over one year.&lt;br&gt;
Problem Statement&lt;br&gt;
Over time, user and computer accounts in Active Directory become stale due to employee attrition, decommissioned machines, or system account redundancies. These dormant accounts pose the following risks and issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Security Risks: Inactive accounts are vulnerable to misuse or compromise.&lt;/li&gt;
&lt;li&gt;License Wastage: Consumes unnecessary licenses in environments like Microsoft 365.&lt;/li&gt;
&lt;li&gt;Administrative Overhead: Clutters AD with obsolete entries, complicating management.&lt;/li&gt;
&lt;li&gt;Compliance Gaps: May violate policies such as ARPAN which mandate timely account lifecycle management.
Solution
Implement a PowerShell-based automated process that:&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;Identifies all user and computer accounts that have not logged on in over 365 days.&lt;/li&gt;
&lt;li&gt;Exports these accounts to CSV files for review and audit purposes.&lt;/li&gt;
&lt;li&gt;Deletes the reviewed accounts safely (with optional backup and logging steps).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PowerShell Script (Summary):&lt;br&gt;
Benefits&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Enhanced Security: Minimizes attack surface by eliminating dormant accounts.&lt;/li&gt;
&lt;li&gt;Compliance Assurance: Meets ARPAN and internal audit standards for account lifecycle.&lt;/li&gt;
&lt;li&gt;Operational Efficiency: Reduces clutter in AD, improving admin productivity.&lt;/li&gt;
&lt;li&gt;Cost Optimization: Frees up licenses and reduces overhead in systems like Office 365 or Azure AD.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Power shell script:&lt;/p&gt;

&lt;h1&gt;
  
  
  Load AD module
&lt;/h1&gt;

&lt;p&gt;Import-Module ActiveDirectory&lt;/p&gt;

&lt;h1&gt;
  
  
  Set time threshold
&lt;/h1&gt;

&lt;p&gt;$timeThreshold = (Get-Date).AddDays(-365)&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Export Inactive User Accounts ---
&lt;/h1&gt;

&lt;p&gt;$inactiveUsers = Get-ADUser -Filter {LastLogonDate -lt $timeThreshold -and Enabled -eq $true} -Properties LastLogonDate |&lt;br&gt;
    Select-Object Name, SamAccountName, LastLogonDate&lt;/p&gt;

&lt;p&gt;$inactiveUsers | Export-Csv -Path "C:\ADCleanup\InactiveUsers.csv" -NoTypeInformation&lt;br&gt;
Write-Host "Inactive users exported to InactiveUsers.csv"&lt;/p&gt;

&lt;h1&gt;
  
  
  --- Export Inactive Computer Accounts ---
&lt;/h1&gt;

&lt;p&gt;$inactiveComputers = Get-ADComputer -Filter {LastLogonDate -lt $timeThreshold -and Enabled -eq $true} -Properties LastLogonDate |&lt;br&gt;
    Select-Object Name, SamAccountName, LastLogonDate&lt;/p&gt;

&lt;p&gt;$inactiveComputers | Export-Csv -Path "C:\ADCleanup\InactiveComputers.csv" -NoTypeInformation&lt;br&gt;
Write-Host "Inactive computers exported to InactiveComputers.csv"&lt;/p&gt;

&lt;h1&gt;
  
  
  Optional: Review before deleting
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Uncomment the following lines to perform deletion
&lt;/h1&gt;

&lt;p&gt;&amp;lt;# &lt;/p&gt;

&lt;h1&gt;
  
  
  Delete Inactive Users
&lt;/h1&gt;

&lt;p&gt;$inactiveUsers | ForEach-Object {&lt;br&gt;
    Remove-ADUser -Identity $_.SamAccountName -Confirm:$false&lt;br&gt;
}&lt;/p&gt;

&lt;h1&gt;
  
  
  Delete Inactive Computers
&lt;/h1&gt;

&lt;p&gt;$inactiveComputers | ForEach-Object {&lt;br&gt;
    Remove-ADComputer -Identity $_.SamAccountName -Confirm:$false&lt;br&gt;
}&lt;br&gt;
Write-Host "Inactive users and computers deleted."&lt;/p&gt;

&lt;h1&gt;
  
  
  &amp;gt;
&lt;/h1&gt;

</description>
      <category>discuss</category>
      <category>networksec</category>
    </item>
    <item>
      <title>AD Backup and Recovery</title>
      <dc:creator>Thiyagarajan Thangavel</dc:creator>
      <pubDate>Tue, 11 Nov 2025 16:46:29 +0000</pubDate>
      <link>https://forem.com/thiyagarajan_thangavel/ad-backup-and-recovery-61c</link>
      <guid>https://forem.com/thiyagarajan_thangavel/ad-backup-and-recovery-61c</guid>
      <description>&lt;ol&gt;
&lt;li&gt; INTRODUCTION
Active Directory (AD) is a vital component in most enterprise networks. It manages authentication, authorization, and directory services. Ensuring reliable backup and restore procedures for AD is crucial for business continuity and disaster recovery.
3.1.    OBJECTIVE
This white paper presents a detailed, task-specific, step-by-step execution plan for restructuring Active Directory (AD) domain and trust relationships. Using a practical example with domain and server names, it guides administrators through assessment, planning, migration, and validation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.2.    AUDIENCE&lt;br&gt;
This document does not cover the details for other dependent technologies.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; IMPORTANCE OF ACTIVE DIRECTORY BACKUPS
A corruption or accidental deletion in AD can result in a complete halt of IT operations. Regular backups ensure:
• Disaster recovery readiness&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Disaster recovery readiness is about possessing the resilience to maintain reliable access to the business's digital data, whatever happens.&lt;/p&gt;

&lt;p&gt;• Protection against accidental or malicious deletions&lt;/p&gt;

&lt;p&gt;Regularly back up important files to separate locations, ensuring there's a fallback if data is accidentally lost or corrupted. A regular backup schedule is crucial for protecting essential files from accidental modifications or deletions&lt;/p&gt;

&lt;p&gt;• Quick recovery of critical identity infrastructure&lt;/p&gt;

&lt;p&gt;To ensure a quick recovery of critical identity infrastructure within Active Directory (AD), organizations should implement comprehensive backup and recovery strategies, including automated forest recovery and granular object restoration. This involves utilizing tools and techniques that enable rapid restoration of AD to a functional state following a cyberattack or another outage. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; TYPES OF BACKUPS IN ACTIVE DIRECTORY
• System State Backup: 
A System State Backup in Active Directory (AD) creates a copy of critical components to allow for recovery of domain controllers and the entire AD environment in case of a disaster or system failure. This backup includes the AD database, system files, registry, SYSVOL folder, and other essential data. It's crucial for restoring domain controllers, recovering from failures, and ensuring the overall resilience of the AD infrastructure. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;• Full Server Backup: &lt;br&gt;
A full server backup copies all data on a server to another storage location. This comprehensive backup method ensures a complete point-in-time snapshot of the server, making it ideal for disaster recovery scenarios where minimizing downtime is crucial. While it provides the fastest recovery times, it also requires the most storage space and resources.  Includes OS, files, and system state&lt;/p&gt;

&lt;p&gt;• Bare Metal Recovery: &lt;/p&gt;

&lt;p&gt;Bare metal recovery (BMR), also known as bare metal restore or bare metal backup, is a data recovery process that allows you to restore a computer system to a usable state from a backup, even if the system's original operating system or other software is corrupted or missing. Essentially, it involves restoring the entire system, including the operating system, applications, and data, to a new or empty (bare metal) hard drive.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; PERFORMING A SYSTEM STATE BACKUP&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;6.1.1.  STEPS:&lt;/p&gt;

&lt;p&gt;Open Run Dialog&lt;/p&gt;

&lt;p&gt;• Press Windows + R or search for Run in the Start menu.&lt;br&gt;
• Type wbadmin.msc and hit Enter.&lt;/p&gt;

&lt;p&gt;Launch Windows Server Backup Utility&lt;br&gt;
• In the utility window, click Backup Once in the right-hand Actions panel.&lt;br&gt;
• Click Next.&lt;/p&gt;

&lt;p&gt;Select Backup Configuration&lt;br&gt;
• Choose Full server to back up everything (recommended for first-time backups).&lt;br&gt;
• Or select Custom to choose specific files, volumes, or applications.&lt;br&gt;
• Click Next after selection.&lt;/p&gt;

&lt;p&gt;Configure Volume Shadow Copy Options (for Custom backups only)&lt;br&gt;
• Select between VSS full back up or VSS copy backup if applicable.&lt;br&gt;
Choose Backup Destination&lt;br&gt;
• Select either Local drives or Remote shared folder.&lt;br&gt;
• If Local, specify the destination drive.&lt;br&gt;
• If Remote, enter the shared folder path and credentials if prompted.&lt;br&gt;
• Click Next.&lt;/p&gt;

&lt;p&gt;Confirm and Start Backup&lt;br&gt;
• Review your settings.&lt;br&gt;
• Click Backup to initiate the process.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; RESTORE SERVER BACKUP USING WINDOWS SERVER BACKUP&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Below steps proved to restore the server backup.&lt;br&gt;
7.1 STEPS FOR SERVER RECOVERY&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open the Backup Utility&lt;br&gt;
• Launch Server Manager&lt;br&gt;
• Navigate to Tools → Windows Server Backup&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Initiate Recovery&lt;br&gt;
• In the Actions pane (right side), click Recover&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Select Backup Location&lt;br&gt;
Choose the location of the backup:&lt;br&gt;
• This server – if the backup is stored locally&lt;br&gt;
• Another location – for network share or external drive&lt;br&gt;
• Click Next&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose Backup Date and Time&lt;br&gt;
• Select the specific backup instance by date and time&lt;br&gt;
• Click Next&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Specify Recovery Type&lt;br&gt;
• Choose what to recover:&lt;br&gt;
• Files and folders&lt;br&gt;
• Volumes&lt;br&gt;
• System state&lt;br&gt;
• Bare metal recovery&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set Recovery Options&lt;br&gt;
• Select the recovery destination:&lt;br&gt;
• Original location – overwrites existing data&lt;br&gt;
• Alternate location – restores to a new location&lt;br&gt;
• Adjust additional settings if required&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Confirm and Start Recovery&lt;br&gt;
• Review all configurations&lt;br&gt;
• Click Recover to begin restoration&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;BEST PRACTICES FOR AD BACKUP &amp;amp; RECOVERY&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Best Practice   Description&lt;br&gt;
Daily System State Backups  Automate with task scheduler&lt;br&gt;
Off-site Backup Storage Protect against ransomware and local disasters&lt;br&gt;
Document DSRM credentials   Store securely in a vault&lt;br&gt;
Periodic Restore Testing    Ensure backups are valid and restorable&lt;br&gt;
Use Backup Software with Reporting  Track backup success and failures&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; TESTING AND VALIDATING BACKUP AND RESTORE&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;• Perform quarterly restore drills&lt;br&gt;
• Validate restored data (OU, user accounts)&lt;br&gt;
• Test login, replication, DNS services post-restore&lt;br&gt;
• Document steps and any issues found&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;COMMON ISSUES AND TROUBLESHOOTING&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Issue   Solution&lt;br&gt;
DSRM password unknown   Reset using NTDSUTIL&lt;br&gt;
Backup fails due to VSS Restart Volume Shadow Copy service&lt;br&gt;
Slow restore    Use faster storage or network for backups&lt;br&gt;
Missing backups Confirm schedule, permissions, and storage space&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;APPENDIX
Active Directory is central to IT operations. With proper backup and tested recovery procedures, organizations can mitigate outages and resume operations quickly during an incident.
APPENDIX: DIAGRAMS AND POWERSHELL COMMANDS
+------------------+     Backup      +--------------------+
| Domain Controller|  ------------&amp;gt;  |  Backup Target     |
+------------------+                | (Disk/Remote Share)|
   |                            +--------------------+
   |                                    ^
   |      System State Recovery         |
   +------------------------------------+
             |
             v
 +------------------------------+
 | Boot into DSRM, Restore AD   |
 | Authoritative if necessary   |
 +------------------------------+&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Diagram: AD Backup and Restore Workflow&lt;/p&gt;

&lt;p&gt;Sample PowerShell Commands:&lt;/p&gt;

&lt;h1&gt;
  
  
  Install backup feature
&lt;/h1&gt;

&lt;p&gt;Install-WindowsFeature Windows-Server-Backup&lt;/p&gt;

&lt;h1&gt;
  
  
  Manual system state backup
&lt;/h1&gt;

&lt;p&gt;wbadmin start systemstatebackup -backupTarget:D: -quiet&lt;/p&gt;

&lt;h1&gt;
  
  
  List available backup versions
&lt;/h1&gt;

&lt;p&gt;wbadmin get versions&lt;/p&gt;

&lt;h1&gt;
  
  
  Restore from backup
&lt;/h1&gt;

&lt;p&gt;wbadmin start systemstaterecovery -version: -backupTarget: -quiet&lt;/p&gt;

&lt;p&gt;11.1.   ACRONYMS, ABBREVIATIONS, TERMS AND DEFINITIONS&lt;/p&gt;

&lt;p&gt;Abbreviation&lt;br&gt;
Definition  Abbreviation&lt;br&gt;
Definition&lt;br&gt;
 AD  Active Directory    DC  Domain controller&lt;br&gt;
 ADDT    Active Directory Domain and Trust&lt;br&gt;&lt;br&gt;
 DNS     Domain name space       &lt;/p&gt;

&lt;p&gt;Table 3.    Abbreviations&lt;br&gt;
11.2.   REFERENCE LINKS&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.manageengine.com/products/ad-manager/sem/windows-active-directory-administration-tool.html?camid=19561812382&amp;amp;adgid=146774103722&amp;amp;kwd=active%20directory%20software&amp;amp;matchtype=p&amp;amp;adid=644736381298&amp;amp;network=g&amp;amp;adposition=&amp;amp;loc=9148438&amp;amp;placement=&amp;amp;target=&amp;amp;gad_source=1&amp;amp;gad_campaignid=19561812382&amp;amp;gbraid=0AAAAAChA-cv3RHe7xnorgTuO97Y-HrtaQ&amp;amp;gclid=Cj0KCQjwyIPDBhDBARIsAHJyyVj_URlnu4k9hLi9eu7hrfjms9CIm8lM3atsVy8d7X7NcgDSikEdusgaAoTwEALw_wcB" rel="noopener noreferrer"&gt;https://www.manageengine.com/products/ad-manager/sem/windows-active-directory-administration-tool.html?camid=19561812382&amp;amp;adgid=146774103722&amp;amp;kwd=active%20directory%20software&amp;amp;matchtype=p&amp;amp;adid=644736381298&amp;amp;network=g&amp;amp;adposition=&amp;amp;loc=9148438&amp;amp;placement=&amp;amp;target=&amp;amp;gad_source=1&amp;amp;gad_campaignid=19561812382&amp;amp;gbraid=0AAAAAChA-cv3RHe7xnorgTuO97Y-HrtaQ&amp;amp;gclid=Cj0KCQjwyIPDBhDBARIsAHJyyVj_URlnu4k9hLi9eu7hrfjms9CIm8lM3atsVy8d7X7NcgDSikEdusgaAoTwEALw_wcB&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.microsoft.com/en-us/windows/win32/ad/backing-up-and-restoring-an-active-directory-server" rel="noopener noreferrer"&gt;https://learn.microsoft.com/en-us/windows/win32/ad/backing-up-and-restoring-an-active-directory-server&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.netwrix.com/how-to-backup-active-directory" rel="noopener noreferrer"&gt;https://blog.netwrix.com/how-to-backup-active-directory&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;11.3.   LIST OF TABLES&lt;br&gt;
Table 1.    Version History 3&lt;br&gt;
Table 2.    Trademarks  4&lt;br&gt;
Table 3.    Abbreviations   9&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Migration Guide: Microsoft ADCS to Sectigo Certificate Manager</title>
      <dc:creator>Thiyagarajan Thangavel</dc:creator>
      <pubDate>Tue, 11 Nov 2025 16:42:42 +0000</pubDate>
      <link>https://forem.com/thiyagarajan_thangavel/migration-guide-microsoft-adcs-to-sectigo-certificate-manager-fdc</link>
      <guid>https://forem.com/thiyagarajan_thangavel/migration-guide-microsoft-adcs-to-sectigo-certificate-manager-fdc</guid>
      <description>&lt;p&gt;Absolutely, Thiyagarajan. Below is a &lt;strong&gt;complete, step-by-step migration guide in plain text&lt;/strong&gt; for moving from Microsoft ADCS to Sectigo Certificate Manager. You can copy this into a Word document and format it as needed. Every step is explicitly detailed — including clicks, commands, and validation — so anyone following this guide can execute the migration without missing a single action.&lt;/p&gt;




&lt;h1&gt;
  
  
  📘 Migration Guide: Microsoft ADCS to Sectigo Certificate Manager
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Author:&lt;/strong&gt; Thiyagarajan&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Date:&lt;/strong&gt; 11-Nov-2025&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Purpose:&lt;/strong&gt; Migrate from Microsoft Active Directory Certificate Services (ADCS) to Sectigo Certificate Manager (SCM) for modern, automated certificate lifecycle management.&lt;/p&gt;




&lt;h2&gt;
  
  
  🧭 Table of Contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Project Overview
&lt;/li&gt;
&lt;li&gt;Pre-Migration Assessment
&lt;/li&gt;
&lt;li&gt;Sectigo Platform Setup
&lt;/li&gt;
&lt;li&gt;Sectigo Connector Deployment
&lt;/li&gt;
&lt;li&gt;Template Mapping
&lt;/li&gt;
&lt;li&gt;Enrollment Policy Configuration
&lt;/li&gt;
&lt;li&gt;Certificate Migration
&lt;/li&gt;
&lt;li&gt;Validation &amp;amp; Monitoring
&lt;/li&gt;
&lt;li&gt;Rollback Plan
&lt;/li&gt;
&lt;li&gt;Appendices&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  1️⃣ Project Overview
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Goal:&lt;/strong&gt; Replace legacy ADCS with Sectigo’s cloud-native PKI platform
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scope:&lt;/strong&gt; Includes user, device, server, and service certificates
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benefits:&lt;/strong&gt; Automation, visibility, compliance, and reduced operational overhead&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2️⃣ Pre-Migration Assessment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Inventory ADCS Components
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Log in to your ADCS server
&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Certification Authority&lt;/strong&gt; console
&lt;/li&gt;
&lt;li&gt;Document:

&lt;ul&gt;
&lt;li&gt;CA hierarchy (Root, Subordinate, Issuing)&lt;/li&gt;
&lt;li&gt;Certificate templates&lt;/li&gt;
&lt;li&gt;Validity periods&lt;/li&gt;
&lt;li&gt;Enrollment methods&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Export Template List
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open PowerShell as Administrator
&lt;/li&gt;
&lt;li&gt;Run:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;certutil&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-catemplates&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\ADCS_Templates.txt&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 3: Identify Certificate Usage
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Review:

&lt;ul&gt;
&lt;li&gt;IIS bindings&lt;/li&gt;
&lt;li&gt;VPN authentication&lt;/li&gt;
&lt;li&gt;Wi-Fi 802.1x&lt;/li&gt;
&lt;li&gt;RDP and smartcard logons&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Backup ADCS
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;strong&gt;Server Manager&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Tools &amp;gt; Certification Authority&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Right-click the CA &amp;gt; &lt;strong&gt;All Tasks &amp;gt; Back Up CA&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Include:

&lt;ul&gt;
&lt;li&gt;Private key&lt;/li&gt;
&lt;li&gt;CA database&lt;/li&gt;
&lt;li&gt;Configuration&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  3️⃣ Sectigo Platform Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Create Sectigo Tenant
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;a href="https://sectigo.com" rel="noopener noreferrer"&gt;Sectigo Portal&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Sign Up&lt;/strong&gt; or &lt;strong&gt;Request Demo&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Complete onboarding form
&lt;/li&gt;
&lt;li&gt;Receive admin credentials via email&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Configure Roles
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Log in to Sectigo Certificate Manager
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Settings &amp;gt; Roles&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Create:

&lt;ul&gt;
&lt;li&gt;Admin&lt;/li&gt;
&lt;li&gt;Approver&lt;/li&gt;
&lt;li&gt;Auditor&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Enable Integrations
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Integrations &amp;gt; Directory Services&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enable:

&lt;ul&gt;
&lt;li&gt;Active Directory&lt;/li&gt;
&lt;li&gt;Azure AD (if hybrid)&lt;/li&gt;
&lt;li&gt;SCEP/ACME (for devices)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  4️⃣ Sectigo Connector Deployment
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Download Connector
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Log in to Sectigo
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Downloads &amp;gt; AD Connector&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Download the installer&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Install Connector
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Run installer on a domain-joined Windows Server
&lt;/li&gt;
&lt;li&gt;Accept license agreement
&lt;/li&gt;
&lt;li&gt;Choose installation path
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Install&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Register Connector
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;After install, open &lt;strong&gt;Sectigo AD Connector&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sectigo API credentials&lt;/li&gt;
&lt;li&gt;Domain name&lt;/li&gt;
&lt;li&gt;OU scope&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Register&lt;/strong&gt;  &lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Wait for sync confirmation&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  5️⃣ Template Mapping
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Review ADCS Templates
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;code&gt;C:\ADCS_Templates.txt&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Note:

&lt;ul&gt;
&lt;li&gt;Template name&lt;/li&gt;
&lt;li&gt;Key usage&lt;/li&gt;
&lt;li&gt;Subject name format&lt;/li&gt;
&lt;li&gt;Validity period&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Create Equivalent Templates in Sectigo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Templates &amp;gt; Create New&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Match:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Key length (e.g., 2048-bit RSA)&lt;/li&gt;
&lt;li&gt;Usage (e.g., Client Auth, Server Auth)&lt;/li&gt;
&lt;li&gt;SAN format (e.g., DNS, UPN)&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Click &lt;strong&gt;Save&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Assign Templates to Groups
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Directory Sync &amp;gt; Groups&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Assign templates to:

&lt;ul&gt;
&lt;li&gt;Users&lt;/li&gt;
&lt;li&gt;Computers&lt;/li&gt;
&lt;li&gt;Service accounts&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  6️⃣ Enrollment Policy Configuration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Configure Autoenrollment via GPO
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;strong&gt;Group Policy Management&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Create or edit GPO
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Navigate to:&lt;br&gt;&lt;br&gt;
&lt;code&gt;Computer Configuration &amp;gt; Policies &amp;gt; Windows Settings &amp;gt; Security Settings &amp;gt; Public Key Policies&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Enable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Certificate Services Client – Auto-Enrollment&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Set to &lt;strong&gt;Enabled&lt;/strong&gt; and &lt;strong&gt;Renew expired certificates&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Link GPO to target OU  &lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Run:&lt;br&gt;&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;gpupdate&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/force&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Step 2: Configure Mobile &amp;amp; Device Enrollment
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Sectigo &amp;gt; Enrollment Policies&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Enable:

&lt;ul&gt;
&lt;li&gt;SCEP for routers/switches&lt;/li&gt;
&lt;li&gt;ACME for Linux servers&lt;/li&gt;
&lt;li&gt;Intune integration for mobile devices&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  7️⃣ Certificate Migration
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Issue New Certificates from Sectigo
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Certificates &amp;gt; Issue&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Select template
&lt;/li&gt;
&lt;li&gt;Choose target user/device
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Issue&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Update Bindings
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;For IIS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open IIS Manager
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Sites &amp;gt; Bindings&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Edit HTTPS binding
&lt;/li&gt;
&lt;li&gt;Select new Sectigo certificate&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;p&gt;For VPN/Wi-Fi:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Update NPS or RADIUS server certificate&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Revoke Legacy Certificates
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open &lt;strong&gt;ADCS Console&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Go to &lt;strong&gt;Issued Certificates&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Right-click &amp;gt; &lt;strong&gt;Revoke&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  8️⃣ Validation &amp;amp; Monitoring
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Validate Certificate Installation
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;On client machine, run:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;certutil&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;-store&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;my&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Confirm Sectigo-issued certificate is present&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Validate GPO Application
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Run:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight powershell"&gt;&lt;code&gt;&lt;span class="w"&gt;  &lt;/span&gt;&lt;span class="n"&gt;gpresult&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;/h&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nx"&gt;C:\gpresult.html&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Open HTML and confirm autoenrollment applied&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Monitor Sectigo Dashboard
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Dashboard &amp;gt; Certificate Lifecycle&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Check:

&lt;ul&gt;
&lt;li&gt;Expiring certificates&lt;/li&gt;
&lt;li&gt;Failed enrollments&lt;/li&gt;
&lt;li&gt;Audit logs&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;




&lt;h2&gt;
  
  
  9️⃣ Rollback Plan
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Step 1: Retain ADCS in Standby
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Do not uninstall ADCS for 30–60 days
&lt;/li&gt;
&lt;li&gt;Keep CRL publishing active&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 2: Export Sectigo Certificates
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Go to &lt;strong&gt;Certificates &amp;gt; Export&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Save as &lt;code&gt;.pfx&lt;/code&gt; with password&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 3: Rebind Legacy Certificates (if needed)
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Open IIS or NPS
&lt;/li&gt;
&lt;li&gt;Re-select ADCS-issued certificate&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Step 4: Notify Stakeholders
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Send rollback notice with reason and timeline&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🔚 Appendices
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sectigo API Reference
&lt;/li&gt;
&lt;li&gt;PowerShell scripts for template export
&lt;/li&gt;
&lt;li&gt;GPO autoenrollment examples
&lt;/li&gt;
&lt;li&gt;Sectigo connector troubleshooting guide
&lt;/li&gt;
&lt;li&gt;Contact info for Sectigo support&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Would you like help turning this into a formatted Word document with headers, footers, and a cover page? I can also help you build a companion runbook or validation checklist.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
