In ArcGIS Portal an Arcade labeling expression is testing successfully in the Arcade editor (returns expected value in the Results tab), but the feature in the Map Viewer/Visualization does not display. All features in this layer remain unlabeled.


The full arcade expression is below. This same expression works within ArcGIS Pro (features are labeled) .
////////////////////////////////////////
// label order: 1-MaxFeatID if joined, 2-IDPK if not joined, 3-MaximoID (if Metro returns last 5 chars with prefix "*" or "HYD" if hydrant/hyd valve, if not Metro returns full MaxID), 4-FeatureName
//////////
var commodity = 'water'
var assettype = 'hydrant'
var field_typeassetnum = assettype + '_assetnum'
var field_typefeatid = assettype + '_featureid'
var field_locations = 'locations_location'
var field_nodeidpk = commodity + 'utilitynodeidpk'
var field_featureidpk = commodity + 'utilityfeatureidpk'
var field_max = 'maximoassetidfk'
var field_maxloc = 'maximolocationidfk'
var feat_text = Text($feature)
var portal_tf = when(Find('editor', feat_text) != -1, True, False)
Console('portal_tf: '+portal_tf)
if(portal_tf == False){
Expects($feature, 'maximoassetidfk', 'waterutilitynodeidpk', 'waterutilityfeatureidpk', 'locations_location', 'maximolocationidfk', 'capbank_assetnum', 'condcltr_assetnum', 'ctrlvalve_assetnum', 'dynprotdev_assetnum', 'electmeter_assetnum', 'encl_assetnum', 'expjoint_assetnum', 'generator_assetnum', 'gtows_assetnum', 'hydrant_assetnum', 'inst_assetnum', 'line_assetnum', 'mechmeter_assetnum', 'motor_assetnum', 'pipe_assetnum', 'pump_assetnum', 'receptacle_assetnum', 'relvalve_assetnum', 'shorepwr_assetnum', 'statprodev_assetnum', 'supstructure_assetnum', 'surfstructure_assetnum', 'switch_assetnum', 'sysvalve_assetnum', 'tank_assetnum', 'ugstructure_assetnum', 'voltreg_assetnum', 'well_assetnum', 'xfmr_assetnum', 'capbank_featureid', 'condcltr_featureid', 'ctrlvalve_featureid', 'dynprotdev_featureid', 'electmeter_featureid', 'encl_featureid', 'expjoint_featureid', 'generator_featureid', 'gtows_featureid', 'hydrant_featureid', 'inst_featureid', 'line_featureid', 'mechmeter_featureid', 'motor_featureid', 'pipe_featureid', 'pump_featureid', 'receptacle_featureid', 'relvalve_featureid', 'shorepwr_featureid', 'statprodev_featureid', 'supstructure_featureid', 'surfstructure_featureid', 'switch_featureid', 'sysvalve_featureid', 'tank_featureid', 'ugstructure_featureid', 'voltreg_featureid', 'well_featureid', 'xfmr_featureid')
}
Console(Text($feature))
var idpk = When(Haskey($feature, field_nodeidpk), $feature[field_nodeidpk], Haskey($feature, field_featureidpk), $feature[field_featureidpk], '')
var typeassetnum = When(Haskey($feature, field_typeassetnum), $feature[field_typeassetnum], Haskey($feature, field_maxloc), $feature[field_maxloc], '')
var typefeatid = When(Haskey($feature, field_typefeatid), $feature[field_typefeatid], Haskey($feature, field_locations), $feature[field_locations], '')
var maxid = When(Haskey($feature, field_max), $feature[field_max], '')
Console(iif(Haskey($feature, field_nodeidpk)||Haskey($feature, field_featureidpk), 'haskey - idpk', 'DOES NOT haskey - idpk'))
Console(iif(Haskey($feature, field_typeassetnum)||Haskey($feature, field_maxloc), 'haskey - typeassetnum or maxloc', 'DOES NOT haskey - typeassetnum or maxloc'))
Console(iif(Haskey($feature, field_typefeatid)||Haskey($feature, field_locations), 'haskey - typefeatid or locations', 'DOES NOT haskey - typefeatid or locations'))
Console(iif(Haskey($feature, field_max), 'haskey - maxid', 'DOES NOT haskey - maxid'))
// //
// if(Haskey($feature, field_max)){
// Console('haskey - maxid')
// var maxid = $feature[field_max]
// }
// else
// {
// Console('DOES NOT haskey - maxid')
// var maxid = ''
// }
// //////////
var site = $feature.installationid
var fn = $feature.featurename
// QC variables
site = when(!IsEmpty(site), Trim(site), '')
idpk = when(!IsEmpty(idpk), Trim(idpk), '')
maxid = when(!IsEmpty(maxid), Trim(maxid), '')
fn = when(!IsEmpty(fn), Trim(fn), '')
typeassetnum = when(!IsEmpty(typeassetnum), Trim(typeassetnum), '')
typefeatid = when(!IsEmpty(typefeatid), Trim(typefeatid), '')
// display variables (QC labeling)
//return('site:'+site+'\nfn:'+fn+'\ntypeassetnum:'+typeassetnum+'\ntypefeatid:'+typefeatid+'\nidpk:'+idpk+'\nmaxid:'+maxid)
// metro=NBPL, NBC, NBSD, NAFEC
var uic = when(Count(site) > 5, Left(site, 6), site)
var metro = ['N63406', 'N00246', 'N00245', 'N60042']
var metro_tf = Boolean(IndexOf(metro, uic)+1)
var badvals = ['ABANDONED', 'Vault', 'Hand Hole', 'Junction Box', 'Pull Box', 'Handhole', 'Manhole', 'New', 'NEW', 'NA', 'Null', 'unk', 'Unk', 'UNK', 'Unknown', 'UNKNOWN', '99999', 'Awaiting Maximo Record', 'TBD', 'LEMOOR-U89', 'Airfield Light', 'DropInlet', '068111M', '088111M', 'PORHUE-U73', 'POIMUG-S31', 'POIMUG-S5', 'CHILAK-S72', 'LEMOOR-U13', '32052', 'Parking Lot Light', 'Street Light', '280060', '2-07516SL', 'Security Light', 'BASNI27 TAXI LIGHT', 'LEMOOR-U80', 'CurbInlet', 'CHILAK-S12', 'Private', '200753', 'UMA254000224', '2-08301PL', '068111MAREA12', 'CatchBasin', 'R84714', 'Unk', 'R126016', 'CurbCut', 'BASNIS17 LIGHTING', 'R84642', '200534', '066311MAREA01', 'R56663', 'R72084', 'R126248', 'CHILAK-S14', '068111MAREA02', '068111MPIER07', 'UMA254000222', 'R126084', 'R84709', '068111MPIER13', '068111MPIER02', 'CHILAK-41252', '068111MPIER03', '068111MPIER04', 'R126242', '068111MPIER08', 'R116581', '068111MPIER05', '068111MPIER10', 'Traffic Light', 'R146796', '068111MPIER12', '086311MAREA01', 'POIMUG-200327', 'R84691', 'LTG-SEC', 'R126507', 'R126514', 'R84673', 'NBC-N-12', 'UMA254000226', 'IID', '068111MPIER01', '068111MPIER06', 'NBSD-PW-SA-PR10', '118311MAREA03', 'Asset creation required', 'R84695', '289062', '118311MAREA02', '118311MAREA01', 'R126177', 'Riser', 'R116524', 'R126520', 'Walkway Light', '0', 'CHILAK-U19', '086311MAREA06', 'R83758', 'R84677', 'Recreation Field Light', 'R126189', 'PipeInlet', '<Null>', 'NOT IN MAXIMO', 'UMA339000429', 'UMA260000011', 'R143822', '086311MAREA06-SDG&E', 'POIMUG-SS', 'UMA254000225', '025128STAC-01', 'Abn', 'No', 'R126178', 'R126183', 'R126190', '086311MAREA07', 'CHILAK-02755', 'R116520', 'R45432', '086311MAREA05', 'Asset creation needed', 'NASSCO', 'NEEDNEW_WASDUPE', 'location needed', 'N/A', 'UNKNOWN', 'BoxInlet', 'Other', '+', 'WELL']
idpk = when(Boolean(IndexOf(badvals, idpk)+1), '', idpk)
maxid = when(Boolean(IndexOf(badvals, maxid)+1), '', maxid)
fn = when(Boolean(IndexOf(badvals, fn)+1), '', fn)
fn = when(Count(fn) > 20, trim(Right(fn, 20)), fn)
if (metro_tf == True)
{
var maxidvalid = when(!IsEmpty(typeassetnum), True, False)
var typefeatidvalid = when(!IsEmpty(typefeatid) && maxid != typefeatid, True, False)
idpk = when(maxidvalid == True && typefeatidvalid == True, typefeatid, idpk)
var hyd = when(Find('HYD', maxid) != -1, True, False)
if (hyd == True)
{
var hydptct = when(hyd == True, Count(Split(maxid, 'HYD')), 0)
var hydpt1 = when(hyd == True && hydptct == 2, trim(Split(maxid, 'HYD')[0]), '')
var hydpt2 = when(hyd == True && hydptct == 2, trim(Split(maxid, 'HYD')[1]), '')
maxid = when(hydptct == 2 && hydpt2 != '', Concatenate(['HYD', hydpt2]),
hydptct == 2 && hydpt2 == '', maxid,
maxid
)
}
else
{maxid = when(Count(maxid) >= 5, "*"+trim(Right(maxid, 5)), maxid)}
Console(when(!IsEmpty(idpk), idpk, IsEmpty(idpk) && !IsEmpty(fn), fn, IsEmpty(idpk) && IsEmpty(fn), maxid, ''))
return when(!IsEmpty(idpk), idpk, IsEmpty(idpk) && !IsEmpty(fn), fn, IsEmpty(idpk) && IsEmpty(fn), maxid, '')
}
if (metro_tf == False)
{
var maxidvalid = when(!IsEmpty(typeassetnum), True, False)
var typefeatidvalid = when(!IsEmpty(typefeatid), True, False)
idpk = when(maxidvalid == True && typefeatidvalid == True, typefeatid, idpk)
//return when(!IsEmpty(idpk), idpk, IsEmpty(idpk) && !IsEmpty(fn), fn, IsEmpty(idpk) && IsEmpty(fn), maxid, '')
Console(when(!IsEmpty(idpk), idpk, IsEmpty(idpk) && !IsEmpty(maxid), maxid, IsEmpty(idpk) && IsEmpty(maxid) && !IsEmpty(fn), fn, ''))
return when(!IsEmpty(idpk), idpk, IsEmpty(idpk) && !IsEmpty(maxid), maxid, IsEmpty(idpk) && IsEmpty(maxid) && !IsEmpty(fn), fn, '')
} Console() output in the messages tab, which mirror the Return statements, also shows the correct label value.