diff --git a/Makefile b/Makefile
index 0719cdb..1d75059 100644
--- a/Makefile
+++ b/Makefile
@@ -22,7 +22,7 @@
 VERSION   ?= $(shell cat ./VERSION)
 LINT_ARGS ?= --verbose --configure LineTooLong:120 -e LineTooLong \
              --configure TooManyTestSteps:30 -e TooManyTestSteps \
-             --configure TooManyTestCases:12 -e TooManyTestCases \
+             --configure TooManyTestCases:50 -e TooManyTestCases \
              --configure TooFewTestSteps:1 \
              --configure TooFewKeywordSteps:1 \
              --configure FileTooLong:600 -e FileTooLong \
diff --git a/tests/functional/Voltha_AlarmTests.robot b/tests/functional/Voltha_AlarmTests.robot
index 06a71b6..5a35e48 100755
--- a/tests/functional/Voltha_AlarmTests.robot
+++ b/tests/functional/Voltha_AlarmTests.robot
@@ -65,36 +65,320 @@
     Set Suite Variable    ${onu_sn}
     ${onu_id}    Get Device ID From SN    ${onu_sn}
     Set Suite Variable    ${onu_id}
+    ${parent_id}    Get Parent ID From Device ID     ${onu_id}
+    Set Suite Variable    ${parent_id}
 
-Test StartupFailureAlarm
-    [Documentation]    Raise StartupFailure Alarm and verify event received
-    [Tags]    not_active
-    Raise Alarm    StartupFailure    ${onu_sn}
-    # This one is actually broken...
-    # TODO: complete test once alarm is working...
+Test RaiseActivationFailureAlarm
+    # Note: Can only be raised, not cleared
+    [Documentation]    Raise Activation Fail Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    ActivationFailure
+    ...     ${onu_sn}    ONU_ACTIVATION_FAIL_RAISE_EVENT
+    # Note: PON is the zero value of the subCategory field, and causes it to be not present
+    Verify Header   ${header}    Voltha.openolt.ONU_ACTIVATION_FAIL\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_ACTIVATION_FAIL_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseDriftOfWindowAlarm
+    [Documentation]    Raise Drift Of Window Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    DriftOfWindow
+    ...     ${onu_sn}    ONU_DRIFT_OF_WINDOW_RAISE_EVENT
+    # Note: PON is the zero value of the subCategory field, and causes it to be not present
+    Verify Header   ${header}    Voltha.openolt.ONU_DRIFT_OF_WINDOW\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_DRIFT_OF_WINDOW_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearDriftOfWindowAlarm
+    [Documentation]    Clear Drift Of Window Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    DriftOfWindow
+    ...     ${onu_sn}    ONU_DRIFT_OF_WINDOW_CLEAR_EVENT
+    # Note: PON is the zero value of the subCategory field, and causes it to be not present
+    Verify Header   ${header}    Voltha.openolt.ONU_DRIFT_OF_WINDOW\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_DRIFT_OF_WINDOW_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseDyingGaspAlarm
+    [Documentation]    Raise Dying Gasp Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    DyingGasp
+    ...     ${onu_sn}    ONU_DYING_GASP_RAISE_EVENT
+    # Note: PON is the zero value of the subCategory field, and causes it to be not present
+    Verify Header   ${header}    Voltha.openolt.ONU_DYING_GASP\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_DYING_GASP_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearDyingGaspAlarm
+    [Documentation]    Clear Dying Gasp Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    DyingGasp
+    ...     ${onu_sn}    ONU_DYING_GASP_CLEAR_EVENT
+    # Note: PON is the zero value of the subCategory field, and causes it to be not present
+    Verify Header   ${header}    Voltha.openolt.ONU_DYING_GASP\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_DYING_GASP_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseLopcMissAlarm
+    [Documentation]    Raise LOPC_MISS Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    LOPC_MISS
+    ...     ${onu_sn}    ONU_LOPC_MISS_RAISE_EVENT
+    # Note: PON is the zero value of the subCategory field, and causes it to be not present
+    Verify Header   ${header}    Voltha.openolt.ONU_LOPC_MISS\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOPC_MISS_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearLopcMissAlarm
+    [Documentation]    Clear LOPC_MISS Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    LOPC_MISS
+    ...     ${onu_sn}    ONU_LOPC_MISS_CLEAR_EVENT
+    # Note: PON is the zero value of the subCategory field, and causes it to be not present
+    Verify Header   ${header}    Voltha.openolt.ONU_LOPC_MISS\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOPC_MISS_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseLopcMicErrorAlarm
+    [Documentation]    Raise LOPC_MISS Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    LOPC_MIC_ERROR
+    ...     ${onu_sn}    ONU_LOPC_MIC_ERROR_RAISE_EVENT
+    # Note: PON is the zero value of the subCategory field, and causes it to be not present
+    Verify Header   ${header}    Voltha.openolt.ONU_LOPC_MIC_ERROR\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOPC_MIC_ERROR_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearLopcMicErrorAlarm
+    [Documentation]    Clear LOPC_MISS Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    LOPC_MIC_ERROR
+    ...     ${onu_sn}    ONU_LOPC_MIC_ERROR_CLEAR_EVENT
+    # Note: PON is the zero value of the subCategory field, and causes it to be not present
+    Verify Header   ${header}    Voltha.openolt.ONU_LOPC_MIC_ERROR\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOPC_MIC_ERROR_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
 
 Test RaiseLossOfBurstAlarm
     [Documentation]    Raise Loss Of Burst Alarm and verify event received
     [Tags]    active
-    ${since}    Get Current Time
-    Raise Alarm    LossOfBurst    ${onu_sn}
-    ${header}    ${deviceEvent}    Get Device Event    ONU_LOSS_OF_BURST_RAISE_EVENT    ${since}
-    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_BURST\.(\\d+)
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    LossOfBurst
+    ...     ${onu_sn}    ONU_LOSS_OF_BURST_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_BURST\.(\\d+)    ONU
     Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_BURST_RAISE_EVENT
-    # TODO: Why does the event have the OLT ID instead of the ONU ID ? Verify correctness.
-    ${parent_id}    Get Parent ID From Device ID     ${onu_id}
     Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
 
 Test ClearLossOfBurstAlarm
     [Documentation]    Clear Loss Of Burst Alarm and verify event received
     [Tags]    active
-    ${since}    Get Current Time
-    Clear Alarm    LossOfBurst    ${onu_sn}
-    ${header}    ${deviceEvent}    Get Device Event    ONU_LOSS_OF_BURST_CLEAR_EVENT    ${since}
-    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_BURST\.(\\d+)
+    ${header}    ${deviceEvent}     Clear Alarm And Get Event     LossOfBurst
+    ...    ${onu_sn}    ONU_LOSS_OF_BURST_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_BURST\.(\\d+)    ONU
     Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_BURST_CLEAR_EVENT
-    # TODO: Why does the event have the OLT ID instead of the ONU ID ? Verify correctness.
-    ${parent_id}    Get Parent ID From Device ID     ${onu_id}
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseLossOfFrameAlarm
+    [Documentation]    Raise Loss Of Frame Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    LossOfFrame
+    ...     ${onu_sn}    ONU_LOSS_OF_FRAME_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_FRAME\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_FRAME_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearLossOfFrameAlarm
+    [Documentation]    Clear Loss Of Frame Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}     Clear Alarm And Get Event     LossOfFrame
+    ...    ${onu_sn}    ONU_LOSS_OF_FRAME_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_FRAME\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_FRAME_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseLossOfKeySyncFailureAlarm
+    [Documentation]    Raise Loss Of Key Sync Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    LossOfKeySyncFailure
+    ...     ${onu_sn}    ONU_LOSS_OF_KEY_SYNC_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_KEY_SYNC\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_KEY_SYNC_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearLossOfKeySyncFailureAlarm
+    [Documentation]    Clear Loss Of Key Sync Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    LossOfKeySyncFailure
+    ...     ${onu_sn}    ONU_LOSS_OF_KEY_SYNC_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_KEY_SYNC\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_KEY_SYNC_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseLossOfOmciChannelAlarm
+    [Documentation]    Raise Loss Of Omci Channel Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    LossOfOmciChannel
+    ...     ${onu_sn}    ONU_LOSS_OF_OMCI_CHANNEL_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_OMCI_CHANNEL\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_OMCI_CHANNEL_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearLossOfOmciChannelAlarm
+    [Documentation]    Clear Loss Of Omci Channel Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    LossOfOmciChannel
+    ...     ${onu_sn}    ONU_LOSS_OF_OMCI_CHANNEL_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_OMCI_CHANNEL\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_OMCI_CHANNEL_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseLossOfPloamAlarm
+    [Documentation]    Raise Loss Of Ploam Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    LossOfPloam
+    ...     ${onu_sn}    ONU_LOSS_OF_PLOAM_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_PLOAM\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_PLOAM_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearLossOfPloamAlarm
+    [Documentation]    Clear Loss Of Ploam Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    LossOfPloam
+    ...     ${onu_sn}    ONU_LOSS_OF_PLOAM_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_PLOAM\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_PLOAM_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseLossOfSignalAlarm
+    [Documentation]    Raise Loss Of Signal Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    LossOfSignal
+    ...     ${onu_sn}    ONU_LOSS_OF_SIGNAL_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_SIGNAL\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_SIGNAL_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearLossOfSignalAlarm
+    [Documentation]    Clear Loss Of Signal Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    LossOfSignal
+    ...     ${onu_sn}    ONU_LOSS_OF_SIGNAL_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_LOSS_OF_SIGNAL\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_LOSS_OF_SIGNAL_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaisePonLossOfSignalAlarm
+    [Documentation]    Raise Loss Of Signal Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    PonLossOfSignal
+    ...     ${onu_sn}    OLT_LOSS_OF_SIGNAL_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.OLT_LOSS_OF_SIGNAL\.(\\d+)    OLT
+    Should Be Equal    ${deviceEvent}[deviceEventName]    OLT_LOSS_OF_SIGNAL_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearPonLossOfSignalAlarm
+    [Documentation]    Clear Loss Of Signal Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    PonLossOfSignal
+    ...     ${onu_sn}    OLT_LOSS_OF_SIGNAL_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.OLT_LOSS_OF_SIGNAL\.(\\d+)    OLT
+    Should Be Equal    ${deviceEvent}[deviceEventName]    OLT_LOSS_OF_SIGNAL_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseProcessingErrorAlarm
+    # Not Implemented
+    [Documentation]    Raise Processing Error Alarm and verify event received
+    [Tags]    not-active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    ProcessingError
+    ...     ${onu_sn}    ONU_PROCESSING_ERROR_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_PROCESSING_ERROR\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_PROCESSING_ERROR_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearProcessingErrorAlarm
+    # Not Implemented
+    [Documentation]    Clear Processing Error Alarm and verify event received
+    [Tags]    not-active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    ProcessingError
+    ...     ${onu_sn}    ONU_PROCESSING_ERROR_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_PROCESSING_ERROR\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_PROCESSING_ERROR_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseSignalDegradeAlarm
+    [Documentation]    Raise Signal Degrade Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    SignalDegrade
+    ...     ${onu_sn}    ONU_SIGNAL_DEGRADE_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_SIGNAL_DEGRADE\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_SIGNAL_DEGRADE_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearSignalDegradeAlarm
+    [Documentation]    Clear Signal Degrade Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    SignalDegrade
+    ...     ${onu_sn}    ONU_SIGNAL_DEGRADE_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_SIGNAL_DEGRADE\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_SIGNAL_DEGRADE_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseSignalsFailureAlarm
+    [Documentation]    Raise Signals Fail Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    SignalsFailure
+    ...     ${onu_sn}    ONU_SIGNALS_FAIL_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_SIGNALS_FAIL\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_SIGNALS_FAIL_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearSignalsFailureAlarm
+    [Documentation]    Clear Signals Fail Alarm and verify event received
+    [Tags]    active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    SignalsFailure
+    ...     ${onu_sn}    ONU_SIGNALS_FAIL_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_SIGNALS_FAIL\.(\\d+)    ${EMPTY}
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_SIGNALS_FAIL_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseStartupFailureAlarm
+    # Not Implemented
+    [Documentation]    Raise Startup Failure Alarm and verify event received
+    [Tags]    not-active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    StartupFailure
+    ...     ${onu_sn}    ONU_STARTUP_FAILURE_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_STARTUP_FAILURE\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_STARTUP_FAILURE_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearStartupFailureAlarm
+    # Not Implemented
+    [Documentation]    Clear Startup Failure Alarm and verify event received
+    [Tags]    not-active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    StartupFailure
+    ...     ${onu_sn}    ONU_STARTUP_FAILURE_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_STARTUP_FAILURE\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_STARTUP_FAILURE_CLEAR_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test RaiseTransmissionInterferenceAlarm
+    # Not Implemented
+    [Documentation]    Raise Transmission Interference Alarm and verify event received
+    [Tags]    not-active
+    ${header}    ${deviceEvent}    Raise Alarm And Get Event    TransmissionInterference
+    ...     ${onu_sn}    ONU_TRANSMISSION_INTERFERENCE_RAISE_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_TRANSMISSION_INTERFERENCE\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_TRANSMISSION_INTERFERENCE_RAISE_EVENT
+    Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
+
+Test ClearTransmissionInterferenceAlarm
+    # Not Implemented
+    [Documentation]    Clear Transmission Interference Alarm and verify event received
+    [Tags]    not-active
+    ${header}    ${deviceEvent}    Clear Alarm And Get Event    TransmissionInterference
+    ...     ${onu_sn}    ONU_TRANSMISSION_INTERFERENCE_CLEAR_EVENT
+    Verify Header   ${header}    Voltha.openolt.ONU_TRANSMISSION_INTERFERENCE\.(\\d+)    ONU
+    Should Be Equal    ${deviceEvent}[deviceEventName]    ONU_TRANSMISSION_INTERFERENCE_CLEAR_EVENT
     Should Be Equal    ${deviceEvent}[resourceId]    ${parent_id}
 
 *** Keywords ***
@@ -120,6 +404,22 @@
     Run Keyword If    ${teardown_device}    Execute ONOS CLI Command    ${k8s_node_ip}    ${ONOS_SSH_PORT}
     ...    device-remove ${of_id}
 
+Raise Alarm And Get Event
+    [Documentation]    Raise an Alarm and return event
+    [Arguments]    ${name}    ${sn}    ${deviceEventName}
+    ${since}    Get Current Time
+    Raise Alarm    ${name}    ${sn}
+    ${header}    ${deviceEvent}    Get Device Event    ${deviceEventName}    ${since}
+    [return]    ${header}    ${deviceEvent}
+
+Clear Alarm And Get Event
+    [Documentation]    Clear an Alarm and return event
+    [Arguments]    ${name}    ${sn}    ${deviceEventName}
+    ${since}    Get Current Time
+    Clear Alarm    ${name}    ${sn}
+    ${header}    ${deviceEvent}    Get Device Event    ${deviceEventName}    ${since}
+    [return]    ${header}    ${deviceEvent}
+
 Raise Alarm
     [Documentation]    Raise an Alarm
     [Arguments]    ${name}    ${sn}
@@ -152,8 +452,9 @@
 
 Verify Header
     [Documentation]    Verify that a DeviceEvent's header is sane and the id matches regex
-    [Arguments]    ${header}    ${id}
-    Should Be Equal   ${header}[subCategory]    ONU
+    [Arguments]    ${header}    ${id}    ${subCategory}
+    ${headerSubCategory}    Evaluate    $header.get("subCategory", "")
+    Should Be Equal   ${headerSubCategory}    ${subCategory}
     Should Be Equal   ${header}[type]    DEVICE_EVENT
     Should Match Regexp    ${header}[id]    ${id}
     # TODO Revisit when timestamp format is changed from Float to Timestamp
