diff --git a/lso/playbook.py b/lso/playbook.py
index 4475f7d7e83f5ede5db4ee6dfbf20088779c81ae..3e013ba5bb5fbe462490065b12e0cbfc5bb9ee6c 100644
--- a/lso/playbook.py
+++ b/lso/playbook.py
@@ -8,6 +8,7 @@ import uuid
 import ansible_runner
 import requests
 import xmltodict
+from dictdiffer import diff
 from pydantic import BaseModel, HttpUrl
 
 logger = logging.getLogger(__name__)
@@ -115,15 +116,14 @@ def _run_playbook_proc(job_id: str, playbook_path: str, extra_vars: dict, invent
                     #  Juniper-specific
                     #  Prevent the diff from being displayed twice, and only keep the formatted version.
                     task_result.pop("diff", None)
-                elif "before" in task_result["diff"] and "after" in task_result["diff"]:
+                elif "diff" in task_result and "before" in task_result["diff"] and "after" in task_result["diff"]:
                     #  Nokia-specific
                     #  We have a chunk of Nokia config, and we would like to show the actual diff, not a full before and
-                    #  after. This will take some extra steps.
+                    #  after.
                     before_parsed = xmltodict.parse(task_result["diff"]["before"])
                     after_parsed = xmltodict.parse(task_result["diff"]["after"])
                     #  Only leave the diff in the resulting output
-                    task_result["diff"] = {k: v for k, v in after_parsed.items() if
-                                           k not in before_parsed or v != before_parsed[k]}
+                    task_result["diff"] = list(diff(before_parsed, after_parsed))[0]
 
                 if bool(task_result):
                     #  Only add the event if there are any relevant keys left.
diff --git a/requirements.txt b/requirements.txt
index b21387da8cede198d071de0e30a303cebbc2a053..db7bcae4689ff8446a95cfecb8270dceba39cabf 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -30,4 +30,6 @@ junos-eznc
 jxmlease
 ncclient
 ruamel.yaml
-xmltodict
+xmltodict~=0.13.0
+dictdiffer~=0.9.0
+jmespath~=1.0.1