OLE Error 424 - for some users only

SOLVED

Running Sage 100 Advanced 2018: I have created a UDT to hold key information needed for our accounts by zip code, and a Button Script to look up the data by zip code, populate certain fields, then show a message to the user. I can run the script just fine, as can another user with Admin rights. But my regular users with less rights get OLE Error 424, Object Required. I have confirmed that

  • All users have rights to access the UDT
  • Allow External Access is checked for the company
  • The script is set to Execute on the Server

If I assign Admin as a role to one of my regular users then the script suddenly works correctly for them, but obviously I don't want them to have Admin rights! For the life of me I can't find the setting in Roles that would allow the regular user to instantiate the UDT object. These users do use other Button Scripts but none attempt to access a UDT.

Here is a simplified version of the script. Please don't get distracted if there is an obvious syntax error like an extra  or missing End If, as this is stripped down and the original script works with no errors for Admin users. It seems obvious it's a permissions issue, but I'm hoping someone can point out what I'm missing. Thank you!

'ARCust_FranchiseByZip_BS.vbs BUTTON SCRIPT
'Designed to get Franchise Code, Division Code, County and Affiliate Code based on zip code of current account
'Button Script on AR Customer Main Panel
'Created 12/20/2020 jcbaker

'Variables passed to script
' AR_Customer_bus_ZipCode
'Executed on SERVER

'init vars
sZip = ""
oFbyZip = 0
sFranchise = ""
sDiv = ""
sCounty = ""
sFrOwner = ""
sMsg = ""
sZip = AR_Customer_bus_ZipCode
sZip = Left(sZip,5)

If sZip <> "" then

If Not(IsObject(oFbyZip)) Then
  oFByZip = oSession.GetObject("CM_UDTMaint_bus", "AR_UDT_FRANCHISEBYZIP")
  If oFbyZip<>0 Then
    Set oFbyZip = oSession.AsObject(oFbyZip)
  Else
    ' Check system error message
     errMsg = oSession.LastErrorMsg
   End If
End If

retVal = oFbyZip.SetKeyValue("UDF_ZIP$", sZip)
retVal = oFbyZip.Find()

If retVal <> 0 then
retVal = oFbyZip.GetValue("UDF_COUNTY$", sCounty)
retVal = oFbyZip.GetValue("UDF_DIV$", sDivSB)
retVal = oFbyZip.GetValue("UDF_FRANCHISE$", sFranchise)
retVal = oFbyZip.GetValue("UDF_OWNER$", sFrOwner)

sMsg = "Based on the existing zip code, the following is likely true. " & chr(13) & chr(10) yadda yadda yadda

retVal = oBusObj.SetValue("UDF_FR$",sFranchise)
retVal = oBusObj.SetValue("UDF_COUNTY$",sCounty)

retVal = oBusObj.SetValue("UDF_PASSTO$",sFrOwner)
retVal = oBusObj.SetValue("UDF_ATYPE$","P")

End If      'End if record is found
End If      'End if sZip <>""