Skip to content

Agent Facts

Before EEI installs, upgrades or updates a connector on your Seeq agent host, it needs a short description of that host and of the connector's settings: the agent facts. You attach them to the support request EEI opens for the work; see Onboarding and Updating a Connector.

There are three ways to give them, and you choose one on the request's form:

Way What you do
The script (quickest) Paste the read-only script below into PowerShell on the agent host, read the file it writes, and attach it
By hand Look up the same facts yourself and reply with them: Without the script
EEI reads them in Seeq Where EEI has an administrator account on your Seeq server, EEI reads most of them there, and you supply only three: With EEI access to your Seeq server

None of the three includes a password, user name or domain. Please do not put credentials anywhere in the request.

Which connectors it covers

The script's steps 1–5 describe the agent host and apply to every EEI connector for Seeq. Step 6 reads a connector's own settings, and is written per connector:

Connector Step 6 Its settings by hand
ABB Knowledge Manager Yes ABB Knowledge Manager
Metadata Connector Not yet: the script still collects steps 1–5 With EEI, on the request

The script

Run it on the agent host in Windows PowerShell opened as administrator (Start menu → Windows PowerShell → right-click → Run as administrator), with the Seeq agent running. It is for Windows PowerShell 5.1 or PowerShell 7, not the ordinary Command Prompt (cmd.exe). Copy all of it, paste it into the window, and press Enter.

If your Seeq data folder is not C:\ProgramData\Seeq\data, change the line near the top that names it, and tell EEI where it is.

# =============================================================================================
#  EEI agent facts: describes this Seeq agent host for your connector upgrade.
#
#  This script only READS. It changes nothing, installs nothing, starts or stops nothing, and
#  sends nothing over the network. It writes ONE file, <computer name>-seeq-agent-facts.json, on your
#  Desktop, and shows it on screen so you can read it before you attach it to your request.
#
#  It never copies a password, user name or domain. For each connection it records only HOW
#  the password is kept (in the VForge store, in the file, as a reference, or not set).
#
#  Each step below says what it reads. To check for yourself: the only command that writes
#  anything is WriteAllText in step 7, and it writes only that one file. (New-Object in
#  step 7 creates the text encoding in memory; it writes nothing.)
# =============================================================================================

# Your Seeq data folder. Change this only if Seeq keeps its data somewhere else.
$SeeqDataFolder = 'C:\ProgramData\Seeq\data'

# --- Step 1. This computer's name and Windows version, and when the facts were collected -----
$Windows = Get-CimInstance Win32_OperatingSystem -ErrorAction SilentlyContinue
$Facts = [ordered]@{
  kind        = 'eei-seeq-agent-facts'
  schema      = 1
  collectedAt = (Get-Date).ToUniversalTime().ToString('yyyy-MM-ddTHH:mm:ssZ')
  hostname    = $env:COMPUTERNAME
  os          = [ordered]@{ name = $Windows.Caption; version = $Windows.Version }
  dataFolder  = $SeeqDataFolder
  notes       = @()
}

# --- Step 2. The Java the Seeq agent uses: its path, and the version in its file details -----
# The running Java if the agent is running; otherwise the Java inside the Seeq installation.
# Either way the version is read from the file's details: Java itself is never started.
$JavaFiles = @(Get-CimInstance Win32_Process -Filter "Name='java.exe'" -ErrorAction SilentlyContinue |
                 Where-Object { $_.ExecutablePath } | ForEach-Object { $_.ExecutablePath } | Select-Object -Unique)
$JavaRunning = $JavaFiles.Count -gt 0
if (-not $JavaRunning) {
  $JavaFiles = @(Get-ChildItem 'C:\Program Files\Seeq*' -Recurse -Filter 'java.exe' -ErrorAction SilentlyContinue |
                   ForEach-Object { $_.FullName })
}
$Facts.java = @($JavaFiles | ForEach-Object { [ordered]@{
  path    = $_
  version = (Get-Item $_).VersionInfo.ProductVersion
  running = $JavaRunning } })

# --- Step 3. The Seeq Windows services: name, running or not, and the account each runs as ---
$Facts.services = @(
  Get-CimInstance Win32_Service -ErrorAction SilentlyContinue |
    Where-Object { $_.Name -like '*seeq*' } |
    ForEach-Object { [ordered]@{ name = $_.Name; state = $_.State; startName = $_.StartName } }
)

# --- Step 4. The Seeq Link SDK version: the NAMES of the SDK files (not their contents) -------
$Facts.seeqLinkSdkJars = @(
  Get-ChildItem 'C:\Program Files\Seeq*' -Recurse -Filter 'seeq-link-sdk*.jar' -ErrorAction SilentlyContinue |
    ForEach-Object { $_.Name }
)

# --- Step 5. The installed connectors: folder NAMES only --------------------------------------
$Facts.connectorFolders = @(
  Get-ChildItem (Join-Path $SeeqDataFolder 'plugins\connectors') -Directory -ErrorAction SilentlyContinue |
    ForEach-Object { $_.Name }
)

# --- Step 6. The ABB Knowledge Manager connector's settings, never its passwords --------------
function Get-PasswordStorage($Value) {
  # Says HOW a password is kept. The password itself is never returned or written.
  $text = "$Value"
  if ($text -eq '' -or $text -eq '********') { return 'blank' }
  if ($text -eq 'VFORGE_SECRETS')           { return 'store' }
  if ($text -like 'SECRETS_FILE:*')          { return 'reference' }
  return 'inline'
}

$ConfigFile = Join-Path $SeeqDataFolder 'configuration\link\ABB KM Connector V3.json'
if (Test-Path $ConfigFile) {
  $Config = Get-Content -Raw $ConfigFile | ConvertFrom-Json
  $Facts.config = [ordered]@{
    file                = 'ABB KM Connector V3.json'
    version             = $Config.Version
    virtualForgeEnabled = $Config.VForge.VirtualForgeEnabled
    connections         = @($Config.Connections | ForEach-Object { [ordered]@{
      id                        = $_.Id
      name                      = $_.Name
      enabled                   = $_.Enabled
      webServiceMethod          = $_.WebServiceMethod
      webServiceIP              = $_.WebServiceIP
      webServicePort            = $_.WebServicePort
      webServiceUrl             = $_.WebServiceURL
      tlsTrust                  = $_.VForge.Http.Tls.Trust
      trustStore                = $_.VForge.Http.Tls.TrustStore
      credentialMode            = (Get-PasswordStorage $_.Password)
      hierarchyMode             = $_.HierarchyMode
      userTimeZone              = $_.UserTimeZone
      indexing                  = [ordered]@{ frequency = $_.Indexing.Frequency
                                              onStartupAndConfigChange = $_.Indexing.OnStartupAndConfigChange }
      maxConcurrentRequests     = $_.MaxConcurrentRequests
      maxResultsPerRequest      = $_.MaxResultsPerRequest
      monitoringEnabled         = $_.VForge.Monitoring.Enabled
      webServiceTimeout         = $_.WebServiceTimeout
      customFieldConfigurations = ($null -ne $_.FieldConfigurations) } })
  }
} else {
  $Facts.notes += "No ABB Knowledge Manager configuration at $ConfigFile"
}

# --- Step 7. Write <computer name>-seeq-agent-facts.json on your Desktop, and show it ---------
# (An Administrator PowerShell starts in C:\Windows\System32; the file goes to your Desktop instead.)
$OutFolder = [Environment]::GetFolderPath('Desktop')
if (-not $OutFolder -or -not (Test-Path $OutFolder)) { $OutFolder = $env:USERPROFILE }
$OutFile = Join-Path $OutFolder ($env:COMPUTERNAME.ToLower() + '-seeq-agent-facts.json')
$Json = $Facts | ConvertTo-Json -Depth 6
[IO.File]::WriteAllText($OutFile, $Json, (New-Object Text.UTF8Encoding $false))
$Json
"Written: $OutFile"
"Read it, then attach it to your request. It contains no passwords."

It writes <computer name>-seeq-agent-facts.json (in lowercase) on your Desktop, shows it on screen, and prints its full path. Open it in Notepad, read it, and attach it to the request.

What it does, step by step

Step Reads From Why EEI asks
1 This computer's name and Windows version; the time Windows To match the license to this host, and to know the platform
2 The path and version of the Java the Seeq agent uses: the running one or, if the agent is stopped, the one inside the Seeq installation The java.exe file details (Properties → Details); Java is never started EEI's connectors need Java 21 or newer
3 The Seeq services' names, whether they run, and the Windows account each runs as Windows services (as in Services, Log On tab) The connector's secrets store is restricted to that account
4 The names of the Seeq Link SDK files C:\Program Files\Seeq* A connector loads only on a Seeq agent new enough for it
5 The names of the installed connector folders <data folder>\plugins\connectors To confirm what is installed, and the version being replaced
6 For each connection of a connector it covers (above): its ID, name, on or off, server address, port and path, certificate setting, the connector's main settings, index schedule and request limits, and how its password is kept The connector's configuration file, read only What support needs to set up and check each connection
7 Nothing: it writes the file on your Desktop and shows it — So you can read it before you send it

What it never does: read out or copy a password, user name or domain (step 6 keeps only how the password is kept: store, inline, reference or blank); change, install, start or stop anything; connect to the network; write anything except that one file. If you open PowerShell as administrator with a different account, the file goes to that account's Desktop; the last lines on screen give its full path.

Checking it yourself. Every command in the script is a read: Get-CimInstance (Windows inventory), Get-ChildItem (folder listings), Get-Item (file details), Get-Content (reads the configuration file). The one write is [IO.File]::WriteAllText in step 7; New-Object in step 7 creates the text encoding in memory and writes nothing. There is no Invoke-WebRequest, Invoke-RestMethod, Start-Process, Set-…, Remove-… or New-Item.

Pasting the script runs it line by line, so your PowerShell execution policy does not block it. Your site's rules may still ask you to review a script before running it: the steps above are there for that.

Without the script

If you prefer not to run a script, or your site does not allow it, reply on the request with these. It takes a little longer and is the same information. First, the agent host, for every connector:

Fact Where to find it
Computer name Settings → System → About → Device name
Java version File Explorer → C:\Program Files\Seeq Server\jdk\files\bin\java.exe (or where your Seeq Server is installed) → right-click → Properties → Details → Product version
Seeq service account Services (services.msc) → the Seeq service → Log On tab → This account (or Local System account)
Seeq Link SDK version File Explorer → search C:\Program Files\Seeq Server for seeq-link-sdk → the file name, for example seeq-link-sdk-100.38.19649.jar
Installed connectors File Explorer → C:\ProgramData\Seeq\data\plugins\connectors → the folder names

Then the connector's settings, as its section below says. Please do not send a connector's configuration file itself unless EEI asks; if it does, remove every password, user name and domain first.

ABB Knowledge Manager

Open C:\ProgramData\Seeq\data\configuration\link\ABB KM Connector V3.json in Notepad without saving it, and copy only the Version line near the top and, for each connection: Name, Id, Enabled, WebServiceMethod, WebServiceIP, WebServicePort, WebServiceURL, HierarchyMode, UserTimeZone, and the Indexing lines. Do not copy UserName, Password or Domain.

With EEI access to your Seeq server

Where EEI has an administrator account on your Seeq server (see Access to your Seeq server), EEI reads the agent's version and each datasource's settings in Seeq itself. You then supply only the computer name, the Java version and the Seeq service account, from the first three rows of the table above.

For an update

When a connector is already on the current line, EEI keeps these facts on record and asks you only to confirm them (see Onboarding and Updating a Connector). If something has changed, the same script gives EEI the new facts; once a connector's credentials are in its secrets store, each connection's password is reported as store.