I work with several MXD'S and i try to update a group layer named "allHa" containing several layers with this code:
import arcpy,os,sys,string
import arcpy.mapping
from arcpy import env
env.workspace = r"D:\PROJECTS\road_20\gis"
sourceLayer = arcpy.mapping.Layer(r"D:\PROJECTS\road_20\gis\layers\16_12_15\allHa.lyr")
for mxdname in arcpy.ListFiles("*.mxd"):
    print mxdname 
    mxd = arcpy.mapping.MapDocument(r"D:\PROJECTS\road_20\gis\\" + mxdname)
    df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
    updateLayer = arcpy.mapping.ListLayers(mxd, "allHa", df)[0]
    dfList = arcpy.mapping.ListDataFrames(mxd, "*")
    for df in dfList:
        for lyr in arcpy.mapping.ListLayers(mxd, "", df):                                   
            if lyr.name == u"allHa":
                 arcpy.mapping.UpdateLayer(df, lyr, sourceLayer, True)
                 print 'UpdateLayer'     
    mxd.save()
del mxd
but i get an error:
>>> 
antiquities__55-30__403.mxd
Traceback (most recent call last):
  File "C:\Program Files\CCleaner\yaron\shonot\software\---gis---  \tools\YARON_SCRIPTS\UpdateLayer 1 df.py", line 16, in <module>
    arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True)
  File "C:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\utils.py",    line 182, in fn_
    return fn(*args, **kw)
  File "C:\Program Files (x86)\ArcGIS\Desktop10.3\ArcPy\arcpy\mapping.py",     line 1897, in UpdateLayer
    tl._update(rl, symbology_only)
    ValueError: LayerObject: Unexpected error
>>> 


print lyr.nameimmediately beforeif lyr.name == u"allHa":to see what hint that gives.for df in dfList, since you already declared adfvariable above that? would you mind terrible marking up your code a little describing what certain lines are trying to do? i'm curious as to why you're listing all the dataframes after grabbing the first one.