Tag Archives: SOLMAN keygen

Create SOLMAN installation key

Transaction code SMSY in solution manager.
In « Systems », create a new entry with the SID, save.
System menu > Other objects, click on the key icon, indicate the SID, sysnum and message server.

Another solution is to create a VBS script that generates keys:

''''''''''''''''''''''''''''''''''''''
'   Solution Manager Key Generator   '
'Save to SolManKeyGen.vbs and execute'
'                                    '
''''''''''''''''''''''''''''''''''''''
'-------------------------------------------------------
Dim SIDs, SNs, SERVs, msg, ENDs, KEYs
msg="System ID (3 chr.)"
SIDs=InputBox(msg,"Solution Manager Key Generator")
msg="System Number (2 dig.)"
SNs=InputBox(msg,"Solution Manager Key Generator")
msg="Server Name (max. 15 chr.)"
SERVs=InputBox(msg,"Solution Manager Key Generator")
KEYs=SolManKeyGen(SIDs, SNs, SERVs)
msg="Solution Manager Key"
ENDs=InputBox(msg,"Solution Manager Key Generator",KEYs)
'-------------------------------------------------------
Function SolManKeyGen(SIDst, SNst, SERVst)
 Dim SIDSNhex(5)
 Dim SERVhex(15)
 Dim reshex(5)
 SIDSNstr = UCase(SIDst) + UCase(SNst)
 SERVstr  = UCase(SERVst)
 For arrcnt = 1 To 5
  SIDSNhex(arrcnt) = Asc(Mid(SIDSNstr, arrcnt, 1))
 Next
 For arrcnt = 1 To Len(SERVstr)
  SERVhex(arrcnt) = Asc(Mid(SERVstr, arrcnt, 1))
 Next
 For arrcnt = Len(SERVstr) + 1 To 15
  SERVhex(arrcnt) = 0
 Next
 If (Len(SERVstr) > 0) Then
  If (Len(SERVstr) < 5) Then
   For arrcnt = Len(SERVstr) + 1 To 5
    SERVhex(arrcnt) = Asc(" ")
   Next
  End If
 End If
 If (Len(SERVstr) > 5) Then
  If (Len(SERVstr) < 10) Then
   For arrcnt = Len(SERVstr) + 1 To 10
    SERVhex(arrcnt) = Asc(" ")
   Next
  End If
 End If
 If (Len(SERVstr) > 10) Then
  If (Len(SERVstr) < 15) Then
   For arrcnt = Len(SERVstr) + 1 To 15
    SERVhex(arrcnt) = Asc(" ")
   Next
  End If
 End If
 For arrcnt = 1 To 5
  reshex(arrcnt) = ((((0 Xor SIDSNhex(arrcnt)) Xor SERVhex(arrcnt)) Xor SERVhex(arrcnt + 5)) Xor SERVhex(arrcnt + 10))
 Next
 reshex(1) = reshex(1) Xor 84  Xor 0
 reshex(2) = reshex(2) Xor 131 Xor 11
 reshex(3) = reshex(3) Xor 194 Xor 46
 reshex(4) = reshex(4) Xor 52  Xor 105
 reshex(5) = reshex(5) Xor 119 Xor 188
 hexstr = "0123456789ABCDEF"
 resstr = ""
 For arrcnt = 1 To 5
  hihex = reshex(arrcnt)  16
  lohex = reshex(arrcnt) Mod 16
  resstr = resstr + Mid(hexstr, hihex + 1, 1) + Mid(hexstr, lohex + 1, 1)
 Next
 SolManKeyGen = resstr
End Function