This is resolved.
Net new machines created a MDT UDI Wizard TS as mentioned followed by Run Command Line .\WinAIA64.exe -silent -set "USERASSETDATA.ASSET_NUMBER=%TSAssetTag%" (looking at package during Run Command Line 'WinAIA64')
Existing machines a bit more tricker , great help from https://smsagent.blog/2014/01/30/prompting-for-input-during-a-task-sequence/ , tweaked as below and added into a new TS.
Run Command Line - ServiceUI.exe -process:TSProgressUI.exe %SYSTEMROOT%\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -WindowStyle Hidden -ExecutionPolicy Bypass -File PROMPTFORASSETTAGv6.ps1
<#
PromptForAssetTag v6
This script prompts for input during a task sequence, and sets the input as a TS variable.
>
Close the TS UI temporarily
$TSProgressUI = New-Object -COMObject Microsoft.SMS.TSProgressUI
$TSProgressUI.CloseProgressDialog()
[System.Reflection.Assembly]::LoadWithPartialName('Microsoft.VisualBasic') | Out-Null
$TSAssetTag = [Microsoft.VisualBasic.Interaction]::InputBox("Enter Asset tag on the reverse of the machine", "AssetTag prompt", "eg 1234")
Set the TS variable
$tsenv = New-Object -COMObject Microsoft.SMS.TSEnvironment
$tsenv.Value("TSAssetTag") = $TSAssetTag
New-Item -ItemType Directory -force -path c:\logs\AssetTag
New-Item -ItemType Directory -force -path c:\Installers\AssetTag
$date = (get-date)
copy-item \***-sccm01\Sources\Applications\Lenovo\WinAIA64\WinAIA64.exe c:\Installers\AssetTag\WinAIA64.exe
c:\Installers\AssetTag\WinAIA64.exe -silent -set "USERASSETDATA.ASSET_NUMBER=$TSAssetTag"
write-output $date | out-file -encoding ascii -append -filepath 'c:\logs\AssetTag\assettag.txt'
write-output 'assettag written to BIOS' | out-file -encoding ascii -append -filepath 'c:\logs\AssetTag\assettag.txt'