Pretty much everything that we were doing with web service calls failed after that. Below is a change that the developers had to make, which appears to be working, initially.This will involve a lot of code changes to get this to work and appears to be a bug, introduced in one of the updates. Is this a known bug, or is there a fix for this?

You have to make sure that you send actual well-formed XML. Your old code had the issue that you didn't specify the XML namespace for the "dl" element; adding a zadmin: prefix there should have worked as well but I think your approach is cleaner.

2017-11-09 08:56:59,649 WARN [qtp1121172875-15889:https:https://ip-172-31-4-202.eu-central-1.compute.internal:7071/service/admin/soap] [name=zimbra;ip=172.31.4.202;port=39878;] SoapEngine - handler exceptionjava.lang.NullPointerException at com.zimbra.cs.service.admin.GetDistributionList.handle(GetDistributionList.java:94) at com.zimbra.soap.SoapEngine.dispatchRequest(SoapEngine.java:607) at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:460) at com.zimbra.soap.SoapEngine.dispatch(SoapEngine.java:273) at com.zimbra.soap.SoapServlet.doWork(SoapServlet.java:303) at com.zimbra.soap.SoapServlet.doPost(SoapServlet.java:213) at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) at com.zimbra.cs.servlet.ZimbraServlet.service(ZimbraServlet.java:206) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:821) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1685) at com.zimbra.cs.servlet.CsrfFilter.doFilter(CsrfFilter.java:169) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at com.zimbra.cs.servlet.RequestStringFilter.doFilter(RequestStringFilter.java:54) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at com.zimbra.cs.servlet.SetHeaderFilter.doFilter(SetHeaderFilter.java:59) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at com.zimbra.cs.servlet.ETagHeaderFilter.doFilter(ETagHeaderFilter.java:47) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at com.zimbra.cs.servlet.ContextPathBasedThreadPoolBalancerFilter.doFilter(ContextPathBasedThreadPoolBalancerFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at com.zimbra.cs.servlet.ZimbraQoSFilter.doFilter(ZimbraQoSFilter.java:107) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at com.zimbra.cs.servlet.ZimbraInvalidLoginFilter.doFilter(ZimbraInvalidLoginFilter.java:117) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at org.eclipse.jetty.servlets.DoSFilter.doFilterChain(DoSFilter.java:473) at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:318) at org.eclipse.jetty.servlets.DoSFilter.doFilter(DoSFilter.java:288) at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1668) at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:581) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524) at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226) at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1158) at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:511) at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1090) at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:213) at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:109) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) at org.eclipse.jetty.rewrite.handler.RewriteHandler.handle(RewriteHandler.java:318) at org.eclipse.jetty.server.handler.gzip.GzipHandler.handle(GzipHandler.java:437) at org.eclipse.jetty.server.handler.DebugHandler.handle(DebugHandler.java:84) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:119) at org.eclipse.jetty.server.Server.handle(Server.java:517) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:306) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:242) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:192) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:261) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:95) at org.eclipse.jetty.io.SelectChannelEndPoint$2.run(SelectChannelEndPoint.java:75) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.produceAndRun(ExecuteProduceConsume.java:213) at org.eclipse.jetty.util.thread.strategy.ExecuteProduceConsume.run(ExecuteProduceConsume.java:147) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:654) at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:572) at java.lang.Thread.run(Thread.java:748)2017-11-09 08:56:59,650 INFO [qtp1121172875-15889:https:https://ip-172-31-4-202.eu-central-1.compute.internal:7071/service/admin/soap] [name=zimbra;ip=172.31.4.202;port=39878;] soap - GetDistributionListRequest elapsed=4

Something is really odd here. I took a proper request from zmprov --debug and just dropped the dl element. This resulted in a proper SOAP error "invalid request: missing required element: dl". Then I just added a wrong xmlns to the dl element and got the NPE (see below). When I renamed the element but kept the wrong namespace, I got the proper SOAP error again. At least the first and the last one should be equivalent since in both cases a sub-element exists but is in the wrong namespace. The SOAP/XML parser shouldn't look at the elements name at all then.

finally found the issue. There hasn't been any changes in Zimbra Soap API. The difference in behaviour (now all elements need to be defined with proper namespace) is because of change in the open jdk version used with zimbra build. now openjdk-1.8.0u144 is used and there was a fix in the jdk code : "8134111: Unmarshaller unmarshalls XML element which doesn't have the expected namespace".