diff --git a/internal/pkg/onuadaptercore/alarm_manager.go b/internal/pkg/onuadaptercore/alarm_manager.go
index 6665bd4..cb0c223 100644
--- a/internal/pkg/onuadaptercore/alarm_manager.go
+++ b/internal/pkg/onuadaptercore/alarm_manager.go
@@ -37,7 +37,6 @@
 	physicalPathTerminationPointEthernetUniClassID = me.PhysicalPathTerminationPointEthernetUniClassID
 	onuGClassID                                    = me.OnuGClassID
 	aniGClassID                                    = me.AniGClassID
-	auditInterval                                  = 300
 	defaultTimeoutDelay                            = 10
 	alarmBitMapSizeBytes                           = 28
 )
@@ -185,7 +184,7 @@
 	logger.Debugw(ctx, "alarm-sync-fsm-start-processing-msgs-in-state", log.Fields{"state": e.FSM.Current(), "device-id": am.pDeviceHandler.deviceID})
 	go am.processAlarmSyncMessages(ctx)
 	// Start the first audit, if audit interval configured, else reach the sync state
-	if auditInterval > 0 {
+	if am.pDeviceHandler.pOnuOmciDevice.alarmAuditInterval > 0 {
 		select {
 		//Transition into auditing state, using a very shorter timeout delay here, hence it is the first audit
 		case <-time.After(defaultTimeoutDelay * time.Second):
@@ -318,9 +317,9 @@
 
 func (am *onuAlarmManager) asFsmInSync(ctx context.Context, e *fsm.Event) {
 	logger.Debugw(ctx, "alarm-sync-fsm", log.Fields{"state": e.FSM.Current(), "device-id": am.pDeviceHandler.deviceID})
-	if auditInterval > 0 {
+	if am.pDeviceHandler.pOnuOmciDevice.alarmAuditInterval > 0 {
 		select {
-		case <-time.After(auditInterval * time.Second):
+		case <-time.After(am.pDeviceHandler.pOnuOmciDevice.alarmAuditInterval):
 			go func() {
 				if err := am.alarmSyncFsm.pFsm.Event(asEvAudit); err != nil {
 					logger.Debugw(ctx, "alarm-sync-fsm-cannot-go-to-state-auditing", log.Fields{"device-id": am.pDeviceHandler.deviceID, "err": err})
@@ -578,7 +577,7 @@
 			return nil
 		}
 		am.incrementAlarmSequence()
-		if sequenceNo != am.lastAlarmSequence && auditInterval > 0 {
+		if sequenceNo != am.lastAlarmSequence && am.pDeviceHandler.pOnuOmciDevice.alarmAuditInterval > 0 {
 			// signal early audit, if no match(if we are reaching here it means that audit is not going on currently)
 			go func() {
 				if err := am.alarmSyncFsm.pFsm.Event(asEvAudit); err != nil {
diff --git a/internal/pkg/onuadaptercore/onu_device_entry.go b/internal/pkg/onuadaptercore/onu_device_entry.go
index db33270..c52f96a 100644
--- a/internal/pkg/onuadaptercore/onu_device_entry.go
+++ b/internal/pkg/onuadaptercore/onu_device_entry.go
@@ -241,21 +241,22 @@
 }
 
 type onuPersistentData struct {
-	PersOnuID            uint32          `json:"onu_id"`
-	PersIntfID           uint32          `json:"intf_id"`
-	PersSerialNumber     string          `json:"serial_number"`
-	PersMacAddress       string          `json:"mac_address"`
-	PersVendorID         string          `json:"vendor_id"`
-	PersEquipmentID      string          `json:"equipment_id"`
-	PersActiveSwVersion  string          `json:"active_sw_version"`
-	PersAdminState       string          `json:"admin_state"`
-	PersOperState        string          `json:"oper_state"`
-	PersUniUnlockDone    bool            `json:"uni_unlock_done"`
-	PersUniDisableDone   bool            `json:"uni_disable_done"`
-	PersMibAuditInterval time.Duration   `json:"mib_audit_interval"`
-	PersMibLastDbSync    uint32          `json:"mib_last_db_sync"`
-	PersMibDataSyncAdpt  uint8           `json:"mib_data_sync_adpt"`
-	PersUniConfig        []uniPersConfig `json:"uni_config"`
+	PersOnuID              uint32          `json:"onu_id"`
+	PersIntfID             uint32          `json:"intf_id"`
+	PersSerialNumber       string          `json:"serial_number"`
+	PersMacAddress         string          `json:"mac_address"`
+	PersVendorID           string          `json:"vendor_id"`
+	PersEquipmentID        string          `json:"equipment_id"`
+	PersActiveSwVersion    string          `json:"active_sw_version"`
+	PersAdminState         string          `json:"admin_state"`
+	PersOperState          string          `json:"oper_state"`
+	PersUniUnlockDone      bool            `json:"uni_unlock_done"`
+	PersUniDisableDone     bool            `json:"uni_disable_done"`
+	PersMibAuditInterval   time.Duration   `json:"mib_audit_interval"`
+	PersMibLastDbSync      uint32          `json:"mib_last_db_sync"`
+	PersMibDataSyncAdpt    uint8           `json:"mib_data_sync_adpt"`
+	PersUniConfig          []uniPersConfig `json:"uni_config"`
+	PersAlarmAuditInterval time.Duration   `json:"alarm_audit_interval"`
 }
 
 // OnuDeviceEntry - ONU device info and FSM events.
@@ -282,7 +283,8 @@
 	supportedFsms OmciDeviceFsms
 	devState      OnuDeviceEvent
 	// Audit and MDS
-	mibAuditInterval time.Duration
+	mibAuditInterval   time.Duration
+	alarmAuditInterval time.Duration
 	// TODO: periodical mib resync will be implemented with story VOL-3792
 	//mibNextDbResync uint32
 
@@ -344,13 +346,17 @@
 	if !dh.isReconciling() {
 		onuDeviceEntry.mibAuditInterval = onuDeviceEntry.supportedFsms["mib-synchronizer"].auditInterval
 		onuDeviceEntry.sOnuPersistentData.PersMibAuditInterval = onuDeviceEntry.mibAuditInterval
+		onuDeviceEntry.alarmAuditInterval = dh.pOpenOnuAc.alarmAuditInterval
+		onuDeviceEntry.sOnuPersistentData.PersAlarmAuditInterval = onuDeviceEntry.alarmAuditInterval
 	} else {
 		logger.Debugw(ctx, "reconciling - take audit interval from persistent data", log.Fields{"device-id": dh.deviceID})
 		// TODO: This is a preparation for VOL-VOL-3811 to preserve config history in case of
 		// vendor- or deviceID-specific configurations via voltctl-commands
 		onuDeviceEntry.mibAuditInterval = onuDeviceEntry.sOnuPersistentData.PersMibAuditInterval
+		onuDeviceEntry.alarmAuditInterval = onuDeviceEntry.sOnuPersistentData.PersAlarmAuditInterval
 	}
-	logger.Debugw(ctx, "MibAudit is set to", log.Fields{"Interval": onuDeviceEntry.mibAuditInterval})
+	logger.Debugw(ctx, "MibAuditInterval and AlarmAuditInterval is set to", log.Fields{"mib-audit-interval": onuDeviceEntry.mibAuditInterval,
+		"alarm-audit-interval": onuDeviceEntry.alarmAuditInterval})
 	// TODO: periodical mib resync will be implemented with story VOL-3792
 	//onuDeviceEntry.mibNextDbResync = 0
 
@@ -597,7 +603,7 @@
 	oo.persUniConfigMutex.Lock()
 	defer oo.persUniConfigMutex.Unlock()
 	oo.sOnuPersistentData =
-		onuPersistentData{0, 0, "", "", "", "", "", "", "", false, false, oo.mibAuditInterval, 0, 0, make([]uniPersConfig, 0)}
+		onuPersistentData{0, 0, "", "", "", "", "", "", "", false, false, oo.mibAuditInterval, 0, 0, make([]uniPersConfig, 0), oo.alarmAuditInterval}
 	oo.onuKVStoreMutex.RLock()
 	Value, err := oo.onuKVStore.Get(ctx, oo.onuKVStorePath)
 	oo.onuKVStoreMutex.RUnlock()
@@ -651,7 +657,7 @@
 
 	oo.sOnuPersistentData.PersUniConfig = nil //releasing all UniConfig entries to garbage collector default entry
 	oo.sOnuPersistentData =
-		onuPersistentData{0, 0, "", "", "", "", "", "", "", false, false, oo.mibAuditInterval, 0, 0, make([]uniPersConfig, 0)}
+		onuPersistentData{0, 0, "", "", "", "", "", "", "", false, false, oo.mibAuditInterval, 0, 0, make([]uniPersConfig, 0), oo.alarmAuditInterval}
 	logger.Debugw(ctx, "delete ONU-data from KVStore", log.Fields{"device-id": oo.deviceID})
 	oo.onuKVStoreMutex.Lock()
 	err := oo.onuKVStore.Delete(ctx, oo.onuKVStorePath)
diff --git a/internal/pkg/onuadaptercore/openonu.go b/internal/pkg/onuadaptercore/openonu.go
index 10281cf..cb74d5a 100644
--- a/internal/pkg/onuadaptercore/openonu.go
+++ b/internal/pkg/onuadaptercore/openonu.go
@@ -71,6 +71,7 @@
 	metricsEnabled             bool
 	mibAuditInterval           time.Duration
 	omciTimeout                int // in seconds
+	alarmAuditInterval         time.Duration
 }
 
 //NewOpenONUAC returns a new instance of OpenONU_AC
@@ -105,6 +106,7 @@
 	openOnuAc.mibAuditInterval = cfg.MibAuditInterval
 	// since consumers of OMCI timeout value everywhere in code is in "int seconds", do this useful conversion
 	openOnuAc.omciTimeout = int(cfg.OmciTimeout.Seconds())
+	openOnuAc.alarmAuditInterval = cfg.AlarmAuditInterval
 
 	openOnuAc.pSupportedFsms = &OmciDeviceFsms{
 		"mib-synchronizer": {
