One thing I see that could cause an issue is
Yes .. you cannot pass a list to vl-string-subst. Use (car findjgw).
Also your UNC path check could be simplified to this:
(if (wcmatch (getvar 'dwgprefix) "\\*")
"UNC"
"MAPPED"
)
Just guessing, but this looks like an incorrect path too.
(setq sfpath (strcat "\\\\" drive "\\" dir1 "\\" dir2 "\\" dir3 "\\" dir4 "\\"))