diff --git a/audit/audit.go b/audit/audit.go
index 6dff2b1d2b9a8b7c4c48439203d31b73c41a2577..51bd5ffb8770cf86b4b7c927289e67ebee8e8ccc 100644
--- a/audit/audit.go
+++ b/audit/audit.go
@@ -40,7 +40,7 @@ func GetChanges(original interface{}, new interface{}) (map[string]interface{},
 
 			ChildObjectChanges(changes, change.Path[0], change.Path[1], change.From, change.To)
 
-		} else if len(change.Path) == 3 {
+		} else if len(change.Path) >= 3 {
 			// Array of objects
 			// ["Parcel", "0", "ActualWeight"]
 			// 0 = Object
@@ -51,7 +51,7 @@ func GetChanges(original interface{}, new interface{}) (map[string]interface{},
 			indexString := change.Path[1]
 
 			if !string_utils.IsNumericString(indexString) {
-				// Not an array, but an deeper nested object
+				// Not an array, but a deeper nested object
 				ChildObjectChanges(changes, change.Path[len(change.Path)-2], change.Path[len(change.Path)-1], change.From, change.To)
 				continue
 			}
diff --git a/audit/audit_test.go b/audit/audit_test.go
new file mode 100644
index 0000000000000000000000000000000000000000..b10fce6717ebfbc9ba78ed55f08eb5f981b81a98
--- /dev/null
+++ b/audit/audit_test.go
@@ -0,0 +1,46 @@
+package audit
+
+import (
+	"encoding/json"
+	"fmt"
+	"testing"
+)
+
+type MockObject struct {
+	Object interface{}
+}
+
+func TestGetChanges(t *testing.T) {
+
+	object1 := MockObject{
+		Object: MockObject{
+			Object: MockObject{
+				Object: MockObject{
+					Object: MockObject{
+						Object: "done",
+					},
+				},
+			},
+		},
+	}
+
+	object2 := MockObject{
+		Object: MockObject{
+			Object: MockObject{
+				Object: MockObject{
+					Object: MockObject{
+						Object: "done1",
+					},
+				},
+			},
+		},
+	}
+
+	changes, err := GetChanges(object1, object2)
+	if err != nil {
+		panic(err)
+	}
+
+	result, _ := json.Marshal(changes)
+	fmt.Println(result)
+}