diff --git a/providers/netconf/alarm/src/main/java/org/onosproject/provider/netconf/alarm/NetconfAlarmProvider.java b/providers/netconf/alarm/src/main/java/org/onosproject/provider/netconf/alarm/NetconfAlarmProvider.java
index 5a86dd0..ec74eb6 100644
--- a/providers/netconf/alarm/src/main/java/org/onosproject/provider/netconf/alarm/NetconfAlarmProvider.java
+++ b/providers/netconf/alarm/src/main/java/org/onosproject/provider/netconf/alarm/NetconfAlarmProvider.java
@@ -25,9 +25,7 @@
 import org.onosproject.incubator.net.faultmanagement.alarm.Alarm;
 import org.onosproject.incubator.net.faultmanagement.alarm.AlarmProvider;
 import org.onosproject.incubator.net.faultmanagement.alarm.AlarmProviderService;
-import org.onosproject.incubator.net.faultmanagement.alarm.AlarmService;
 import org.onosproject.incubator.net.faultmanagement.alarm.AlarmProviderRegistry;
-import org.onosproject.incubator.net.faultmanagement.alarm.DefaultAlarm;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.provider.AbstractProvider;
 import org.onosproject.net.provider.ProviderId;
@@ -41,8 +39,10 @@
 import org.onosproject.netconf.ctl.NetconfDeviceOutputEventListenerImpl;
 import org.slf4j.Logger;
 
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.Map;
 
 import static org.slf4j.LoggerFactory.getLogger;
@@ -62,9 +62,6 @@
     @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
     protected NetconfController controller;
 
-    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
-    protected AlarmService alarmService;
-
     protected AlarmProviderService providerService;
 
     private Map<DeviceId, InternalNotificationListener> idNotificationListenerMap = Maps.newHashMap();
@@ -94,8 +91,8 @@
         providerRegistry.unregister(this);
         idNotificationListenerMap.forEach((id, listener) -> {
             controller.getNetconfDevice(id)
-                      .getSession()
-                      .removeDeviceOutputListener(listener);
+                    .getSession()
+                    .removeDeviceOutputListener(listener);
         });
         controller.removeDeviceListener(deviceListener);
         providerService = null;
@@ -123,10 +120,11 @@
         public void event(NetconfDeviceOutputEvent event) {
             if (event.type() == NetconfDeviceOutputEvent.Type.DEVICE_NOTIFICATION) {
                 DeviceId deviceId = event.getDeviceInfo().getDeviceId();
-                Alarm newAlarm = new DefaultAlarm.Builder(deviceId, event.getMessagePayload(),
-                                                          Alarm.SeverityLevel.WARNING, 0).build();
-                Collection<Alarm> alarms = Collections.singleton(newAlarm);
-                triggerProbe(deviceId, alarms);
+                NetconfAlarmTranslator translator = new NetconfAlarmTranslator();
+                String message = event.getMessagePayload();
+                InputStream in = new ByteArrayInputStream(message.getBytes(StandardCharsets.UTF_8));
+                Collection<Alarm> newAlarms = translator.translateToAlarm(deviceId, in);
+                triggerProbe(deviceId, newAlarms);
             }
         }
     }
