diff --git a/src/sccp_config.c b/src/sccp_config.c
index e15d19db..c78bcbf2 100644
--- a/src/sccp_config.c
+++ b/src/sccp_config.c
@@ -3062,6 +3062,7 @@ int sccp_manager_config_metadata(struct mansession *s, const struct message *m)
        uint i;
        const char *id = astman_get_header(m, "ActionID");
        const char *req_segment = astman_get_header(m, "Segment");
+       const char *req_listresult = astman_get_header(m, "ListResult");
        uint comma = 0;

        if (sccp_strlen_zero(req_segment)) {                                                                            // return all segments
@@ -3180,11 +3181,22 @@ int sccp_manager_config_metadata(struct mansession *s, const struct message *m)
                                sccpConfigSegment = &sccpConfigSegments[i];
                                const SCCPConfigOption *config = sccpConfigSegment->config;

-                               astman_append(s, "Response: Success\r\n");
-                               if (!ast_strlen_zero(id)) {
-                                       astman_append(s, "ActionID: %s\r\n", id);
+                               if (sccp_strcaseequals(req_listresult, "yes")) {
+                                       //astman_append(s, "Response: Follows\r\n\r\n");
+                                       //astman_append(s, "EventList: Start\r\n");
+                                       astman_send_listack(s, m, "SCCPConfigMetaData Follows", "Start");
+                                       astman_append(s, "Event: SCCPConfigMetaData\r\n");
+                                       if (!ast_strlen_zero(id)) {
+                                               astman_append(s, "ActionID: %s\r\n", id);
+                                       }
+                               } else if (sccp_strcaseequals(req_listresult, "freepbx")) {
+                                       astman_append(s, "Response: Follows\r\n");
+                               } else {
+                                       astman_append(s, "Response: Success\r\n");
+                                       if (!ast_strlen_zero(id)) {
+                                               astman_append(s, "ActionID: %s\r\n", id);
+                                       }
                                }
-
                                astman_append(s, "JSON: {");
                                astman_append(s, "\"Segment\":\"%s\",", sccpConfigSegment->name);
                                astman_append(s, "\"Options\":[");
@@ -3296,8 +3308,17 @@ int sccp_manager_config_metadata(struct mansession *s, const struct message *m)
                                                comma = 1;
                                        }
                                }
-                               astman_append(s, "]}\r\n\r\n");
+                               astman_append(s, "]}\r\n");
                                total++;
+                               if (sccp_strcaseequals(req_listresult, "yes")) {
+                                       astman_append(s,
+                                               "\r\nEvent: SCCPConfigMetaDataComplete\r\n"
+                                               "EventList: Complete\r\n"
+                                               "ListItems: %d\r\n\r\n", total);
+                               } else if (sccp_strcaseequals(req_listresult, "freepbx")) {
+                                       astman_append(s, "--END COMMAND--\r\n");
+                               }
+                               astman_append(s, "\r\n");
                        }
                }
        }
