diff --git a/DnsServerCore/Dns/Zones/PrimarySubDomainZone.cs b/DnsServerCore/Dns/Zones/PrimarySubDomainZone.cs
new file mode 100644
index 00000000..13ba4b01
--- /dev/null
+++ b/DnsServerCore/Dns/Zones/PrimarySubDomainZone.cs
@@ -0,0 +1,89 @@
+/*
+Technitium DNS Server
+Copyright (C) 2020 Shreyas Zare (shreyas@technitium.com)
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see .
+
+*/
+
+using System.Collections.Generic;
+using TechnitiumLibrary.Net.Dns;
+
+namespace DnsServerCore.Dns.Zones
+{
+ public class PrimarySubDomainZone : SubDomainZone
+ {
+ #region variables
+
+ readonly PrimaryZone _primaryZone;
+
+ #endregion
+
+ #region constructor
+
+ public PrimarySubDomainZone(PrimaryZone primaryZone, string name)
+ : base(name)
+ {
+ _primaryZone = primaryZone;
+ }
+
+ #endregion
+
+ #region public
+
+ public override void SetRecords(DnsResourceRecordType type, IReadOnlyList records)
+ {
+ base.SetRecords(type, records);
+
+ _primaryZone.IncrementSoaSerial();
+ _primaryZone.NotifyNameServers();
+ }
+
+ public override void AddRecord(DnsResourceRecord record)
+ {
+ base.AddRecord(record);
+
+ _primaryZone.IncrementSoaSerial();
+ _primaryZone.NotifyNameServers();
+ }
+
+ public override bool DeleteRecords(DnsResourceRecordType type)
+ {
+ if (base.DeleteRecords(type))
+ {
+ _primaryZone.IncrementSoaSerial();
+ _primaryZone.NotifyNameServers();
+
+ return true;
+ }
+
+ return false;
+ }
+
+ public override bool DeleteRecord(DnsResourceRecordType type, DnsResourceRecordData record)
+ {
+ if (base.DeleteRecord(type, record))
+ {
+ _primaryZone.IncrementSoaSerial();
+ _primaryZone.NotifyNameServers();
+
+ return true;
+ }
+
+ return false;
+ }
+
+ #endregion
+ }
+}