diff --git a/404.html b/404.html index bfdc840e..51fdb4ee 100644 --- a/404.html +++ b/404.html @@ -17,7 +17,7 @@
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- + \ No newline at end of file diff --git a/FAQ.html b/FAQ.html index 8a1bbec7..39f2c4e8 100644 --- a/FAQ.html +++ b/FAQ.html @@ -26,7 +26,7 @@ $product.IdentifyingNumber msiexec /x $product.IdentifyingNumber /quiet /noreboot

How/are we able to define which version of Windows is installed during the initial setup?

ImmyBot doesn't install Windows on bare metal. The workflow is you unbox the system from Dell, HP, Lenovo, Microsoft, or your manufacturer of choice and insert the USB with the ImmyBot.ppkg file at the root while the machine is at the out of box screen.

We don't image the machine, we script the factory image into compliance.

We can, however, install Feature Updates during Onboarding (as well as after Onboarding)

Since Immy.Bot doesn’t use an ISO, does it require a device to have the ability to have 2 USB devices plugged in? One for a Windows ISO and one for the ImmyBot ppkg?

If you want to wipe the computer you can use the Media Creation Tool to create a Windows Setup flash drive and then put our .ppkg file on it. After installing Windows, it will automatically apply the .ppkg

Does Immy rely on the Windows preboot for drivers during initial deployment, or does the ImmyBot agent installer have drivers?

Since we are working with the manufacturer's image, all drivers are typically installed. We will automatically install Dell, HP, and Lenovo driver and BIOS updates via those manufacturer's tools (Dell Command, HP Image Assistant, Lenovo System Update)

Does Immy’s setup process support a USB NIC for WiFi? If so, how do we present those drivers to Immy, or do we even need to?

I've found Windows has built in drivers for most USB NICs. If yours doesn't have drivers built into Windows, I'd suggest purchasing one that does.

SentinelOne - How do we define which site Immy.Bot places the agent in during installation of the S1 agent?

Supply ImmyBot with an API Key to SentinelOne, and Immy will look for a Site in your SentinelOne instance that matches the name of the Tenant you are onboarding the computer for.

Are there any repository limits for software deployments? Either to the size of custom software or number of custom installers we can upload?

There are currently no limits. Everything you upload goes into an Azure Storage Account created just for your ImmyBot instance. Don't be the reason we can't have nice things.

For computer rename, are there any other operators we can use when naming devices other then the ones shown? Can we add operators?

You can duplicate the Task into your instance an manipulate it however you like. If it's something you think other MSPs could use, I'd encourage you to submit a request on the ImmyBot Community and we can add it.

Employee profile caching during on-boarding - is this supported? If so/how?

ImmyBot will create a profile for the Primary Person you selected for this machine on the Onboarding screen (It does this via the "Create Profile for Primary Person" task)

We do this so subsequent tasks that set user level settings like default PDF handler and default browser, have the profile for the primary person and thus that user's HKCU where those settings live.

For purchasing Immy, do you guys prefer Credit card or invoice? Would you rather us pay monthly, or can we pay all upfront?

We prefer monthly credit card or ACH.

Is Immy able to group devices and then do role based deployments to them? I assume this is done by tags?

Yes, you would accomplish this with tags

BitLocker - does this write the key to Azure AD by chance?

Yes, but we can't verify that it is written to Azure AD as that would require additional privileges that our App Registration doesn't request.

We also write the Bitlocker Recovery Key to Active Directory for Domain Joined machines. This doesn't require any Group Policy setup, or line of site to the domain controller. This works as long as the machine is joined to a domain and there is a domain controller for that domain in ImmyBot.

Is Immy able to reset Windows / Wipe and Reload a computer?

Yes, the current process will be simplified but here's how to do it:

  1. Click Download ImmyAgent on the left to create a PPKG with the Windows Reset option selected

image

image

  1. Create a Deployment for "Apply Provisioning Package (PPKG)" to deploy the PPKG to the specified machine

image

ImmyBot Agent logs show an error of "The specified SAS token is expired"

This will occur if the device's system time is incorrect. Ensure that the system time is correct and then restart the ImmyBot Agent Service.

What are trusted manufacturers?

Dell, HP, and Lenovo are considered trusted manufacturers. A trusted manufacturer is expected to provide unique serial numbers for their devices. We rely on trusted manufactuers and device serial numbers during device identification. If the agent reports it comes from a trusted manufacturer and a computer already exists inside ImmyBot with the same manufacturer and serial number, then we will automatically associated the agent with the existing computer.

Can I embed the ImmyAgent into an image?

Create a PPKG and place it in C:\Recovery\Customizations, create the folder if it doesn't exist.

You can also use SetupComplete This method was confirmed working on Server 2022.

Place both the ImmyAgent EXE installer and the SetupComplete.cmd in the C:\Windows\Setup\Scripts directory Content of SetupComplete.cmd can be as simple as: start C:\Windows\Setup\Scripts\ImmyAgentInstallerBundle.exe /qn

A member of the ImmyBot community also likes to use the below method to embedded a PPKG into an image:

DISM.exe /Image:D:\mount /Add-ProvisionedAppxPackage /PackagePath:C:\Users\Moi\Downloads\ImmyBotAgentInstaller.ppkg

Do you take requests for features/software/tasks/scripts?

Yes, please feel welcome to submit a request on the ImmyBot Community

- + \ No newline at end of file diff --git a/README.html b/README.html index c7bc2258..9b90ab2d 100644 --- a/README.html +++ b/README.html @@ -20,7 +20,7 @@
Skip to content

Welcome to ImmyBot Docs Github Repo

Changes made to the main branch here are pushed to https://docs.immy.bot/ automatically.

Feel free to contribute! We may even make you a contributor

To test locally, start by cloning this repo then opening the folder in VS Code.

VS Code will recommend certain extensions when opening it the first time, we recommend you install these.

Then run the following to install the required dependencies

yarn install

To host locally, run

yarn docs:dev
- + \ No newline at end of file diff --git a/add-users.html b/add-users.html index 5e7a0f78..3f2c44d9 100644 --- a/add-users.html +++ b/add-users.html @@ -20,7 +20,7 @@
Skip to content

Adding Users

Have the person attempt to login to ImmyBot. Have them request access:

image

Approve that access from a yellow indicator at the top of the screen.

image

- + \ No newline at end of file diff --git a/assets/releases.md.bgt_DXtz.js b/assets/releases.md._Xh-opGd.js similarity index 50% rename from assets/releases.md.bgt_DXtz.js rename to assets/releases.md._Xh-opGd.js index 943e3039..db20f627 100644 --- a/assets/releases.md.bgt_DXtz.js +++ b/assets/releases.md._Xh-opGd.js @@ -1,4 +1,4 @@ -import{_ as a,c as n,o as s,U as i,m as e,a as t}from"./chunks/framework.Q7Se86sZ.js";const R=JSON.parse('{"title":"Releases","description":"","frontmatter":{},"headers":[],"relativePath":"releases.md","filePath":"releases.md"}'),o={name:"releases.md"},r=i(`

ImmyBot will no longer support Windows 7, Server 2008 (or Server 2012 w/o ESUs) machines after May 14th, 2024

.NET 7 support is ending May 14th, and as a result we will be transitioning the Agent to .NET 8 at that time period. We will not be offering support for these machines after May 14th.

Please see the FAQ section for more details

Releases

0.65.0

Released 07/02/24

Metascript Improvements

Fixed a bug where dropdown attributes, e.g. [Dropdown({@{Option1=1; Option2=2}})], were incorrectly stripping the leading and trailing braces {...}

powershell
param(
+import{_ as a,c as n,o as s,U as i,m as e,a as t}from"./chunks/framework.Q7Se86sZ.js";const R=JSON.parse('{"title":"Releases","description":"","frontmatter":{},"headers":[],"relativePath":"releases.md","filePath":"releases.md"}'),o={name:"releases.md"},r=i(`

ImmyBot will no longer support Windows 7, Server 2008 (or Server 2012 w/o ESUs) machines after May 14th, 2024

.NET 7 support is ending May 14th, and as a result we will be transitioning the Agent to .NET 8 at that time period. We will not be offering support for these machines after May 14th.

Please see the FAQ section for more details

Releases

0.65.1

Released 07/05/24

Bug Fixes

  • Fixed an issue with some onboarding tasks not showing all of the parameters on the onboarding form unless you manually hit the refresh button
  • Fixed an issue with CW Automate where agents were not being synced

0.65.0

Released 07/02/24

Metascript Improvements

Fixed a bug where dropdown attributes, e.g. [Dropdown({@{Option1=1; Option2=2}})], were incorrectly stripping the leading and trailing braces {...}

powershell
param(
   [Dropdown({@{Option1=1; Option2=2}})]
   $DropdownParam
  )

would not work but the following would

powershell
param(
@@ -49,11 +49,11 @@ import{_ as a,c as n,o as s,U as i,m as e,a as t}from"./chunks/framework.Q7Se86s
         }
     }
 }
-process{}

image

Throwing from within a ValidateScript block will now correctly associate the message to the parameter in the frontend.

image

Script Editor

Updated terminal colors for better readability

image

image

Fixed an issue where the script editor's search input would not focus after using the shortcut ctrl+shift+f or ctrl+shift+p

The script editor now has the ability to view previous changes to the script.

image

Diff Editor UI

image

Remote Control

  • In remote control on mobile devices, the virtual keyboard button is now a toggle.
    • The virtual keyboard will remain visible until toggled off.
  • Fixed an issue in remote control for some browsers (e.g. Firefox) that was causing a "Paste" button to constantly pop up.
  • Fixed an issue where remote control input would stop working after a file transfer.
  • Fixed a bug in remote control that would sometimes cause input events to fire incorrectly.

Preflight Scripts

Added the ability for an MSP user to disable specific local or global preflight scripts from executing. A toggle has been added in the script editor when viewing a preflight script to enable or disable it.

image

Dynamic Integrations

  • Added the capability for Dynamic integrations to specify a custom refresh interval for GetAgents job via the new JobSettings attribute over default period of 1 hour. ex: [JobSettings(PeriodMinutes = 5)]
  • Fixed an issue where Get-ProviderInfo would fail to return Configuration form data for dynamic integrations.

N-Central Integration

  • Fixed: This integration has recently started experiencing issues. The requested operation requires an element of type 'Object', but the target element has type 'Array'.

On the Registry tab, you can now search for keys, value names, and value data.

image

Localization and Branding

Added the option to use .NET time formatting strings on Immy emails from the Brandings page

image

Integrations

Integrations now allow capabilities to be excluded

image

Improvements

  • Minor UI padding improvements to computer list
  • We no longer include the AzureAD module in every metascript's runspace. A script now has to call Import-Module AzureAD if it wants to use Azure AD commands. This reduces our memory footprint from 7MB to 4MB per script invocation.
  • Improved the load time of the actions tab on the tenant details page
  • Improved the load time of "This software has been recently used in X actions/deployments" data.

Bug Fixes

  • Fixed an issue with logs not expanding when toggling the computer details page -> actions tab row details
  • Fixed an issue where saving a software would sometimes clear the selected configuration task
  • Fixed an issue with deployments targeting tags not displaying the saved tag correctly
  • Fixed an issue where searching in the script editor did not allow for certain special characters
  • Correct the color of invalid input field warning icons
  • Fixed an issue where agents retrieved from some dynamic integrations were never re-attempting identification on failure or when specified to retry
  • Fixed an issue in the software prerequisite builder where you could incorrectly specify "Install Software A if Software A is installed".
  • Fixed an issue where onboarding only tasks could not be rerun
  • Fixed an issue loading the detected software report page
  • Fixed an issue with the new computer software tab not showing
  • Fixed an issue where the function script cache was not invalidating when creating new function scripts
  • CW Automate agents will now properly be reassigned to the successor computer when a machine is deleted
  • Fixed an issue that could lead to app crashes when Invoke-AtomicCommand cmdlet attempts to cancel script execution due to requested cancellation.
  • Introduced a new PowerShell cmdlet, Clear-ImmyPrimaryUser, to allow clearing the Immy primary user ID from a computer.
  • Fixed an issue where filter scripts could not use Get-ImmyAzureAuthHeader
  • Fixed an issue where Get-ProviderInfo would fail when targeting static integration types.
  • Get-ProviderInfo now doesn't throw terminating errors for Integration types that don't exist to simplify usage patterns.
  • Improved error handling and logging for the Send-ImmyEmail cmdlet
  • Added the ability for Add-UriQueryParameter to remove existing query arguments that match input names to prevent arrays from being formed via OverwriteParameters.
  • Fixed an issue where Stop-ImmySession would not stop the session correctly
  • Forms generated from PowerShell parameters now load in 1/3 the time
  • Debugger->Parameters panel updates automatically as changes are made to the script

0.64.1

Released 05/10/24

Improvements

  • Increased detected-software uninstall string column size in the database to prevent issues with some software objects not being created
  • Fixed a transient bug with notifications occasionally failing to save
  • Optimized memory and db performance when running scripts by relying on an improved cache of all available function scripts. The cache is busted after any function scripts are modified
  • Computer and Tenant software tab now has a grid view for direct access to software data

Bug Fixes

  • Fixed a bug preventing users from entering new immy instances
  • Fixed a bug preventing the maintenance action duration timer from incrementing.

0.64.0

Released 05/08/24

Azure Domain Splitting

Azure customers can now be split into multiple Immy tenants from the Azure Customer Mapper

You can select one or more domains to link to an Immy tenant. Azure users whose UPNs match those domains will then be synced into the domain-linked Immy tenant instead of the default Immy tenant.

Splitting an Azure customer on domain will also automatically set the domain-linked Immy tenant as the "child" of the Azure customer's default Immy tenant, so that deployments targeting the parent can propagate to the domain-linked tenants

Child Tenants

ImmyBot supports sites/location by allowing you to set a parent/child relation between tenants. You can set the parent tenant as a batch action on the tenant list page or from the edit tab on a tenant's details page.

User Affinity Table

User Affinity results are now exposed under Reporting -> User Affinity and on the computer's details page.

Deployment Page Changes

  • Deployments for software linked to an integration can no longer specify configuration parameters.
  • For software linked to a provider, the deployment configuration parameters are now inherited from the linked integration.
  • This helps keep sensitive data like API keys and passwords private by not displaying the information in the deployment configuration parameters and instead storing the information in the integration.

Deployment Migrations

  • GLOBAL software linked to an integration can now automatically migrate data out of relevant deployments and into a new or existing integration.
  • All GLOBAL software linked to integrations with the "Production" tag will be migrated.
  • Added a new App Preference, "Allow Beta Integrations to Migrate Deployments".

Improvements

  • Any software can now be selected for install/uninstall in "Installation Prerequisites"
  • Added parent-tenant-assignment batch action to the Tenants list
  • Added parent-tenant column to the Tenants list
  • Removed ability to deploy/preview cross-tenant computers on the deployment details page from MSP non-admin users that don't have the "can manage cross tenant deployments" permission
  • Added an audit log that records when the application starts up
  • Added an excel export button to the computer inventory scripts report table
  • Increased the timeout for Expand-ZipFile from 1500 to 3600 seconds
  • After updating a user, we now invalidate the cache for that user so the changes are propagated immediately
  • Setting the primary user for a computer now shows up in the audit table. This includes the User Affinity Job and PPKGs that have a primary user set on the installer.
  • Added Chassis Types to our initial inventory so newly created computers don't have the "Unknown Computer Type" badge
  • Decreased PowerShell execution time by optimizing module loading UI improvements in line with what's desired by support and most useful to users -Alerts added as seen fit by support to better inform the user submitting a ticket.

Bug Fixes

  • Fixed an issue preventing software from being selected in "Installation Prerequisites"
  • Fixed an issue with the dashboard table headers not loading correctly
  • Fixed an issue where moving a computer that had an immy agent to another tenant would cause the agent to be deleted if you were to delete the original tenant the computer was assigned to
  • Fixed a possible null reference exception that could occur when executing scripts over the CW Automate agent
  • Fixed an issue preventing integration inventory scripts from running.
  • Fixed an issue with CW Control target assignments saving the incorrect value for Control secondary groups
  • Fixed spelling of "invetory"
  • Fixed an issue with the dedupe inventory script failing with "System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation"
  • Added a missing comma in the meta robots attribute
  • Fixed an issue setting the primary person from the user affinity job
  • Fixed ProviderNotFoundException thrown by PSScriptAnalyzer
  • User cannot cause an error by submitting a ticket with the technician access box checked even as a non-admin. They can no longer check the box as it is grayed out.

0.63.3

Released 04/17/24

Bug Fixes

  • Fixed an issue setting the primary person from the user affinity job

0.63.2

Released 04/16/24

Improvements

  • Dynamic Integrations now allow you to implement ISupportsClientGrouping. This is useful when integrating with PSAs as clients can be grouped by what products they pay you for or the types of agreement they have.

Bug Fixes

  • Fixed an issue where rekeyed/soft-deleted agents would throw an error whenever we would update their status to online (due to a unique constraint violation in our database)
  • Fixed an issue where instances may not reliably automatically update when Days to wait after update is available was set to an interval longer than our typical release schedule.
  • Fixed an issue that was causing new devices to fail during registration.
  • The primary sidebar now automatically closes and opens when resizing between the desktop and mobile view
  • Resumed sessions will now execute immediately if Offline Behavior is set to Apply On Connect and the execution time has already passed. Before, it would re-schedule execution at the same time the next day.

0.63.1

Released 04/15/24

Computer Registry Tab

We have introduced a new tab on the computer details page that lets you remotely navigate the computer's registry and generate configuration tasks from selected values.

image

More functionality is expected to get shipped with version 0.64.0, such as the ability to search and create/edit/delete registry entries.

Improvements

  • All users can now see the maintenance item ordering page. Only MSP users have the ability to update the ordering.
  • After identification, a computer now runs full inventory immediately with priority.
  • Dynamic Integrations can now use dynamic parameters
  • You no longer need to emit [opresult]::Ok(); in your Integration's Init method
  • You can now create a script directly from the Registry tab. Afterward, you're sent to the New Task page with the script pre-selected.
  • Added padding to stage indicators on the session table
  • Added regex validation to the software page
  • Added the ability to run user scripts from the computer terminal tab.
  • Non-terminal errors/warnings coming from a Powershell host starting up will get pushed out as warnings in the console.
  • Removed parallel execution of inventory scripts when run through scheduled sessions. This should improve performance when we have the maximum number of sessions running at once from schedules
  • Depreciated User Action triggers has been fully removed to prevent confusion.
  • When immy restarts, it will now re-enqueue already running sessions first, then pending sessions, and then finally created sessions

Bug Fixes

`,95),l=e("ul",null,[e("li",null,"Fixed an issue where the user affinity job was assigning a primary person to a computer, even when the person was from a different tenant than the computer"),e("li",null,"Fixed an issue where an action's duration would continue to increment when a session was completed while the action was still running"),e("li",null,"Fixed an issue where the spinner icon in the Deployment Detection button was broken"),e("li",null,'Fixed an issue where loading a computer detail page would sometimes throw "InvalidOperationException: Sequence contains no elements"'),e("li",null,"Fixed an issue where schedules targeting CW Control secondary groups become could become borked when a CW Control company was renamed"),e("li",null,`Fixed an edge case issue where a scheduled job that's in "Pending Connectivity" status could run concurrently with a newly-created onboarding task of the agent is reinstalled with "automatic onboarding" enabled.`),e("li",null,"Fixed an issue where a software could incorrectly have a prereq on itself"),e("li",null,[t("Fixed a bug where it was possible to encounter a "),e("code",null,"Pipe is broken"),t(" exception while trying to execute scripts on a machine due to a possibility of the agent attempting to use a Powershell host that has faulted/exited recently before we could detect it.")]),e("li",null,[t("Fixed a bug that lead to User-context scripts to incorrectly use the System-context Environment variables (such as "),e("code",null,"TEMP"),t(", "),e("code",null,"USERPROFILE"),t(")")]),e("li",null,'Fixed an issue where the "show more" sidebar dropdown would collapse when selecting the notifications link'),e("li",{prompt:""},"Scripts no longer appends unwanted prompt query param values to your new-OAuthConsent -ExtraQueryParams @"),e("li",null,"Fixed an issue with re-ran actions incorrectly failing due to missing required parameters when they were present in a deployment"),e("li",null,"Fixed an issue where msp non-admins could not view cross-tenant deployments"),e("li",null,"Fixed an issue where msp non-admins could see access request notifications when it should have been admin only"),e("li",null,"Fixed an issue with incorrect breadcrumbs showing on the schedules list page"),e("li",null,'"User Action Trigger" dropdown have been removed in the Script Editor')],-1),d=i('

0.63.0

Released 04/02/24

Automatic Agent Update Changes

The preference to enable automatic agent upgrades has been added back.

We no longer rely on MSI installers to automatically update the immy agent. Instead, we copy the ephemeral agent binary into "C:\\Program Files (x86)\\ImmyBot" whenever we detect that the agent binary is on an older version. Logic has been put in place to protect agent installations from breaking due to failed upgrades. Overall, the automatic updates should be more resilient.

Notification Table Improvements

  • Severity is now the left-most column.
  • Added icons to the Severity column.
  • The Created column is now hidden by default.
  • The column chooser is now visible.
  • Table is ordered by updated date by default.

Improvements

  • Added filters to the dynamic integration types page to show "local/global" integration types and to show "developer/alpha/beta/production" release stages.
  • New Integration scripts come prepopulated with a working example
  • Changed the Resolved column in the notification table to an icon instead of a checkbox.
  • Added new notification for deployment migrations.
  • Release notes are now available to all users on the System Update page.
  • The deployment table can now be exported to excel!
  • Added an icon to integration cards on the integration list page to indicate it has a non-production release tag
  • Added a release tag badge to the integration details page
  • The Test-PendingReboot script used in maintenance sessions is now in global.
  • Added release tag selector to the provider link list page
  • Added missing datetime tooltips to computer timeline events and the session created date on the session list page
  • Added the year to all timestamps in the session logs view
  • Agents now get updated in the database when the integration reports a new manufacturer
  • Updated error message when navigating to a computer that does not exist to read: "Computer with id xxx was not found".
  • Updated error message when navigating to a computer that has been replaced by another computer to read: "Computer with id xxx has been replaced by computer with id xxx"
  • Updated error message when navigating to a computer that has been deleted to state: "Computer with id xxx has been deleted."
  • The tenant software page UI has been updated to contain new views for deployments, computers, and persons for each found software.

Bug Fixes

  • Fixed an issue in the script editor about The term 'Invoke-ScriptAnalyzer' is not recognized
  • Fixed an issue where some PSPipeHosts that failed to connect wouldn't provide as much useful data for diagnostics.
  • Forms with Password inputs no longer autofill and replace content in other fields
  • Integrations with no parameters (like the CW Manage Pod) no longer show “Please correct above errors” error message
  • Resolved an issue where some machines were experiencing ephemeral port exhaustion when Ephemeral agent was in a retry loop.
  • The Text on the deployments no longer includes the tenant name for cross-tenant deployments. This gave users the false impression that the deployment was tenant specific when it was not.
  • If an Immy tenant was linked to an Azure customer but accidentally set as Partner, then unlinking it from the Tenant Details Azure tab and linking it again from the Azure Customer Mapper should now correctly reset the tenant to Customer
  • Fixed a bug where tenant consented-at/consented-with details were not updating after consent until the page was refreshed
  • Fixed an issue where uploading global software failed
  • Fixed an error that occurred when targeting CW Automate groups on a deployment
  • Fixed some exceptions that were occurring during inventory
  • Fixes css inconsistencies on tenant software list, devextreme, and ImmyLink
  • Fixed an issue where bits transfer errors were not being shown in the session log output
  • Fixed an issue where the ISO option was now available in the immy agent download modal
  • Fixed a bug where some machines fail to return OS install date due to culture issues resulting in a failure to identify.
  • Removed the Default Hourly Inventory Task from the UI since we only support running inventory on a schedule once per day
  • Fixed an issue where agent integration syncs were unable to bring back agents that were deleted. Most commonly found from CW Control and CW Automate.
  • Fixed an issue where deleted agents were still showing up on the Integration -> Agents tab

0.62.6

Released 03/22/24

Bug Fixes

  • Fixed a performance issue with intellisense in the script editor that was causing high CPU
  • Fixed a common exception that was occurring during scheduled inventory jobs

0.62.5

Released 03/19/24

Bug Fixes

  • Fixed an exception that occurred when analyzing a package by url

0.62.4

Released 03/12/24

Bug Fixes

  • Fixed a bug where instance-updated emails were not getting sent after updating ImmyBot to the latest version
  • Fixed an issue with updating maintenance tasks where it sometimes complained about certain fields being required when it should not have
  • Fixed a bug where reboot pref would not update on schedule page

0.62.3

Released 03/12/24

Bug Fixes

  • Fixed an error that occurred when uploading a license
  • Fixed an error that occurred when creating a deployment for a CW Automate Group or CW Control Secondary Group

0.62.2

Released 03/07/24

Bug Fixes

  • Fixed an issue with N-Central where the dynamic version script would not run and prevented installs and updates

0.62.1

Released 03/06/24

Bug Fixes

  • Fixed an issue creating/updating tags with limited tenants specified
  • Fixed an issue creating/updating software licenses

0.62.0

Released 02/29/24

Bug Fixes

  • Fixed an issue where computers that failed to run inventory were incorrectly being classified as workstations/desktops by default. This was causing workstation deployments to incorrectly resolve to the computer.
  • Fixed an issue with application errors disappearing when clicking the "Show Details" link
  • Chocolatey packages no longer fail detection (Removed -lo from Choco command)
  • Fixed issue where even though an "Agent Integration" was specified with GetDynamicVersions implemented, Immy would not run GetDynamicVersions unless the "Use dynamic versions" checkbox was checked
  • Fixed a long standing issue where The Immy Agent/Ephemeral would drop & invoke an unsigned powershell script named Invoke-PSPipeHost.ps1. This would cause some AV & EDR to not like us.
  • Fixed an issue where some computers were stuck in the onboarding status after completion of an onboarding session
  • Fixed an issue where the stale link in preferences was not working
  • Fixed a minor issue in the Application Locks page that would show all active locks fetched as 'cancellable' when they may actually be 'terminal' when requested.
  • Fixed a bug where changing the slug from tenants list page for an MSP tenant would unset the tenant's MSP status
  • Fixed a null reference exception that could occur in the NCentral API client
  • Fixed several null reference exceptions that could occur when loading certain pages
  • Fixed a null reference exception that could occur when parsing a dynamic version result
  • Fixed some null reference exceptions that were occurring sending commands to CW Automate
  • Fixed a null reference exception that was occurring for immy agents attempting to execute scripts over the IoT Hub even when the hub has been removed
  • The detected computer software table now includes software that have SystemComponent set to 0 in the registry.

Improvements

  • Added a new reporting page called Computer Inventory Scripts that contains the latest results of all inventory scripts ran against computers
  • Added more details to exceptions coming from integrations to help diagnose issues
  • (Developer improvement) We have integrated new security testing into our code repository to help us detect potential vulnerabilities before they are released.
  • The version text in the download agent button on the sidebar has been removed to avoid confusion. The agent version is still displayed in the modal that shows after clicking the button.
  • We have exposed the immy.bot API under your-instance.immy.bot/swagger using the Swagger OpenAPI spec. https://swagger.io/specification/. Although officially this is not support, it may be useful if you are attempting to use our api in a 3rd party application.
  • Edit Software: Advanced items with overridden (non-default) values are visible without expanding Advanced
  • Edit Software: Selecting an Integration hides Version/Dynamic Versions UI to make it more obvious that the expectation is for the Integration to handle this logic.
  • If a software is linked to an integration type but the deployment is missing the IntegrationId, but only one integration of that type exists, Immy will fall back to using that single integration.
  • Updated ImmyBot references to immy.bot
  • Removed deprecated IoT Hub code and dependencies from the latest version of the ImmyBot Agent
  • Added a help button explaining global vs local on the Software and Tasks pages
  • Removed progress bar from System context scripts that don't specify PercentComplete. Only the most recent ProgressRecords show status
  • You can now create your own computer inventory tasks. In another release we will add the ability to represent them in the UI. For now, you can see results in the Computer Inventory Table and query them in filter/meta scripts.
  • Added more maintenance options to the computer batch actions. In addition to running full maintenance, you can now run inventory scripts, deployment resolution, and deployment detection.
  • On the computer details page toolbar, "Re-Inventory" was renamed to "Deployment Detection"

0.61.6

Released 02-21-24

Improvements

  • The session logs for verifying the installed software version now include the detected version
  • Inventory is now always performed for full maintenance sessions to ensure inventory data is as up to date as possible before resolving deployments

Bug Fixes

  • Fixed an issue with tags not immediately displaying in the tenant list
  • Fixed an issue with some checkbox values not updating after the first click

0.61.5

Released 02-15-24

Bug Fixes

  • Fixed an issue where users were unable to toggle Remote Control tenant preferences
  • Fixed an issue with non-MSP users unable to load the deployment list
  • Fixed an issue with the "Show dismissed recommended deployments" selector not working
  • Fixed an issue with manually identified agents always being associated with the MSP tenant instead of the selected tenant

0.61.4

Released 02-12-24

Bug Fixes

  • Fixed an issue with the script editor not showing output when loading a script for the first time.

0.61.3

Released 02-09-24

Bug Fixes

  • Fixed an issue where target assignments for an azure group were failing with "PostgresException: 42703: column i.deleted_at does not exist"
  • Fixed an issue with intellisense not starting when opening a script from a maintenance session

0.61.2

Released 02-08-24

Bug Fixes

  • Fixed an issue with not being able to update the value of licenses

0.61.1

Released 02-08-24

Bug Fixes

  • Fixed an issue in the ImmyAgent where it was attempting to connect over the IoT Hub even if the agent was never registered with the IoT Hub. This issue manifested in the agent never showing up in pending list.

Improvements

  • The latest version of the ImmyAgent removes references to the IoT Hub since it has been deprecated.
  • For agents that experienced the bug with the IoT Hub mentioned above, they will now be able to successfully connect to Immy and show up in the pending list. Some agents will automatically get associated to their existing computers while some may need to be manually identified to the correct tenant.

0.61.0

Released 02-05-24

Deployment Notes

Deployments can now have notes. After saving a deployment, notes can be added to it.

image

A notes column has been added on the deployment list page. If it is not visible by default, click the image icon to add it.

image

Computer Excel Export

Located under Reporting -> Computers or at the URL /reporting/computers.

A new report table has been added for "Computers" that can be used to generate an excel report of computers by clicking the xlsx button.

When the table is filtered, only the results in the filter will be exported.

Soft Delete Computers & Agents

Deletion of computers and agents are now performed using a soft-delete.

The current exceptions are:

  1. Deleting tenants: which will cascade delete all computers for the tenant
  2. Deleting integrations: which will cascade delete all agents for the integration

General Improvements

  • The system status page now refreshes automatically every 5 seconds
  • Updated the deployment list column visibility defaults to hide the software version and disabled columns and show the notes column
  • Most recent Write-Progress -Activity <value> now shown on activity detail and current activity overview
  • Added system preference to exclude Chocolatey software results from the deployment software search
  • Dymamic Integrations can implement required interface for running scripts on target
  • Notifications for agents requiring a manual decision are now automatically resolved if there are no more agents that require a manual decision
  • Added warning messages to the deployment screen when required scripts are missing
  • Improved performance by fixing possible memory leaks that could occur during maintenance sessions
  • You can now add a person selector as a dropdown parameter via New-PersonParameter
  • Newly generated Powershell install scripts for Immy Agents now point to an always-latest installer binary 🥳🎉
  • Computer Software report is now generated using excel instead of csv. Also, the export now only exports rows matching the current filter.
  • Added up to 3 retry attempts when attempting to set the unique identifier for a device during identification
  • Added logic to track computers that have been wiped and replaced by other computers. This isn't shown anywhere in the UI as of right now, but can be added in the future
  • Standardized order of Filter Script and Metascript between Cross Tenant and Single Tenant selections when creating deployments
  • Improved performance of saving maintenance session related data to the database
  • Removed word assignment from deployment page data column.
  • Added autocomplete="off" to dynamic form inputs to prevent browsers from injecting unwanted values on deployment and integration pages
  • The "New" software button on the software list page now links directly to the software upload page
  • ISupportsMaintenanceMode for dynamic integrations now disables maintenance mode at the end of sessions
  • Versions details page will automatically show overrides if any are present
  • Software details version table now displays when the version has overrides
  • Updated the software details detection method table to pull results from the detected computer software table used in reporting. This provides better performance and unifies the results between this feature and the reporting.
  • Added warning tooltips to computer overview page for unsupported OS and PowerShell versions
  • Added security exclusions confirmation on session support request page
  • Added hidden column to the detected computer software table that shows the potentially matched global software id
  • Added new report page for computers with the ability to export to excel
  • The "Show Identification Logs" button in the computer page / pending tab is now aligned to the top right instead of in the middle of the row, and renders above any potential errors
  • Application Locks (used for things such as Invoke-AtomicCommand, Invoke-CommandCached) are now visible & controlable via the new 'Application Locks' page under 'Show More'.

Bug Fixes

  • When viewing page on mobile, the sidebar is now hidden on navigation change
  • Fixed an issue where the filter on the tags list was not working as expected
  • Fixed an issue where adhoc maintenance sessions marked as pending connectivity were never being resumed
  • Agents Requiring Manual Decision Notification shows resolved text when no more agents require a manual decision
  • Fixed duplicate text under the Script Path application preference
  • Fixed an issue where checking if we are within business hours was not getting cached, causing additional unnecessary checks
  • Fixed an issue where the within business hours session log was not getting emitted
  • Fixed a deadlock issue that could occur when cancelling a session
  • Updated copyright date to be dynamically set
  • Fixed an issue where New-MediaParameter values were not being set to the path to the downloaded file
  • Fixed styling of access request notifications
  • Added missing border to the top of the Azure notification group header
  • Corrected inconsistent padding of Azure notification group header
  • Fixed issue with missing bottom padding between integrations on integration list page
  • Fixed an issue where some filter scripts were not specifying the cloud context
  • Integration Audit Entries no longer get hung and show no output when clicking details
  • Intellisense no longer stops working when you switch between script tabs
  • Status spinner no longer spins forever when in Stopped state
  • Fixed an issue where multiple ephemeral agents were possibly spinning up during identification of a device
  • Fixed a visual issue where loading a schedule would incorrectly show "Sunday" as the day to run when the value was not "Sunday"
  • Fixed an issue where a duplicate streaming button would show up when streaming agent identification logs
  • The primary user deployment is now hidden from the deployment list since it is a mandatory deployment
  • Updated uninstall help text to reflect existing behavior
  • Fixed an issue where brandings that didn't specify a logo or header image would sometimes still show a broken image
  • Fixed an issue where we were not checking if the port had been specified for an SMTP and resulted in an obscure exception for the end user if the port value was missing
  • Fixed an issue where the person dropdown parameter in onboarding tasks were not limited to persons in the computer's tenant.
  • Fixed an issue on the software upload page, where the validation message for the software version was not showing up.
  • Fixed an issue on the Tasks list page where filtering to Computer tasks were incorrectly including configuration tasks
  • Fixes incorrect PPKG text in download modal
  • Fixed an issue where scripts could fail with FileNotFound.
  • Fixed issue with detected computer software table where it would exclude registry entries that had duplicate display names, but different versions, or some being linked to global and not others
  • Added missing timestamps when hovering over "x days ago" text throughout the application
  • New software versions will now default to the Inherited upgrade strategy
  • Fixed an issue where some Win7 machines were failing to start Ephemeral agent.

0.60.0

Released 01-09-24

Automatic ImmyBot Version Upgrades

When a new version of ImmyBot is released, you can now specify if you want to automatically update to that release after a specified amount of time. This behavior is configurable in preferences.

image

Release Channel

The release channel determines what versions of ImmyBot are available to you. You can now choose which release channel you want to subscribe to.

The available channels are: Alpha, Beta, and General.

  • Alpha: This channel contains releases that have passed development but may still be unstable. Only use this channel if it's absolutely necessary for a critical fix or to test brand new features and provide feedback.
  • Beta: This channel is for early adopters and contains releases that are in the final rounds of testing. Use this channel to test new features and provide feedback.
  • General: This channel contains releases that have been tested and are ready for general use. This is the recommended channel for stability.

All instances will default to the General channel.

You can change your channel on the System Update Page.

image

ImmyBot is on .NET 8

The ImmyBot backend is now running .NET 8. While this doesn't introduce new features to end users, it does provide better performance and newer development features that benefit ImmyBot.

Cross-Tenant Deployment Change Requests

A new application preference has been introduced that when enabled will require MSP non-admin users to submit change requests when creating or updating cross-tenant deployments.

image

On a per user basis, you can additionally opt-out of requiring change requests by assigning the user the following capability from the edit user page:

image

Change requests are submitted from the deployment details page in the same area you would normally create and update a deployment.

image

Once submitted, the change request can be reviewed in a read-only format. MSP non-admins will have the option to edit the change request, while MSP admins will have the ability to approve or deny the change request.

MSP non-admins see

image

MSP admins see

image

All open change requests can be seen from the deployment list page.

image

Improvements

  • Added hidden column to the detected computer software table that shows the potentially matched global software id
  • The tenant software search tab on the tenant details page now renders as a filterable table with the ability to export
  • Automatic ImmyAgent updates are now enabled by default
  • When creating a new deployment, selecting Onboarding Only will now default to "Value from: deployment".
  • Changed notifications list page to hide resolved notifications by default
  • Deployments page will now default to grouping by tenant
  • IntelliSense can be restarted without refreshing the browser

Bug Fixes

  • Fixed issue with some property text in the audit table colliding with other property text
  • Fixed issue where unmatched software in the detected computer software table were not filterable
  • Fixed an issue where detection could fail with "Exception of type 'CwAutomateProvider.CwAutomateHttpException' was thrown." when checking for windows patching. It will now skip windows patching, provide a more useful message, and continue the session.
  • Fixed an issue where creating/updating deployments for integration group targets was not saving the selected tenant
  • Fixed an issue where starting ephemeral agent would cause an error on some older machines.
  • Fixed an issue where the getting started wizard was popping up even when a computer had already been added
  • Fixed an issue where the software repair custom script was not showing up under the Repair Strategy label on the software details page
  • Persistent Agent main connection will now more aggressively obey System Web proxy when attempting to connect.
  • Fixed an issue where Immy Agent EXE downloads would produce a corrupted binary.
  • Fixed an issue where upgrade code and product code were failing to match to global software during detection
  • Fixed issue where Azure Tenant Problem notifications were being created when there were not actually any problems

0.59.3

Released 12-20-23

Bug Fixes

  • Fixed a caching issue where adhoc deploying to multiple computers and then re-running a session would sometimes trigger the session for a different computer
  • Fixed an issue where msp admins would sometimes show up as MSP Tenants
  • Fixed an issue with the detected computer software table where it was not updating information after re-running inventory
  • Fixed an issue where configuration task actions would sometimes not showing the detect stage progress line

0.59.2

Released 12-19-23

Bug Fixes

  • Fixed issue with showing media on the media list page
  • Fixed issue on the tenant details page where the batch actions button on the computer table was not working
  • Fixed issue with calls to Get-ImmyComputer from metascripts where it was incorrectly excluding computers that were excluded from maintenance. This check is only supposed to happen when resolving computers for a deployment or a schedule.

0.59.1

Released 12-13-23

Bug Fixes

  • Fixed issue where Computers and Tenants were still being included in the preview for the Edit Deployment screen even though the tenant had the "Exclude from Cross Tenant Schedules and Deployments" preference set
  • Fixed a caching issue where scheduled maintenance sessions were not always picking the correct deployment

0.59.0

Released 12-12-23

Detected Computer Software Export

We added a page to view all computer detected software and a button to export it to a csv file.

You can access this page from /reporting/detected-computer-software. Values from this table are populated from inventory.

',137),h=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/f30cb597-3a97-49d9-b26a-7018b1dd5605","max-width":"100%"},null,-1),c=e("h3",{id:"oauth-parameters",tabindex:"-1"},[t("OAuth Parameters "),e("a",{class:"header-anchor",href:"#oauth-parameters","aria-label":'Permalink to "OAuth Parameters"'},"​")],-1),u=e("p",null,"Added the ability to create and select auto-refreshing OAuth tokens as script parameters",-1),p=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/85259b64-917e-4676-9f44-8cde043e6fa6","max-width":"100%"},null,-1),m=e("hr",null,null,-1),g=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/ec13e684-8bd3-479c-9c94-69ee21103dfc","max-width":"100%"},null,-1),w=e("hr",null,null,-1),b=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/94275c46-2c78-4739-a0fb-43260f210f88","max-width":"100%"},null,-1),f=e("hr",null,null,-1),y=e("p",null,"Added a button to the Azure Partner Settings page to pre-consent customers to the default or custom app registration via the Partner Center API",-1),k=e("p",null,"This removes the need to provide consent for each customer manually using an admin account from the customer",-1),x=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/8a3c312d-b8d4-4b94-8f1a-5c2c1cb13d65","max-width":"100%"},null,-1),v=e("hr",null,null,-1),q=e("p",null,"Added an OAuth Token Acquisition mechanism to allow Partner admins to give ImmyBot consent to use the Partner Center API",-1),F=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/1d78a586-637b-49b5-9ec4-5a349a8c77b4","max-width":"100%"},null,-1),A=i(`

Automatic ImmyBot Agent Updates (Alpha)

When a computer attempts to run a script and we establish an ephemeral agent connection, we now also upgrade the ImmyBot Agent if it is outdated. This is currently in alpha and can be opted into from the Application Preferences page.

Improvements

  • You can use the new ScriptTimeout attribute to override the default execution time of 60 seconds in integration scripts (Supports up to 300 seconds)
  • Integrations supporting ISupportsHttpRequest now display the HttpRequest Uri
  • Added integration release stage badges to indicate whether an integration is in the Alpha, Beta, or Production stage.
  • Uninstalling software no longer enforces required parameters specified by the deployment.
  • [Alpha Opt-In] Write-Progress -Activity "Activity 1" -Status "Migrating" Calling Write-Progress with both Activity and Status parameters creates a new row on the action in the session. This helps visualize the progress of long running tasks.
  • Added BitLocker Status to the logical disk tab on the computer details page
  • Added TPM Version to the overview on the computer details page
  • Added disabled deploy button next to configuration tasks with a tooltip explaining that they cannot be deployed directly. The missing deploy button was causing confusion.
  • Added a docs link for agent identification failures under the computer page -> pending tab.
  • Updated help text of desired software state - Latest Version, to read "Will install/update the software to the latest version"
  • Added a link to the ordering page from the deployment list page
  • Updated the execution order help text to read "All tasks that are limited to onboarding computers will be executed at the beginning of the session in the onboarding stage, following the sequence in which they are listed. Once the onboarding process is complete, we will proceed to execute all other actions, also in the order they are listed."
  • Added 'Azure Tenant Problems Detected' notifications to indicate errors and other detected problems related to Azure tenants
  • Made notification creation more performant
  • Added User preference area and moved the theme toggle to it.
  • Improved some UI color settings
  • Creating, updating, and deleting schedules show up in the audit table.
  • Maintenance tasks can now specify an integration to link
  • Fixed an issue on startup that was causing some startup jobs to not run
  • The logic that ensures we have online agents before running a script on a computer no longer runs if we have an active ephemeral agent connection
  • Added AssignmentScope as a script parameter. Possible values are CrossTenant, SingleTenant, and Individual.
  • When ImmyBot restarts, we no longer cancel sessions due to them being considered "outdated". This was an old piece of code that was there to prevent accidental reboots during business hours. This check is no longer needed since we check for active hours and business hours during the maintenance session when deciding if the computer needs to reboot.
  • Important - ImmyBot agents that are installed with automatic onboarding will now ALWAYS automatically onboard. Before, we would optionally not perform onboarding if the agent resolved to an existing computer that had previously run at least one maintenance session.
  • Removed converted parameter values from parameter validation responses since it could possibility contain sensitive data and the value was not being used on the frontend
  • Invoke-CommandCached and Invoke-AtomicCommand cmdlets are now available for use inside Filter Scripts.
  • Action errors regarding missing/failed software prerequisites now show the software's name instead of the type and identifier.
  • Changes to software prerequisites now show up in the audit table
  • Added a link to the ImmyBot community forum to the navbar
  • Minimizing the script editor persists any ephemeral tabs you had open.
  • Extended the ephemeral agent disconnected text to say "This computer does not have an ephemeral agent. An ephemeral agent will connect when a script is run against this computer."
  • Several new Azure-related notifications have been added
  • Fixed an issue where multiple sidebars could be showing and overlapping at the same time
  • Parameter descriptions are now always visible. Before, they were only visible if you were overriding the default value.
  • Improved styling of default value key/value pair parameters on the deployment form
  • Improved serial execution of maintenance tasks by adding a more visible locking mechanism. You can now see who the currently executing computer / session is.
  • Added a check when creating or updating a deployment that warns you when a duplicate deployment is detected. You have the option to replace the existing deployment or fix the newer one such that it is no longer a duplicate.
  • Schedules and Adhoc Deployments now apply batching to create the maintenance sessions. We've seen about a 6x improvement in speed in creation.
  • Debounced script editor changes to prevent Intellisense crashes
  • You can now save scripts that have syntax errors by acknowledging the confirmation modal. Useful for saving unfinished scripts or scripts that may not actually have syntax errors when run on an endpoint
  • Improved ImmyAgent setup when deploying new instances that should result in fewer errors and faster instance setup
  • Improved performance of session cancellation by simplifying the database queries
  • Adding an invisible Formatter, so that information can be easily hidden. Using this to hide ParameterSetBinding messages.
  • In the Debugger section Parameters and Variables, the subsections are now open by default
  • In the Script Details section for the Type dropdown, the Software Auto Update element has been removed
  • Added integration capability ISupportsAgentDownload. Allowing integrations to provide their own "Download Installer" script.
  • Added integration capability ISupportsAuthenticatedDownload. Allowing integrations to provide authentication information without leaking sensitive information.
  • N-Central integration has finally graduated from Beta status, and can now be found in the Integrations page 🎉

Bug Fixes

  • Fixed an issue where some ImmyBot tenants linked to Azure customers were getting reset to Partner type within ImmyBot
    • For Customer tenants that are erroneously set to Partner in ImmyBot, you can fix these by finding the customer on the Azure Settings page, and unlinking/relinking it
  • Fixed an issue where full maintenance schedule sessions did not have the "Full Maintenance" tag in the sessions table Fixed an issue with N-Central integration failing to re-authenticate after ~24hrs of running.
  • Fixed an issue where starting ImmyBot remote control for an outdated agent was kicking off a session that contained actions other than the agent update.
  • Fixed an issue with license descriptions now showing on the deployment page
  • Fixed potential null reference exception on Deployment page when ValidateScript is used
  • Fixed an issue where wiped computers were not being treated as wiped if an existing computer was found. A wiped computer is one where the hostname and OS install date are different that the computer we already see inside of ImmyBot.
  • Fixed a divide by zero error that could occur while computing a software installer's download speed.
  • Set the audit user text to show the user's email address if the user does not have a first or last name specified
  • Fixed an issue where some ImmyAgent & Ephemeral Agent binaries included some unsigned assemblies, falsely triggering some security tooling like ThreatLocker.
  • Fixed an issue where Immy Starter plans were able to select the schedules nav item
  • Fixed an issue where resolving agent identification issues resulted in "404 - entity could not be found."
  • Fixed an issue where resolving agent identification issues with "Let Immy Try again" was not doing anything.
  • Fixed an issue where some ImmyBot agents were failing to connect to ImmyBot when it was re-installed
  • Fixed an issue where only the ImmyBot team could view global dynamic integration types
  • Fixed an issue with scheduling the user computer affinity job once a day
  • Removed some old migration code that was delaying startup and potentially causing issues
  • Fixed an issue where some Immy Agent upgrades would leave installs dead in the water due to a config parsing issue.
  • Fixed an issue where sometimes analyzing an installer package would cause an IOException.
  • Fixed an issue where a software prerequisite would not be installed if an "update if found" deployment for the prerequisite resulted in "no action" because it was not found on the endpoint. Now, an install action for the prerequisite will be created anyway.
  • Fixed an issue where selecting text on expanded script-runs would collapse the script
  • Fixed an issue with fetching CW Manage agreement products where the deployment would show "Server error. Please contact your Administrator." Occurred when CW Manage attempted to return several hundred agreement products.
  • Fixed an issue running invoke-immycommand from a cloud script against a computer that would throw an error during the preflight check, "Value cannot be null. (Parameter 'psComputers')".
  • Fixed issue removing previous pages breadcrumbs on the session list page
  • Fixed an issue on the onboarding form where mandatory parameters would not show the input by default if the parameter was dynamically discovered
  • Fixed several minor issues found with the agent installer download modal and the getting started wizard modal
  • Fixed a caching issue with inserting session logs into the database
  • Fixed a caching issue with detected software from a machine
  • Fixed an issue where database queries to get a list of sorted deployments during a maintenance session were not being cached
  • Fixed an issue where the Package Analyzer would throw a The process cannot access the file error
  • Fixed issue with our script analyzer rule for detecting missing $using: in Invoke-ImmyCommand
  • Fixed the N-Central issue that keeps appearing "InvalidLoginCredentialsException: New tab request failed!"
  • ParameterSetBinding should not emit output.

0.58.3

Released 11-1-23

Notifications

Notification Sidebar

We have updated how our notification system works.

The bell icon in the navbar will provide a number of the unacknowledged notifications you have.

image

The sidebar will show when clicking this icon.

image

Notification History

You can access all notifications from the primary sidebar under "Show More" -> "Notifications". By default, it will only show you unacknowledged notifications. You can click the "reset" link or change the filter on the "Acknowledgement" column to view acknowledged notifications.

image

Silencing notifications

From the notification sidebar, you can silence notifications by the notification type or for the specific object the notification was for.

image

You can then view all of your silenced notifications from the notification history page.

image

Notification Types

We have plenty of notification types in the pipeline. Here are the notification types currently implemented.

  1. Integration Unhealthy - a notification to let MSP users know that an integration has become unhealthy
  2. Access Requested - a notification to let MSP users know that someone is requesting access to their instance of ImmyBot
  3. Large Script Output - a notification to let MSP users know that a specific script has outputted a large amount of data. When scripts like this run during maintenance for hundreds of devices, it can easily cause high CPU and memory which leads to sluggish performance and potential crashes.
  4. Unacknowledged Recommended Deployments - a notification to let MSP users know that there are new recommended deployments that need to be allowed or denied.

Some notification types that will be coming soon include, but are not limited to:

  1. Agents Requires Manual Decision - a notification that lets MSP users know there are agents pending identification that could not be automatically resolved to a computer and require manual actions.
  2. ImmyBot Updated - a notification that lets MSP users know that ImmyBot has been updated to a newer version
  3. Cross-Tenant Deployment Requires Approval - a notification that lets MSP admin users know that a cross-tenant deployment was created or modified and needs approval from an MSP Admin. (Feature coming soon)
  4. Azure related notifications

Improvements

  • Updated variable alert on the license details page to be the same alert shown on the software details page -> license help alert
  • Added random jitter to the time we schedule some of our recurring jobs so that we reduce high database load due to all instances kicking off the jobs at the same time.
  • For maintenance sessions that target a specific item, a session log has been added at the beginning that provides the name of the maintenance item
  • Added auditing for static software versions and static maintenance task parameters
  • Schedules that target a specific maintenance item will now always create a maintenance session for every computer resolved in the schedule's target group. If the computer does not have a deployment for the specified maintenance item, then the session will complete instantly with no actions added.
  • Upgraded PowerShell Editor Services from 3.6 to 3.13
  • Batch actions sidebar now slides out underneath the navbar to not block actions
  • Batch actions sidebar background color was updated to provide more contrast
  • You can now restart Intellisense from the status bar.
    • image
  • Intellisense will restart automatically when changing script type.
  • Removed dependency on Ace.js that shaved off 366KB from the project
  • Made a slight performance change to schedule logic that should result in faster start times for schedules with many computers
  • Added a "Job Args" property to the session details page info panel that expands to show more data associated with the session.
  • ImmyBot no longer tries to run scripts against non-Pro N-Central agents
  • Added custom PSScriptAnalyzerRule with Code Action to detect and fix missing $using: scope modifier in Invoke-ImmyCommand
    • image

Bug Fixes

  • Fixed an issue with azure tenant data sync job not getting scheduled correctly
  • Fixed an issue with cloud deployments targeting tags where the session would error in a NotImplementedException
  • Fixed an issue where agent updates only maintenance sessions were not viewable by a non-msp admin even if the computer was under their tenant
  • Improve deadlock handling when integrations need to be created, removed, or re-initialized
  • Fixed an issue where users were unable to upload license files
  • Fixed an issue on instance startup where integrations were possibly initializing twice unnecessarily
  • Added a default timeout of 5 minutes to every API request made to Automate. We were not specifying a timeout before so the request could have been long-lived
  • Improved the initialization of the CW Automate integration by reducing the number of times we instantiate an API client to communicate with the Automate Server
  • Refactored the logic that handles enqueuing scripts to execute over CW Automate to prevent potential locking and add additional debug logging
  • Fixed an issue where the system status page was not showing metrics under CW Automate and CW Control when it should have
  • Fixed issue where Intellisense would be unrecoverable after selecting script type Software Auto Update
  • Fixed an issue where provider sync jobs could continually enqueue when only one should ever be enqueued at a time.
  • Fixed an issue where CWControl provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length
    • image
  • Fixed an issue where some actions would result in an error of "Invalid maintenance action type."
  • Fixed a potential issue with all providers remaining unhealthy upon server starting up
  • Improved the load time of the application on startup
  • Fixed an issue where some more known bad device ids were being used to uniquely identify a computer, e.g. ffffffff-ffff-ffff-ffff-ffffffffffff
  • Fixed an issue where ImmyAgent provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length.
    • image

0.58.2

Released 10-11-23

Audit Page

An audit page was added that MSP admins can use to view changes made to objects such as Target Assignments and Scripts. This also includes changes made to global objects. This is part one of an effort to provide more transparency around changes made to global data. This page is accessible under Show More -> Audit, or "your-instance.immy.bot/settings/audit".

Improvements

  • Get-ImmyComputer -IncludeTags from a filter script or a meta script now include the tags for the computer's tenant and primary user
  • Improved our resiliency for Redis reconnection for background jobs
  • Updated the Hangfire Service watcher to fix common issues that may occur when it restarts
  • Improved some internal logging that will help diagnose application crashes
  • Added some additional logging to detect performance issues related to CW Control connection events
  • Added support for putting an agent in maintenance mode at the beginning of a session
  • Sessions with reboot preference set to force now only force a reboot at the beginning and end of the session. Reboot checks after each action will only reboot if necessary.
  • Added the ability to toggle online status support for agents of an integration since some dynamic integrations don't support online status
  • The "Install Agent" button on the computer details page now kicks off a maintenance session instead of installing behind the scenes
  • Updated the version of our dependency on the Azure.Storage.Blobs package, which provides better performance.

Bug Fixes

  • Fixed some theme styling issues on some of the tables
  • Fixed an error in the web inspector console that was reporting BackendVersion was null
  • Fixed an issue where array parameters that used [ValidateSet] would not render the dropdown of valid values
  • Fixed an incorrect variable name in the license alert on the software details form. $LicenseFile should have been $LicenseFilePath
  • Fixed an issue where the session resume button would stay disabled if you clicked it but didn't confirm the action.
  • Fixed an issue where deployment parameters were not showing in the correct positions Fixed an issue with the Package Analyzer failing to download some software hosted behind CloudFront CDN.
  • Fixed an issue where Invoke-CommandCached would return objects slightly differently than expected, causing some unexpected behavior for scripts.
  • Fixed an issue where the "Show value view" on a parameter form would not actually show the parameter values
  • Fixed an issue with agent inventory identification where old agents tied to a computer were not getting replaced by the a newer agent
  • Fixed an issue where a phase could be considered successful if the agent went offline at just the right time
  • Fixed an issue where an agent going offline would fail a maintenance task action during the Download Installer phase
  • Fixed an issue where refreshing the computer's connected status would throw an error regarding some agents not supporting the ability to refresh an agent's online status
  • Fixed a potential null reference exception that was thrown when reloading integration types
  • Fixed an issue where dynamic integration agents were not syncing updated data, such as changed name, serial number, or osname
  • Fixed an issue with pending connectivity kicking off incorrectly for disabled/unhealthy links
  • Fixed an issue where the ImmyAgent provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length.

0.58.1

Released 09-28-23

Improvements

  • Made errors that occur while interacting with the graph api show on the frontend to help guide the user on how to resolve common Azure configuration problems
  • Added the ability to specify a docs url for dynamic integrations that will be shown on the integration edit details page
  • Added the installer download url to the session log when attempting a BITS or basic download
  • ImmyBot now defaults to dark mode unless the browser preference is set to light
  • Moved immy support access preference to the top of the preferences page
  • Made Add-UriQueryParameter no longer require -Parameter when Uri is passed in via Pipeline
  • Added the ability to trigger an agent sync from an integration on the clients tab and agents tab
  • Added support for incoming http request inspection to integration audit logging
  • Added support for non-mandatory integration method parameters
  • Dynamic Integrations that support agents can now specify whether the agent supports an online/offline status. Some integrations were defaulting to always online which caused issues with the pending connectivity logic
  • Updated session log text about retrying to fetch PowerShell version
  • Added a better error message when a dynamic version script returns a newer version than what was detected previously in the session. The message is "The dynamic version script is returning a newer version than what was retrieved the last time the script was ran. If so, re-deploy this action. We will automatically handle this scenario in a future release."

Bug Fixes

  • Fixed an issue with onboarding and deployment parameters where the form would sometimes not render due to hidden errors. The errors are now visible in this case.
  • Fixed an issue on the onboarding form where values specified on the deployment form were not considered when resolving any errors
  • Fixed a bug where only the first 300 Azure customers of a partner tenant would show up in the Azure customer mapper
  • Fixed an issue where global software -> agent integration dropdown was showing local integrations
  • Fixed a bug where linking an az customer would incorrectly set the az tenant type as Standalone, preventing usage of the graph api for that customer
  • Fixed an issue where sessions would sometimes not show the computer name, and links to the computer would result in a 404
  • Fixed an issue where a license couldn't be deleted because it was used by a deployment that was no longer showing the license selector. The selector now shows and the license can be successfully removed from the deployment
  • Fixed a rare issue where agents would fail to be synced if the integration reported multiple agents with the same agent id
  • Fixed an issue where Immybot.Agent.Shared.dll from the ImmyBot agent MSI installer was not signed
  • Fixed an issue where linking a dynamic integration client was removing other agents incorrectly during the sync
  • Fixed a bug where tenant select boxes couldn't be searched on provider client link pages
  • Fixed an issue where custom app reg could not be changed without first toggling permission level
  • Fixed an issue where reloading integration types would result in a permission error
  • Fixed an issue where the unlinked msp client banner would show up even when the msp client was linked
  • Fixed an issue that was preventing the ImmyBot agent's .dlls to be signed
  • Removed extra "$" in front of version in the dynamic version response
  • Removed the agent's client name from the agent tab to prevent confusion
  • Fixed an issue where a pending agent "Let Immy Try Agent" action was not working as expected
  • Fixed an issue where a script dropdown would show incorrect results if it was toggled to only show global scripts or toggled to only show local scripts
  • Fixed a "downlaod" typo in "Action To Take"

0.58.0

Released 09-13-23

Bring Your Own Integrations

The goal of this feature is primarily for our own use to more rapidly implement integrations with other RMMs and PSA, but we have opened it up for you to create your own integrations as well.

https://docs.immy.bot/build-your-own-integration.html

New Parameter New-OAuthConsentParameter

This parameter creates a button that will perform the oauth code authorization flow and allow you to use the response in the script.

https://docs.immy.bot/scripts.html#parameters

Agent Tracking

The Computer -> Agents tab now includes all agents, not just ones used to run scripts. This is preparation for the upcoming computer/tenant offboarding feature. Which will allow us to not only uninstall the agents from the machine but de-provision them from their respective platforms.

Metascript WebHooks

You can now receive web requests from within Metascripts.

The webhook URL is {your-domain}.immy.bot/api/v1/webhooks/{web-hook-id}, and it accepts Post and Get requests. The webhook id can be retrieved from $Hook.Id

An example scenario is this can be used to map Toast buttons to actions in ImmyBot.

powershell
$Hook = New-ImmyWebHook
+process{}

image

Throwing from within a ValidateScript block will now correctly associate the message to the parameter in the frontend.

image

Script Editor

Updated terminal colors for better readability

image

image

Fixed an issue where the script editor's search input would not focus after using the shortcut ctrl+shift+f or ctrl+shift+p

The script editor now has the ability to view previous changes to the script.

image

Diff Editor UI

image

Remote Control

  • In remote control on mobile devices, the virtual keyboard button is now a toggle.
    • The virtual keyboard will remain visible until toggled off.
  • Fixed an issue in remote control for some browsers (e.g. Firefox) that was causing a "Paste" button to constantly pop up.
  • Fixed an issue where remote control input would stop working after a file transfer.
  • Fixed a bug in remote control that would sometimes cause input events to fire incorrectly.

Preflight Scripts

Added the ability for an MSP user to disable specific local or global preflight scripts from executing. A toggle has been added in the script editor when viewing a preflight script to enable or disable it.

image

Dynamic Integrations

  • Added the capability for Dynamic integrations to specify a custom refresh interval for GetAgents job via the new JobSettings attribute over default period of 1 hour. ex: [JobSettings(PeriodMinutes = 5)]
  • Fixed an issue where Get-ProviderInfo would fail to return Configuration form data for dynamic integrations.

N-Central Integration

  • Fixed: This integration has recently started experiencing issues. The requested operation requires an element of type 'Object', but the target element has type 'Array'.

On the Registry tab, you can now search for keys, value names, and value data.

image

Localization and Branding

Added the option to use .NET time formatting strings on Immy emails from the Brandings page

image

Integrations

Integrations now allow capabilities to be excluded

image

Improvements

  • Minor UI padding improvements to computer list
  • We no longer include the AzureAD module in every metascript's runspace. A script now has to call Import-Module AzureAD if it wants to use Azure AD commands. This reduces our memory footprint from 7MB to 4MB per script invocation.
  • Improved the load time of the actions tab on the tenant details page
  • Improved the load time of "This software has been recently used in X actions/deployments" data.

Bug Fixes

  • Fixed an issue with logs not expanding when toggling the computer details page -> actions tab row details
  • Fixed an issue where saving a software would sometimes clear the selected configuration task
  • Fixed an issue with deployments targeting tags not displaying the saved tag correctly
  • Fixed an issue where searching in the script editor did not allow for certain special characters
  • Correct the color of invalid input field warning icons
  • Fixed an issue where agents retrieved from some dynamic integrations were never re-attempting identification on failure or when specified to retry
  • Fixed an issue in the software prerequisite builder where you could incorrectly specify "Install Software A if Software A is installed".
  • Fixed an issue where onboarding only tasks could not be rerun
  • Fixed an issue loading the detected software report page
  • Fixed an issue with the new computer software tab not showing
  • Fixed an issue where the function script cache was not invalidating when creating new function scripts
  • CW Automate agents will now properly be reassigned to the successor computer when a machine is deleted
  • Fixed an issue that could lead to app crashes when Invoke-AtomicCommand cmdlet attempts to cancel script execution due to requested cancellation.
  • Introduced a new PowerShell cmdlet, Clear-ImmyPrimaryUser, to allow clearing the Immy primary user ID from a computer.
  • Fixed an issue where filter scripts could not use Get-ImmyAzureAuthHeader
  • Fixed an issue where Get-ProviderInfo would fail when targeting static integration types.
  • Get-ProviderInfo now doesn't throw terminating errors for Integration types that don't exist to simplify usage patterns.
  • Improved error handling and logging for the Send-ImmyEmail cmdlet
  • Added the ability for Add-UriQueryParameter to remove existing query arguments that match input names to prevent arrays from being formed via OverwriteParameters.
  • Fixed an issue where Stop-ImmySession would not stop the session correctly
  • Forms generated from PowerShell parameters now load in 1/3 the time
  • Debugger->Parameters panel updates automatically as changes are made to the script

0.64.1

Released 05/10/24

Improvements

  • Increased detected-software uninstall string column size in the database to prevent issues with some software objects not being created
  • Fixed a transient bug with notifications occasionally failing to save
  • Optimized memory and db performance when running scripts by relying on an improved cache of all available function scripts. The cache is busted after any function scripts are modified
  • Computer and Tenant software tab now has a grid view for direct access to software data

Bug Fixes

  • Fixed a bug preventing users from entering new immy instances
  • Fixed a bug preventing the maintenance action duration timer from incrementing.

0.64.0

Released 05/08/24

Azure Domain Splitting

Azure customers can now be split into multiple Immy tenants from the Azure Customer Mapper

You can select one or more domains to link to an Immy tenant. Azure users whose UPNs match those domains will then be synced into the domain-linked Immy tenant instead of the default Immy tenant.

Splitting an Azure customer on domain will also automatically set the domain-linked Immy tenant as the "child" of the Azure customer's default Immy tenant, so that deployments targeting the parent can propagate to the domain-linked tenants

Child Tenants

ImmyBot supports sites/location by allowing you to set a parent/child relation between tenants. You can set the parent tenant as a batch action on the tenant list page or from the edit tab on a tenant's details page.

User Affinity Table

User Affinity results are now exposed under Reporting -> User Affinity and on the computer's details page.

Deployment Page Changes

  • Deployments for software linked to an integration can no longer specify configuration parameters.
  • For software linked to a provider, the deployment configuration parameters are now inherited from the linked integration.
  • This helps keep sensitive data like API keys and passwords private by not displaying the information in the deployment configuration parameters and instead storing the information in the integration.

Deployment Migrations

  • GLOBAL software linked to an integration can now automatically migrate data out of relevant deployments and into a new or existing integration.
  • All GLOBAL software linked to integrations with the "Production" tag will be migrated.
  • Added a new App Preference, "Allow Beta Integrations to Migrate Deployments".

Improvements

  • Any software can now be selected for install/uninstall in "Installation Prerequisites"
  • Added parent-tenant-assignment batch action to the Tenants list
  • Added parent-tenant column to the Tenants list
  • Removed ability to deploy/preview cross-tenant computers on the deployment details page from MSP non-admin users that don't have the "can manage cross tenant deployments" permission
  • Added an audit log that records when the application starts up
  • Added an excel export button to the computer inventory scripts report table
  • Increased the timeout for Expand-ZipFile from 1500 to 3600 seconds
  • After updating a user, we now invalidate the cache for that user so the changes are propagated immediately
  • Setting the primary user for a computer now shows up in the audit table. This includes the User Affinity Job and PPKGs that have a primary user set on the installer.
  • Added Chassis Types to our initial inventory so newly created computers don't have the "Unknown Computer Type" badge
  • Decreased PowerShell execution time by optimizing module loading UI improvements in line with what's desired by support and most useful to users -Alerts added as seen fit by support to better inform the user submitting a ticket.

Bug Fixes

  • Fixed an issue preventing software from being selected in "Installation Prerequisites"
  • Fixed an issue with the dashboard table headers not loading correctly
  • Fixed an issue where moving a computer that had an immy agent to another tenant would cause the agent to be deleted if you were to delete the original tenant the computer was assigned to
  • Fixed a possible null reference exception that could occur when executing scripts over the CW Automate agent
  • Fixed an issue preventing integration inventory scripts from running.
  • Fixed an issue with CW Control target assignments saving the incorrect value for Control secondary groups
  • Fixed spelling of "invetory"
  • Fixed an issue with the dedupe inventory script failing with "System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation"
  • Added a missing comma in the meta robots attribute
  • Fixed an issue setting the primary person from the user affinity job
  • Fixed ProviderNotFoundException thrown by PSScriptAnalyzer
  • User cannot cause an error by submitting a ticket with the technician access box checked even as a non-admin. They can no longer check the box as it is grayed out.

0.63.3

Released 04/17/24

Bug Fixes

  • Fixed an issue setting the primary person from the user affinity job

0.63.2

Released 04/16/24

Improvements

  • Dynamic Integrations now allow you to implement ISupportsClientGrouping. This is useful when integrating with PSAs as clients can be grouped by what products they pay you for or the types of agreement they have.

Bug Fixes

  • Fixed an issue where rekeyed/soft-deleted agents would throw an error whenever we would update their status to online (due to a unique constraint violation in our database)
  • Fixed an issue where instances may not reliably automatically update when Days to wait after update is available was set to an interval longer than our typical release schedule.
  • Fixed an issue that was causing new devices to fail during registration.
  • The primary sidebar now automatically closes and opens when resizing between the desktop and mobile view
  • Resumed sessions will now execute immediately if Offline Behavior is set to Apply On Connect and the execution time has already passed. Before, it would re-schedule execution at the same time the next day.

0.63.1

Released 04/15/24

Computer Registry Tab

We have introduced a new tab on the computer details page that lets you remotely navigate the computer's registry and generate configuration tasks from selected values.

image

More functionality is expected to get shipped with version 0.64.0, such as the ability to search and create/edit/delete registry entries.

Improvements

  • All users can now see the maintenance item ordering page. Only MSP users have the ability to update the ordering.
  • After identification, a computer now runs full inventory immediately with priority.
  • Dynamic Integrations can now use dynamic parameters
  • You no longer need to emit [opresult]::Ok(); in your Integration's Init method
  • You can now create a script directly from the Registry tab. Afterward, you're sent to the New Task page with the script pre-selected.
  • Added padding to stage indicators on the session table
  • Added regex validation to the software page
  • Added the ability to run user scripts from the computer terminal tab.
  • Non-terminal errors/warnings coming from a Powershell host starting up will get pushed out as warnings in the console.
  • Removed parallel execution of inventory scripts when run through scheduled sessions. This should improve performance when we have the maximum number of sessions running at once from schedules
  • Depreciated User Action triggers has been fully removed to prevent confusion.
  • When immy restarts, it will now re-enqueue already running sessions first, then pending sessions, and then finally created sessions

Bug Fixes

`,99),l=e("ul",null,[e("li",null,"Fixed an issue where the user affinity job was assigning a primary person to a computer, even when the person was from a different tenant than the computer"),e("li",null,"Fixed an issue where an action's duration would continue to increment when a session was completed while the action was still running"),e("li",null,"Fixed an issue where the spinner icon in the Deployment Detection button was broken"),e("li",null,'Fixed an issue where loading a computer detail page would sometimes throw "InvalidOperationException: Sequence contains no elements"'),e("li",null,"Fixed an issue where schedules targeting CW Control secondary groups become could become borked when a CW Control company was renamed"),e("li",null,`Fixed an edge case issue where a scheduled job that's in "Pending Connectivity" status could run concurrently with a newly-created onboarding task of the agent is reinstalled with "automatic onboarding" enabled.`),e("li",null,"Fixed an issue where a software could incorrectly have a prereq on itself"),e("li",null,[t("Fixed a bug where it was possible to encounter a "),e("code",null,"Pipe is broken"),t(" exception while trying to execute scripts on a machine due to a possibility of the agent attempting to use a Powershell host that has faulted/exited recently before we could detect it.")]),e("li",null,[t("Fixed a bug that lead to User-context scripts to incorrectly use the System-context Environment variables (such as "),e("code",null,"TEMP"),t(", "),e("code",null,"USERPROFILE"),t(")")]),e("li",null,'Fixed an issue where the "show more" sidebar dropdown would collapse when selecting the notifications link'),e("li",{prompt:""},"Scripts no longer appends unwanted prompt query param values to your new-OAuthConsent -ExtraQueryParams @"),e("li",null,"Fixed an issue with re-ran actions incorrectly failing due to missing required parameters when they were present in a deployment"),e("li",null,"Fixed an issue where msp non-admins could not view cross-tenant deployments"),e("li",null,"Fixed an issue where msp non-admins could see access request notifications when it should have been admin only"),e("li",null,"Fixed an issue with incorrect breadcrumbs showing on the schedules list page"),e("li",null,'"User Action Trigger" dropdown have been removed in the Script Editor')],-1),d=i('

0.63.0

Released 04/02/24

Automatic Agent Update Changes

The preference to enable automatic agent upgrades has been added back.

We no longer rely on MSI installers to automatically update the immy agent. Instead, we copy the ephemeral agent binary into "C:\\Program Files (x86)\\ImmyBot" whenever we detect that the agent binary is on an older version. Logic has been put in place to protect agent installations from breaking due to failed upgrades. Overall, the automatic updates should be more resilient.

Notification Table Improvements

  • Severity is now the left-most column.
  • Added icons to the Severity column.
  • The Created column is now hidden by default.
  • The column chooser is now visible.
  • Table is ordered by updated date by default.

Improvements

  • Added filters to the dynamic integration types page to show "local/global" integration types and to show "developer/alpha/beta/production" release stages.
  • New Integration scripts come prepopulated with a working example
  • Changed the Resolved column in the notification table to an icon instead of a checkbox.
  • Added new notification for deployment migrations.
  • Release notes are now available to all users on the System Update page.
  • The deployment table can now be exported to excel!
  • Added an icon to integration cards on the integration list page to indicate it has a non-production release tag
  • Added a release tag badge to the integration details page
  • The Test-PendingReboot script used in maintenance sessions is now in global.
  • Added release tag selector to the provider link list page
  • Added missing datetime tooltips to computer timeline events and the session created date on the session list page
  • Added the year to all timestamps in the session logs view
  • Agents now get updated in the database when the integration reports a new manufacturer
  • Updated error message when navigating to a computer that does not exist to read: "Computer with id xxx was not found".
  • Updated error message when navigating to a computer that has been replaced by another computer to read: "Computer with id xxx has been replaced by computer with id xxx"
  • Updated error message when navigating to a computer that has been deleted to state: "Computer with id xxx has been deleted."
  • The tenant software page UI has been updated to contain new views for deployments, computers, and persons for each found software.

Bug Fixes

  • Fixed an issue in the script editor about The term 'Invoke-ScriptAnalyzer' is not recognized
  • Fixed an issue where some PSPipeHosts that failed to connect wouldn't provide as much useful data for diagnostics.
  • Forms with Password inputs no longer autofill and replace content in other fields
  • Integrations with no parameters (like the CW Manage Pod) no longer show “Please correct above errors” error message
  • Resolved an issue where some machines were experiencing ephemeral port exhaustion when Ephemeral agent was in a retry loop.
  • The Text on the deployments no longer includes the tenant name for cross-tenant deployments. This gave users the false impression that the deployment was tenant specific when it was not.
  • If an Immy tenant was linked to an Azure customer but accidentally set as Partner, then unlinking it from the Tenant Details Azure tab and linking it again from the Azure Customer Mapper should now correctly reset the tenant to Customer
  • Fixed a bug where tenant consented-at/consented-with details were not updating after consent until the page was refreshed
  • Fixed an issue where uploading global software failed
  • Fixed an error that occurred when targeting CW Automate groups on a deployment
  • Fixed some exceptions that were occurring during inventory
  • Fixes css inconsistencies on tenant software list, devextreme, and ImmyLink
  • Fixed an issue where bits transfer errors were not being shown in the session log output
  • Fixed an issue where the ISO option was now available in the immy agent download modal
  • Fixed a bug where some machines fail to return OS install date due to culture issues resulting in a failure to identify.
  • Removed the Default Hourly Inventory Task from the UI since we only support running inventory on a schedule once per day
  • Fixed an issue where agent integration syncs were unable to bring back agents that were deleted. Most commonly found from CW Control and CW Automate.
  • Fixed an issue where deleted agents were still showing up on the Integration -> Agents tab

0.62.6

Released 03/22/24

Bug Fixes

  • Fixed a performance issue with intellisense in the script editor that was causing high CPU
  • Fixed a common exception that was occurring during scheduled inventory jobs

0.62.5

Released 03/19/24

Bug Fixes

  • Fixed an exception that occurred when analyzing a package by url

0.62.4

Released 03/12/24

Bug Fixes

  • Fixed a bug where instance-updated emails were not getting sent after updating ImmyBot to the latest version
  • Fixed an issue with updating maintenance tasks where it sometimes complained about certain fields being required when it should not have
  • Fixed a bug where reboot pref would not update on schedule page

0.62.3

Released 03/12/24

Bug Fixes

  • Fixed an error that occurred when uploading a license
  • Fixed an error that occurred when creating a deployment for a CW Automate Group or CW Control Secondary Group

0.62.2

Released 03/07/24

Bug Fixes

  • Fixed an issue with N-Central where the dynamic version script would not run and prevented installs and updates

0.62.1

Released 03/06/24

Bug Fixes

  • Fixed an issue creating/updating tags with limited tenants specified
  • Fixed an issue creating/updating software licenses

0.62.0

Released 02/29/24

Bug Fixes

  • Fixed an issue where computers that failed to run inventory were incorrectly being classified as workstations/desktops by default. This was causing workstation deployments to incorrectly resolve to the computer.
  • Fixed an issue with application errors disappearing when clicking the "Show Details" link
  • Chocolatey packages no longer fail detection (Removed -lo from Choco command)
  • Fixed issue where even though an "Agent Integration" was specified with GetDynamicVersions implemented, Immy would not run GetDynamicVersions unless the "Use dynamic versions" checkbox was checked
  • Fixed a long standing issue where The Immy Agent/Ephemeral would drop & invoke an unsigned powershell script named Invoke-PSPipeHost.ps1. This would cause some AV & EDR to not like us.
  • Fixed an issue where some computers were stuck in the onboarding status after completion of an onboarding session
  • Fixed an issue where the stale link in preferences was not working
  • Fixed a minor issue in the Application Locks page that would show all active locks fetched as 'cancellable' when they may actually be 'terminal' when requested.
  • Fixed a bug where changing the slug from tenants list page for an MSP tenant would unset the tenant's MSP status
  • Fixed a null reference exception that could occur in the NCentral API client
  • Fixed several null reference exceptions that could occur when loading certain pages
  • Fixed a null reference exception that could occur when parsing a dynamic version result
  • Fixed some null reference exceptions that were occurring sending commands to CW Automate
  • Fixed a null reference exception that was occurring for immy agents attempting to execute scripts over the IoT Hub even when the hub has been removed
  • The detected computer software table now includes software that have SystemComponent set to 0 in the registry.

Improvements

  • Added a new reporting page called Computer Inventory Scripts that contains the latest results of all inventory scripts ran against computers
  • Added more details to exceptions coming from integrations to help diagnose issues
  • (Developer improvement) We have integrated new security testing into our code repository to help us detect potential vulnerabilities before they are released.
  • The version text in the download agent button on the sidebar has been removed to avoid confusion. The agent version is still displayed in the modal that shows after clicking the button.
  • We have exposed the immy.bot API under your-instance.immy.bot/swagger using the Swagger OpenAPI spec. https://swagger.io/specification/. Although officially this is not support, it may be useful if you are attempting to use our api in a 3rd party application.
  • Edit Software: Advanced items with overridden (non-default) values are visible without expanding Advanced
  • Edit Software: Selecting an Integration hides Version/Dynamic Versions UI to make it more obvious that the expectation is for the Integration to handle this logic.
  • If a software is linked to an integration type but the deployment is missing the IntegrationId, but only one integration of that type exists, Immy will fall back to using that single integration.
  • Updated ImmyBot references to immy.bot
  • Removed deprecated IoT Hub code and dependencies from the latest version of the ImmyBot Agent
  • Added a help button explaining global vs local on the Software and Tasks pages
  • Removed progress bar from System context scripts that don't specify PercentComplete. Only the most recent ProgressRecords show status
  • You can now create your own computer inventory tasks. In another release we will add the ability to represent them in the UI. For now, you can see results in the Computer Inventory Table and query them in filter/meta scripts.
  • Added more maintenance options to the computer batch actions. In addition to running full maintenance, you can now run inventory scripts, deployment resolution, and deployment detection.
  • On the computer details page toolbar, "Re-Inventory" was renamed to "Deployment Detection"

0.61.6

Released 02-21-24

Improvements

  • The session logs for verifying the installed software version now include the detected version
  • Inventory is now always performed for full maintenance sessions to ensure inventory data is as up to date as possible before resolving deployments

Bug Fixes

  • Fixed an issue with tags not immediately displaying in the tenant list
  • Fixed an issue with some checkbox values not updating after the first click

0.61.5

Released 02-15-24

Bug Fixes

  • Fixed an issue where users were unable to toggle Remote Control tenant preferences
  • Fixed an issue with non-MSP users unable to load the deployment list
  • Fixed an issue with the "Show dismissed recommended deployments" selector not working
  • Fixed an issue with manually identified agents always being associated with the MSP tenant instead of the selected tenant

0.61.4

Released 02-12-24

Bug Fixes

  • Fixed an issue with the script editor not showing output when loading a script for the first time.

0.61.3

Released 02-09-24

Bug Fixes

  • Fixed an issue where target assignments for an azure group were failing with "PostgresException: 42703: column i.deleted_at does not exist"
  • Fixed an issue with intellisense not starting when opening a script from a maintenance session

0.61.2

Released 02-08-24

Bug Fixes

  • Fixed an issue with not being able to update the value of licenses

0.61.1

Released 02-08-24

Bug Fixes

  • Fixed an issue in the ImmyAgent where it was attempting to connect over the IoT Hub even if the agent was never registered with the IoT Hub. This issue manifested in the agent never showing up in pending list.

Improvements

  • The latest version of the ImmyAgent removes references to the IoT Hub since it has been deprecated.
  • For agents that experienced the bug with the IoT Hub mentioned above, they will now be able to successfully connect to Immy and show up in the pending list. Some agents will automatically get associated to their existing computers while some may need to be manually identified to the correct tenant.

0.61.0

Released 02-05-24

Deployment Notes

Deployments can now have notes. After saving a deployment, notes can be added to it.

image

A notes column has been added on the deployment list page. If it is not visible by default, click the image icon to add it.

image

Computer Excel Export

Located under Reporting -> Computers or at the URL /reporting/computers.

A new report table has been added for "Computers" that can be used to generate an excel report of computers by clicking the xlsx button.

When the table is filtered, only the results in the filter will be exported.

Soft Delete Computers & Agents

Deletion of computers and agents are now performed using a soft-delete.

The current exceptions are:

  1. Deleting tenants: which will cascade delete all computers for the tenant
  2. Deleting integrations: which will cascade delete all agents for the integration

General Improvements

  • The system status page now refreshes automatically every 5 seconds
  • Updated the deployment list column visibility defaults to hide the software version and disabled columns and show the notes column
  • Most recent Write-Progress -Activity <value> now shown on activity detail and current activity overview
  • Added system preference to exclude Chocolatey software results from the deployment software search
  • Dymamic Integrations can implement required interface for running scripts on target
  • Notifications for agents requiring a manual decision are now automatically resolved if there are no more agents that require a manual decision
  • Added warning messages to the deployment screen when required scripts are missing
  • Improved performance by fixing possible memory leaks that could occur during maintenance sessions
  • You can now add a person selector as a dropdown parameter via New-PersonParameter
  • Newly generated Powershell install scripts for Immy Agents now point to an always-latest installer binary 🥳🎉
  • Computer Software report is now generated using excel instead of csv. Also, the export now only exports rows matching the current filter.
  • Added up to 3 retry attempts when attempting to set the unique identifier for a device during identification
  • Added logic to track computers that have been wiped and replaced by other computers. This isn't shown anywhere in the UI as of right now, but can be added in the future
  • Standardized order of Filter Script and Metascript between Cross Tenant and Single Tenant selections when creating deployments
  • Improved performance of saving maintenance session related data to the database
  • Removed word assignment from deployment page data column.
  • Added autocomplete="off" to dynamic form inputs to prevent browsers from injecting unwanted values on deployment and integration pages
  • The "New" software button on the software list page now links directly to the software upload page
  • ISupportsMaintenanceMode for dynamic integrations now disables maintenance mode at the end of sessions
  • Versions details page will automatically show overrides if any are present
  • Software details version table now displays when the version has overrides
  • Updated the software details detection method table to pull results from the detected computer software table used in reporting. This provides better performance and unifies the results between this feature and the reporting.
  • Added warning tooltips to computer overview page for unsupported OS and PowerShell versions
  • Added security exclusions confirmation on session support request page
  • Added hidden column to the detected computer software table that shows the potentially matched global software id
  • Added new report page for computers with the ability to export to excel
  • The "Show Identification Logs" button in the computer page / pending tab is now aligned to the top right instead of in the middle of the row, and renders above any potential errors
  • Application Locks (used for things such as Invoke-AtomicCommand, Invoke-CommandCached) are now visible & controlable via the new 'Application Locks' page under 'Show More'.

Bug Fixes

  • When viewing page on mobile, the sidebar is now hidden on navigation change
  • Fixed an issue where the filter on the tags list was not working as expected
  • Fixed an issue where adhoc maintenance sessions marked as pending connectivity were never being resumed
  • Agents Requiring Manual Decision Notification shows resolved text when no more agents require a manual decision
  • Fixed duplicate text under the Script Path application preference
  • Fixed an issue where checking if we are within business hours was not getting cached, causing additional unnecessary checks
  • Fixed an issue where the within business hours session log was not getting emitted
  • Fixed a deadlock issue that could occur when cancelling a session
  • Updated copyright date to be dynamically set
  • Fixed an issue where New-MediaParameter values were not being set to the path to the downloaded file
  • Fixed styling of access request notifications
  • Added missing border to the top of the Azure notification group header
  • Corrected inconsistent padding of Azure notification group header
  • Fixed issue with missing bottom padding between integrations on integration list page
  • Fixed an issue where some filter scripts were not specifying the cloud context
  • Integration Audit Entries no longer get hung and show no output when clicking details
  • Intellisense no longer stops working when you switch between script tabs
  • Status spinner no longer spins forever when in Stopped state
  • Fixed an issue where multiple ephemeral agents were possibly spinning up during identification of a device
  • Fixed a visual issue where loading a schedule would incorrectly show "Sunday" as the day to run when the value was not "Sunday"
  • Fixed an issue where a duplicate streaming button would show up when streaming agent identification logs
  • The primary user deployment is now hidden from the deployment list since it is a mandatory deployment
  • Updated uninstall help text to reflect existing behavior
  • Fixed an issue where brandings that didn't specify a logo or header image would sometimes still show a broken image
  • Fixed an issue where we were not checking if the port had been specified for an SMTP and resulted in an obscure exception for the end user if the port value was missing
  • Fixed an issue where the person dropdown parameter in onboarding tasks were not limited to persons in the computer's tenant.
  • Fixed an issue on the software upload page, where the validation message for the software version was not showing up.
  • Fixed an issue on the Tasks list page where filtering to Computer tasks were incorrectly including configuration tasks
  • Fixes incorrect PPKG text in download modal
  • Fixed an issue where scripts could fail with FileNotFound.
  • Fixed issue with detected computer software table where it would exclude registry entries that had duplicate display names, but different versions, or some being linked to global and not others
  • Added missing timestamps when hovering over "x days ago" text throughout the application
  • New software versions will now default to the Inherited upgrade strategy
  • Fixed an issue where some Win7 machines were failing to start Ephemeral agent.

0.60.0

Released 01-09-24

Automatic ImmyBot Version Upgrades

When a new version of ImmyBot is released, you can now specify if you want to automatically update to that release after a specified amount of time. This behavior is configurable in preferences.

image

Release Channel

The release channel determines what versions of ImmyBot are available to you. You can now choose which release channel you want to subscribe to.

The available channels are: Alpha, Beta, and General.

  • Alpha: This channel contains releases that have passed development but may still be unstable. Only use this channel if it's absolutely necessary for a critical fix or to test brand new features and provide feedback.
  • Beta: This channel is for early adopters and contains releases that are in the final rounds of testing. Use this channel to test new features and provide feedback.
  • General: This channel contains releases that have been tested and are ready for general use. This is the recommended channel for stability.

All instances will default to the General channel.

You can change your channel on the System Update Page.

image

ImmyBot is on .NET 8

The ImmyBot backend is now running .NET 8. While this doesn't introduce new features to end users, it does provide better performance and newer development features that benefit ImmyBot.

Cross-Tenant Deployment Change Requests

A new application preference has been introduced that when enabled will require MSP non-admin users to submit change requests when creating or updating cross-tenant deployments.

image

On a per user basis, you can additionally opt-out of requiring change requests by assigning the user the following capability from the edit user page:

image

Change requests are submitted from the deployment details page in the same area you would normally create and update a deployment.

image

Once submitted, the change request can be reviewed in a read-only format. MSP non-admins will have the option to edit the change request, while MSP admins will have the ability to approve or deny the change request.

MSP non-admins see

image

MSP admins see

image

All open change requests can be seen from the deployment list page.

image

Improvements

  • Added hidden column to the detected computer software table that shows the potentially matched global software id
  • The tenant software search tab on the tenant details page now renders as a filterable table with the ability to export
  • Automatic ImmyAgent updates are now enabled by default
  • When creating a new deployment, selecting Onboarding Only will now default to "Value from: deployment".
  • Changed notifications list page to hide resolved notifications by default
  • Deployments page will now default to grouping by tenant
  • IntelliSense can be restarted without refreshing the browser

Bug Fixes

  • Fixed issue with some property text in the audit table colliding with other property text
  • Fixed issue where unmatched software in the detected computer software table were not filterable
  • Fixed an issue where detection could fail with "Exception of type 'CwAutomateProvider.CwAutomateHttpException' was thrown." when checking for windows patching. It will now skip windows patching, provide a more useful message, and continue the session.
  • Fixed an issue where creating/updating deployments for integration group targets was not saving the selected tenant
  • Fixed an issue where starting ephemeral agent would cause an error on some older machines.
  • Fixed an issue where the getting started wizard was popping up even when a computer had already been added
  • Fixed an issue where the software repair custom script was not showing up under the Repair Strategy label on the software details page
  • Persistent Agent main connection will now more aggressively obey System Web proxy when attempting to connect.
  • Fixed an issue where Immy Agent EXE downloads would produce a corrupted binary.
  • Fixed an issue where upgrade code and product code were failing to match to global software during detection
  • Fixed issue where Azure Tenant Problem notifications were being created when there were not actually any problems

0.59.3

Released 12-20-23

Bug Fixes

  • Fixed a caching issue where adhoc deploying to multiple computers and then re-running a session would sometimes trigger the session for a different computer
  • Fixed an issue where msp admins would sometimes show up as MSP Tenants
  • Fixed an issue with the detected computer software table where it was not updating information after re-running inventory
  • Fixed an issue where configuration task actions would sometimes not showing the detect stage progress line

0.59.2

Released 12-19-23

Bug Fixes

  • Fixed issue with showing media on the media list page
  • Fixed issue on the tenant details page where the batch actions button on the computer table was not working
  • Fixed issue with calls to Get-ImmyComputer from metascripts where it was incorrectly excluding computers that were excluded from maintenance. This check is only supposed to happen when resolving computers for a deployment or a schedule.

0.59.1

Released 12-13-23

Bug Fixes

  • Fixed issue where Computers and Tenants were still being included in the preview for the Edit Deployment screen even though the tenant had the "Exclude from Cross Tenant Schedules and Deployments" preference set
  • Fixed a caching issue where scheduled maintenance sessions were not always picking the correct deployment

0.59.0

Released 12-12-23

Detected Computer Software Export

We added a page to view all computer detected software and a button to export it to a csv file.

You can access this page from /reporting/detected-computer-software. Values from this table are populated from inventory.

',137),h=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/f30cb597-3a97-49d9-b26a-7018b1dd5605","max-width":"100%"},null,-1),c=e("h3",{id:"oauth-parameters",tabindex:"-1"},[t("OAuth Parameters "),e("a",{class:"header-anchor",href:"#oauth-parameters","aria-label":'Permalink to "OAuth Parameters"'},"​")],-1),u=e("p",null,"Added the ability to create and select auto-refreshing OAuth tokens as script parameters",-1),p=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/85259b64-917e-4676-9f44-8cde043e6fa6","max-width":"100%"},null,-1),m=e("hr",null,null,-1),g=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/ec13e684-8bd3-479c-9c94-69ee21103dfc","max-width":"100%"},null,-1),w=e("hr",null,null,-1),b=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/94275c46-2c78-4739-a0fb-43260f210f88","max-width":"100%"},null,-1),f=e("hr",null,null,-1),y=e("p",null,"Added a button to the Azure Partner Settings page to pre-consent customers to the default or custom app registration via the Partner Center API",-1),k=e("p",null,"This removes the need to provide consent for each customer manually using an admin account from the customer",-1),x=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/8a3c312d-b8d4-4b94-8f1a-5c2c1cb13d65","max-width":"100%"},null,-1),v=e("hr",null,null,-1),q=e("p",null,"Added an OAuth Token Acquisition mechanism to allow Partner admins to give ImmyBot consent to use the Partner Center API",-1),F=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/1d78a586-637b-49b5-9ec4-5a349a8c77b4","max-width":"100%"},null,-1),A=i(`

Automatic ImmyBot Agent Updates (Alpha)

When a computer attempts to run a script and we establish an ephemeral agent connection, we now also upgrade the ImmyBot Agent if it is outdated. This is currently in alpha and can be opted into from the Application Preferences page.

Improvements

  • You can use the new ScriptTimeout attribute to override the default execution time of 60 seconds in integration scripts (Supports up to 300 seconds)
  • Integrations supporting ISupportsHttpRequest now display the HttpRequest Uri
  • Added integration release stage badges to indicate whether an integration is in the Alpha, Beta, or Production stage.
  • Uninstalling software no longer enforces required parameters specified by the deployment.
  • [Alpha Opt-In] Write-Progress -Activity "Activity 1" -Status "Migrating" Calling Write-Progress with both Activity and Status parameters creates a new row on the action in the session. This helps visualize the progress of long running tasks.
  • Added BitLocker Status to the logical disk tab on the computer details page
  • Added TPM Version to the overview on the computer details page
  • Added disabled deploy button next to configuration tasks with a tooltip explaining that they cannot be deployed directly. The missing deploy button was causing confusion.
  • Added a docs link for agent identification failures under the computer page -> pending tab.
  • Updated help text of desired software state - Latest Version, to read "Will install/update the software to the latest version"
  • Added a link to the ordering page from the deployment list page
  • Updated the execution order help text to read "All tasks that are limited to onboarding computers will be executed at the beginning of the session in the onboarding stage, following the sequence in which they are listed. Once the onboarding process is complete, we will proceed to execute all other actions, also in the order they are listed."
  • Added 'Azure Tenant Problems Detected' notifications to indicate errors and other detected problems related to Azure tenants
  • Made notification creation more performant
  • Added User preference area and moved the theme toggle to it.
  • Improved some UI color settings
  • Creating, updating, and deleting schedules show up in the audit table.
  • Maintenance tasks can now specify an integration to link
  • Fixed an issue on startup that was causing some startup jobs to not run
  • The logic that ensures we have online agents before running a script on a computer no longer runs if we have an active ephemeral agent connection
  • Added AssignmentScope as a script parameter. Possible values are CrossTenant, SingleTenant, and Individual.
  • When ImmyBot restarts, we no longer cancel sessions due to them being considered "outdated". This was an old piece of code that was there to prevent accidental reboots during business hours. This check is no longer needed since we check for active hours and business hours during the maintenance session when deciding if the computer needs to reboot.
  • Important - ImmyBot agents that are installed with automatic onboarding will now ALWAYS automatically onboard. Before, we would optionally not perform onboarding if the agent resolved to an existing computer that had previously run at least one maintenance session.
  • Removed converted parameter values from parameter validation responses since it could possibility contain sensitive data and the value was not being used on the frontend
  • Invoke-CommandCached and Invoke-AtomicCommand cmdlets are now available for use inside Filter Scripts.
  • Action errors regarding missing/failed software prerequisites now show the software's name instead of the type and identifier.
  • Changes to software prerequisites now show up in the audit table
  • Added a link to the ImmyBot community forum to the navbar
  • Minimizing the script editor persists any ephemeral tabs you had open.
  • Extended the ephemeral agent disconnected text to say "This computer does not have an ephemeral agent. An ephemeral agent will connect when a script is run against this computer."
  • Several new Azure-related notifications have been added
  • Fixed an issue where multiple sidebars could be showing and overlapping at the same time
  • Parameter descriptions are now always visible. Before, they were only visible if you were overriding the default value.
  • Improved styling of default value key/value pair parameters on the deployment form
  • Improved serial execution of maintenance tasks by adding a more visible locking mechanism. You can now see who the currently executing computer / session is.
  • Added a check when creating or updating a deployment that warns you when a duplicate deployment is detected. You have the option to replace the existing deployment or fix the newer one such that it is no longer a duplicate.
  • Schedules and Adhoc Deployments now apply batching to create the maintenance sessions. We've seen about a 6x improvement in speed in creation.
  • Debounced script editor changes to prevent Intellisense crashes
  • You can now save scripts that have syntax errors by acknowledging the confirmation modal. Useful for saving unfinished scripts or scripts that may not actually have syntax errors when run on an endpoint
  • Improved ImmyAgent setup when deploying new instances that should result in fewer errors and faster instance setup
  • Improved performance of session cancellation by simplifying the database queries
  • Adding an invisible Formatter, so that information can be easily hidden. Using this to hide ParameterSetBinding messages.
  • In the Debugger section Parameters and Variables, the subsections are now open by default
  • In the Script Details section for the Type dropdown, the Software Auto Update element has been removed
  • Added integration capability ISupportsAgentDownload. Allowing integrations to provide their own "Download Installer" script.
  • Added integration capability ISupportsAuthenticatedDownload. Allowing integrations to provide authentication information without leaking sensitive information.
  • N-Central integration has finally graduated from Beta status, and can now be found in the Integrations page 🎉

Bug Fixes

  • Fixed an issue where some ImmyBot tenants linked to Azure customers were getting reset to Partner type within ImmyBot
    • For Customer tenants that are erroneously set to Partner in ImmyBot, you can fix these by finding the customer on the Azure Settings page, and unlinking/relinking it
  • Fixed an issue where full maintenance schedule sessions did not have the "Full Maintenance" tag in the sessions table Fixed an issue with N-Central integration failing to re-authenticate after ~24hrs of running.
  • Fixed an issue where starting ImmyBot remote control for an outdated agent was kicking off a session that contained actions other than the agent update.
  • Fixed an issue with license descriptions now showing on the deployment page
  • Fixed potential null reference exception on Deployment page when ValidateScript is used
  • Fixed an issue where wiped computers were not being treated as wiped if an existing computer was found. A wiped computer is one where the hostname and OS install date are different that the computer we already see inside of ImmyBot.
  • Fixed a divide by zero error that could occur while computing a software installer's download speed.
  • Set the audit user text to show the user's email address if the user does not have a first or last name specified
  • Fixed an issue where some ImmyAgent & Ephemeral Agent binaries included some unsigned assemblies, falsely triggering some security tooling like ThreatLocker.
  • Fixed an issue where Immy Starter plans were able to select the schedules nav item
  • Fixed an issue where resolving agent identification issues resulted in "404 - entity could not be found."
  • Fixed an issue where resolving agent identification issues with "Let Immy Try again" was not doing anything.
  • Fixed an issue where some ImmyBot agents were failing to connect to ImmyBot when it was re-installed
  • Fixed an issue where only the ImmyBot team could view global dynamic integration types
  • Fixed an issue with scheduling the user computer affinity job once a day
  • Removed some old migration code that was delaying startup and potentially causing issues
  • Fixed an issue where some Immy Agent upgrades would leave installs dead in the water due to a config parsing issue.
  • Fixed an issue where sometimes analyzing an installer package would cause an IOException.
  • Fixed an issue where a software prerequisite would not be installed if an "update if found" deployment for the prerequisite resulted in "no action" because it was not found on the endpoint. Now, an install action for the prerequisite will be created anyway.
  • Fixed an issue where selecting text on expanded script-runs would collapse the script
  • Fixed an issue with fetching CW Manage agreement products where the deployment would show "Server error. Please contact your Administrator." Occurred when CW Manage attempted to return several hundred agreement products.
  • Fixed an issue running invoke-immycommand from a cloud script against a computer that would throw an error during the preflight check, "Value cannot be null. (Parameter 'psComputers')".
  • Fixed issue removing previous pages breadcrumbs on the session list page
  • Fixed an issue on the onboarding form where mandatory parameters would not show the input by default if the parameter was dynamically discovered
  • Fixed several minor issues found with the agent installer download modal and the getting started wizard modal
  • Fixed a caching issue with inserting session logs into the database
  • Fixed a caching issue with detected software from a machine
  • Fixed an issue where database queries to get a list of sorted deployments during a maintenance session were not being cached
  • Fixed an issue where the Package Analyzer would throw a The process cannot access the file error
  • Fixed issue with our script analyzer rule for detecting missing $using: in Invoke-ImmyCommand
  • Fixed the N-Central issue that keeps appearing "InvalidLoginCredentialsException: New tab request failed!"
  • ParameterSetBinding should not emit output.

0.58.3

Released 11-1-23

Notifications

Notification Sidebar

We have updated how our notification system works.

The bell icon in the navbar will provide a number of the unacknowledged notifications you have.

image

The sidebar will show when clicking this icon.

image

Notification History

You can access all notifications from the primary sidebar under "Show More" -> "Notifications". By default, it will only show you unacknowledged notifications. You can click the "reset" link or change the filter on the "Acknowledgement" column to view acknowledged notifications.

image

Silencing notifications

From the notification sidebar, you can silence notifications by the notification type or for the specific object the notification was for.

image

You can then view all of your silenced notifications from the notification history page.

image

Notification Types

We have plenty of notification types in the pipeline. Here are the notification types currently implemented.

  1. Integration Unhealthy - a notification to let MSP users know that an integration has become unhealthy
  2. Access Requested - a notification to let MSP users know that someone is requesting access to their instance of ImmyBot
  3. Large Script Output - a notification to let MSP users know that a specific script has outputted a large amount of data. When scripts like this run during maintenance for hundreds of devices, it can easily cause high CPU and memory which leads to sluggish performance and potential crashes.
  4. Unacknowledged Recommended Deployments - a notification to let MSP users know that there are new recommended deployments that need to be allowed or denied.

Some notification types that will be coming soon include, but are not limited to:

  1. Agents Requires Manual Decision - a notification that lets MSP users know there are agents pending identification that could not be automatically resolved to a computer and require manual actions.
  2. ImmyBot Updated - a notification that lets MSP users know that ImmyBot has been updated to a newer version
  3. Cross-Tenant Deployment Requires Approval - a notification that lets MSP admin users know that a cross-tenant deployment was created or modified and needs approval from an MSP Admin. (Feature coming soon)
  4. Azure related notifications

Improvements

  • Updated variable alert on the license details page to be the same alert shown on the software details page -> license help alert
  • Added random jitter to the time we schedule some of our recurring jobs so that we reduce high database load due to all instances kicking off the jobs at the same time.
  • For maintenance sessions that target a specific item, a session log has been added at the beginning that provides the name of the maintenance item
  • Added auditing for static software versions and static maintenance task parameters
  • Schedules that target a specific maintenance item will now always create a maintenance session for every computer resolved in the schedule's target group. If the computer does not have a deployment for the specified maintenance item, then the session will complete instantly with no actions added.
  • Upgraded PowerShell Editor Services from 3.6 to 3.13
  • Batch actions sidebar now slides out underneath the navbar to not block actions
  • Batch actions sidebar background color was updated to provide more contrast
  • You can now restart Intellisense from the status bar.
    • image
  • Intellisense will restart automatically when changing script type.
  • Removed dependency on Ace.js that shaved off 366KB from the project
  • Made a slight performance change to schedule logic that should result in faster start times for schedules with many computers
  • Added a "Job Args" property to the session details page info panel that expands to show more data associated with the session.
  • ImmyBot no longer tries to run scripts against non-Pro N-Central agents
  • Added custom PSScriptAnalyzerRule with Code Action to detect and fix missing $using: scope modifier in Invoke-ImmyCommand
    • image

Bug Fixes

  • Fixed an issue with azure tenant data sync job not getting scheduled correctly
  • Fixed an issue with cloud deployments targeting tags where the session would error in a NotImplementedException
  • Fixed an issue where agent updates only maintenance sessions were not viewable by a non-msp admin even if the computer was under their tenant
  • Improve deadlock handling when integrations need to be created, removed, or re-initialized
  • Fixed an issue where users were unable to upload license files
  • Fixed an issue on instance startup where integrations were possibly initializing twice unnecessarily
  • Added a default timeout of 5 minutes to every API request made to Automate. We were not specifying a timeout before so the request could have been long-lived
  • Improved the initialization of the CW Automate integration by reducing the number of times we instantiate an API client to communicate with the Automate Server
  • Refactored the logic that handles enqueuing scripts to execute over CW Automate to prevent potential locking and add additional debug logging
  • Fixed an issue where the system status page was not showing metrics under CW Automate and CW Control when it should have
  • Fixed issue where Intellisense would be unrecoverable after selecting script type Software Auto Update
  • Fixed an issue where provider sync jobs could continually enqueue when only one should ever be enqueued at a time.
  • Fixed an issue where CWControl provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length
    • image
  • Fixed an issue where some actions would result in an error of "Invalid maintenance action type."
  • Fixed a potential issue with all providers remaining unhealthy upon server starting up
  • Improved the load time of the application on startup
  • Fixed an issue where some more known bad device ids were being used to uniquely identify a computer, e.g. ffffffff-ffff-ffff-ffff-ffffffffffff
  • Fixed an issue where ImmyAgent provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length.
    • image

0.58.2

Released 10-11-23

Audit Page

An audit page was added that MSP admins can use to view changes made to objects such as Target Assignments and Scripts. This also includes changes made to global objects. This is part one of an effort to provide more transparency around changes made to global data. This page is accessible under Show More -> Audit, or "your-instance.immy.bot/settings/audit".

Improvements

  • Get-ImmyComputer -IncludeTags from a filter script or a meta script now include the tags for the computer's tenant and primary user
  • Improved our resiliency for Redis reconnection for background jobs
  • Updated the Hangfire Service watcher to fix common issues that may occur when it restarts
  • Improved some internal logging that will help diagnose application crashes
  • Added some additional logging to detect performance issues related to CW Control connection events
  • Added support for putting an agent in maintenance mode at the beginning of a session
  • Sessions with reboot preference set to force now only force a reboot at the beginning and end of the session. Reboot checks after each action will only reboot if necessary.
  • Added the ability to toggle online status support for agents of an integration since some dynamic integrations don't support online status
  • The "Install Agent" button on the computer details page now kicks off a maintenance session instead of installing behind the scenes
  • Updated the version of our dependency on the Azure.Storage.Blobs package, which provides better performance.

Bug Fixes

  • Fixed some theme styling issues on some of the tables
  • Fixed an error in the web inspector console that was reporting BackendVersion was null
  • Fixed an issue where array parameters that used [ValidateSet] would not render the dropdown of valid values
  • Fixed an incorrect variable name in the license alert on the software details form. $LicenseFile should have been $LicenseFilePath
  • Fixed an issue where the session resume button would stay disabled if you clicked it but didn't confirm the action.
  • Fixed an issue where deployment parameters were not showing in the correct positions Fixed an issue with the Package Analyzer failing to download some software hosted behind CloudFront CDN.
  • Fixed an issue where Invoke-CommandCached would return objects slightly differently than expected, causing some unexpected behavior for scripts.
  • Fixed an issue where the "Show value view" on a parameter form would not actually show the parameter values
  • Fixed an issue with agent inventory identification where old agents tied to a computer were not getting replaced by the a newer agent
  • Fixed an issue where a phase could be considered successful if the agent went offline at just the right time
  • Fixed an issue where an agent going offline would fail a maintenance task action during the Download Installer phase
  • Fixed an issue where refreshing the computer's connected status would throw an error regarding some agents not supporting the ability to refresh an agent's online status
  • Fixed a potential null reference exception that was thrown when reloading integration types
  • Fixed an issue where dynamic integration agents were not syncing updated data, such as changed name, serial number, or osname
  • Fixed an issue with pending connectivity kicking off incorrectly for disabled/unhealthy links
  • Fixed an issue where the ImmyAgent provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length.

0.58.1

Released 09-28-23

Improvements

  • Made errors that occur while interacting with the graph api show on the frontend to help guide the user on how to resolve common Azure configuration problems
  • Added the ability to specify a docs url for dynamic integrations that will be shown on the integration edit details page
  • Added the installer download url to the session log when attempting a BITS or basic download
  • ImmyBot now defaults to dark mode unless the browser preference is set to light
  • Moved immy support access preference to the top of the preferences page
  • Made Add-UriQueryParameter no longer require -Parameter when Uri is passed in via Pipeline
  • Added the ability to trigger an agent sync from an integration on the clients tab and agents tab
  • Added support for incoming http request inspection to integration audit logging
  • Added support for non-mandatory integration method parameters
  • Dynamic Integrations that support agents can now specify whether the agent supports an online/offline status. Some integrations were defaulting to always online which caused issues with the pending connectivity logic
  • Updated session log text about retrying to fetch PowerShell version
  • Added a better error message when a dynamic version script returns a newer version than what was detected previously in the session. The message is "The dynamic version script is returning a newer version than what was retrieved the last time the script was ran. If so, re-deploy this action. We will automatically handle this scenario in a future release."

Bug Fixes

  • Fixed an issue with onboarding and deployment parameters where the form would sometimes not render due to hidden errors. The errors are now visible in this case.
  • Fixed an issue on the onboarding form where values specified on the deployment form were not considered when resolving any errors
  • Fixed a bug where only the first 300 Azure customers of a partner tenant would show up in the Azure customer mapper
  • Fixed an issue where global software -> agent integration dropdown was showing local integrations
  • Fixed a bug where linking an az customer would incorrectly set the az tenant type as Standalone, preventing usage of the graph api for that customer
  • Fixed an issue where sessions would sometimes not show the computer name, and links to the computer would result in a 404
  • Fixed an issue where a license couldn't be deleted because it was used by a deployment that was no longer showing the license selector. The selector now shows and the license can be successfully removed from the deployment
  • Fixed a rare issue where agents would fail to be synced if the integration reported multiple agents with the same agent id
  • Fixed an issue where Immybot.Agent.Shared.dll from the ImmyBot agent MSI installer was not signed
  • Fixed an issue where linking a dynamic integration client was removing other agents incorrectly during the sync
  • Fixed a bug where tenant select boxes couldn't be searched on provider client link pages
  • Fixed an issue where custom app reg could not be changed without first toggling permission level
  • Fixed an issue where reloading integration types would result in a permission error
  • Fixed an issue where the unlinked msp client banner would show up even when the msp client was linked
  • Fixed an issue that was preventing the ImmyBot agent's .dlls to be signed
  • Removed extra "$" in front of version in the dynamic version response
  • Removed the agent's client name from the agent tab to prevent confusion
  • Fixed an issue where a pending agent "Let Immy Try Agent" action was not working as expected
  • Fixed an issue where a script dropdown would show incorrect results if it was toggled to only show global scripts or toggled to only show local scripts
  • Fixed a "downlaod" typo in "Action To Take"

0.58.0

Released 09-13-23

Bring Your Own Integrations

The goal of this feature is primarily for our own use to more rapidly implement integrations with other RMMs and PSA, but we have opened it up for you to create your own integrations as well.

https://docs.immy.bot/build-your-own-integration.html

New Parameter New-OAuthConsentParameter

This parameter creates a button that will perform the oauth code authorization flow and allow you to use the response in the script.

https://docs.immy.bot/scripts.html#parameters

Agent Tracking

The Computer -> Agents tab now includes all agents, not just ones used to run scripts. This is preparation for the upcoming computer/tenant offboarding feature. Which will allow us to not only uninstall the agents from the machine but de-provision them from their respective platforms.

Metascript WebHooks

You can now receive web requests from within Metascripts.

The webhook URL is {your-domain}.immy.bot/api/v1/webhooks/{web-hook-id}, and it accepts Post and Get requests. The webhook id can be retrieved from $Hook.Id

An example scenario is this can be used to map Toast buttons to actions in ImmyBot.

powershell
$Hook = New-ImmyWebHook
 $Hook.PublicUri | Add-UriQueryParameter @{
     MyParam = "MyVal"
 }
 $Hook.PublicUri.ToString()
 Write-Host "Waiting for Hook"
 $Hook | Wait-ImmyWebHook
-Write-Host "Got WebHook!"

Atomic and Cache Cmdlets

Added 3 new Cmdlets, Set-CacheKeyExpiration , Invoke-CommandCached, and Invoke-AtomicCommand

image

image

image

Other Improvements

  • Error text for deployment parameters now show as markdown
  • Added Completion for Attribute parameters
  • Immy-specific core types no longer tab complete to lowercase
  • Immy-specific Attributes like DropdownAttribute and OAuthConsentAttribute no longer tab-complete to include "Attribute"
  • Remote control can now automatically reconnect after logging off a Windows user or rebooting the computer.
  • Improved performance of loading maintenance sessions with hundreds of actions
  • Added a background service that periodically checks for online computers that have pending connectivity sessions and runs them
  • Get-Hash cmdlet now supports an additional AsHex switch to get a hexadecimal output.
  • Prevented recurring inventory jobs from retrying to connect an ephemeral agent more than once so we can quickly move on to the next computer needing inventory
  • You can now target provider client groups (e.g. CW Manage Agreement Products) with cloud tasks
  • Reduced memory footprint of some session related data
  • Added an Agents tab to the Integration Details Page if the integration supports listing agents.
  • Saving a script in the script editor now shows a loading icon in the tab and disables the buttons to prevent multiple requests
  • You can now link ImmyBot tenants to Azure tenants (including partner tenants) from the Tenant Edit page
  • You can now have multiple MSP tenants
  • ImmyBot tenants can be upgraded to MSP tenants from the Tenant Edit page
  • The software dropdown on the license details page is now limited to software that support licenses
  • Added text to the maintenance ordering page that explains that onboarding actions will always be executed at the beginning of the session in the order that they are listed.
  • Added a log interceptor that can be used for dynamic and built-in integrations to log method calls
  • Implemented ISupportsAgentUninstallToken and Get-IntegrationAgentUninstallToken (for SentinelOne) and removed the need for specifying the clientid

Bug Fixes

  • Fixed issue where Computers running ImmyAgent < 0.51.0 and no other agents failed to establish an Ephemeral connection.
  • Fixed an issue where a session would fail with "Uncaught exception running maintenance session. Computer does not have any enabled agents that support running scripts"
  • Fixed an issue where updating a schedule would bring you back to the computer list page
  • Added some additional logging around the Immy Agent when attempting to establish an ephemeral agent connection
  • Fixed possible errors that could occur after an IoT Hub has been removed
  • Fixed an issue where exporting to Excel from dashboard would fail if there are multiple maintenance items with the same name
  • Fixed a bug where GDAP Customer would incorrectly show up as a warning in certain circumstances, causing confusion consenting as GDAP Azure Customers
  • Fixed an issue where Automate patches were being performed on action reruns
  • Fixed an issue where Automate patches were not being performed during manual onboarding
  • Fixed an issue where there was one non-dismissible notification for a recommended deployment
  • Fixed an issue where the Provider Audit table would cause an IAsyncEnumerableReader error to be thrown.
  • Fixed a potential script deadlock issue when using Invoke-CommandCached
  • Fixed an issue where the ExtraData property from an IProvider was inaccessible.
  • Fixed an issue where some dynamic form bind errors were not showing in the script editor
  • Fixed an issue with persons selected to be notified on onboarding screen not showing up
  • Fixed an issue updating tenant slugs on the tenant list page
  • Fixed an issue where licenses were failing to be updated
  • Fixed an issue where versions listed on the software details page were not sorting by version correctly
  • Fixed an issue with ImmyAgent EXE installers being corrupted during download.
  • Fixed an issue where integrations would sometimes become unhealthy on startup with "The JSON value could not be converted to System.Boolean...\`
  • The "More Actions" link on global software is now hidden for non-immybot-core users since no actions can be taken
  • Fixed an issue on the dashboard table where the company column was not sorting or filtering
  • Fixed an issue where users could update/delete the ImmyAgent integration which could potentially cause issues
  • Fixed an ordering issue on the deployment page where the cross-tenant tag target type was showing a lower priority than integration target types
  • Fixed a wrapping issue with the new integration page
  • Fixed an issue where non-msp users could not see their tenant's filter script deployments
  • Made Get-ImmyAzureAuthHeader cmdlet respect the app registration that the customer was consented with
  • Fixed an issue where computers show licensed even when they haven't had maint in the current usage period

0.57.6

Released 08-10-23

Improvements

  • Implemented new Get-CwControlFields cmdlet

    image

  • Added a new Get-OTP cmdlet, capable of creating TOTP & HOTP codes.

    image

  • The script that downloads and starts the ephemeral agent script now uses an absolute path for PowerShell. %systemroot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe

  • Optimized the code responsible for syncing agents from integrations

Bug Fixes

  • Fixed an issue where array values specified in the script editor parameters pane were not getting passed to the script
  • Fixed an issue where reran actions may have contained incorrect information from another action
  • Fixed an issue where rerunning a session after rerunning an action would cause the new session to only perform the reran action
  • Fixed an issue where ImmyBot would show offline when you did not have access to login

0.57.5

Released 08-08-23

Bug Fixes

  • Fixed a bug introduced in 0.57.4 where the default value for CW Control's Custom Property Client Name and Secondary Index fields had the wrong values
  • Fixed an issue with new instances having a disabled / non-working ImmyBot integration

0.57.4

Released 08-07-23

Improvements

  • Started work on improving performance of computer and tenant deletions. More improvements to come.
  • In the global script editor, scripts with param blocks will now only have the parameters auto-binded when the script has been newly opened instead of when it was focused.
  • Fixed a bug where undefined would sometimes show up as an error in the global script editor output.
  • Eliminated 2-step Verify/Create on Integrations
  • Updated the error message you get when you attempt to create a deployment for software that does not have a version to deploy. "There are no available versions for this software. The software must have a static version, a dynamic version script, or be linked to software from an alternate provider such as Ninite or Chocolatey in order to be installed."
  • Made New-Parameter -Position nullable and not default to 0 to prevent parameter binding error "Cannot bind positional parameters because no names were given."
  • The ephemeral agent exe now has the correct version where before it would always have 0.0.1
  • Moved Remote Control feature to the top of the Preference Page for better visibility
  • Package Analyzer will fallback to use FileVersion if ProductVersion is missing on EXE installers.
  • Package Analyzer will now return relative path to installer nested multiple directories inside of a ZIP archive. For example, a package bundled like (MyInstallerPackage.zip) => [MyInstallerPackage] -> [InnerFolder] -> Setup.exe will return InnerFolder\\Setup.exe as the FileName instead of Setup.exe
  • Package Analyzer will now fallback to a list of known-good DNS servers for downloading binary. This should help alleviate issues for a few customers where Azure's default DNS fails to resolve the address. Errors stemming from downloading issues will additionally contain a DNS Audit trail. Package Analyzer download speed has been improved by up to 50%, reducing time waiting for analysis.

Bug Fixes

  • Fixed a NullReferenceException when no response was received from InvokeCWARestMethod
  • Fixes an issue where the computer was not showing the active session tag for all computers that had one
  • Fixed an issue where Cloud Tasks were failing because pre-flight script were trying to run
  • Remote Control: Fixed an issue where some special characters would cause "Type Clipboard" function to fail.
  • Fixed a bug with Package Analyzer which caused it to fail to analyze some installers where the server inappropriately returned a quoted filename.
  • Fixed an issue with Package Analyzer failing to extrapolate filename (if one wasn't provided) from the download URL if the server didn't return a content-disposition header.

0.57.3

Released 07-14-23

Improvements

  • Optimized the load time of the Computer List page

Bug Fixes

  • Fixed an issue where an ephemeral agent would disconnect after attempting to run a user script without a logged-on user

0.57.2

Released 07-11-23

Bug Fixes

  • Limited Support Technician access to members of the Immense Entra ID with the Immy Support Technician role

0.57.1

Released 06-30-23

Fixed an issue for new instances deployed without an IoTHub being unable to install Immy Agents.

0.57.0

Released 06-29-23

Agent Delivery - Whitelist cdn.immy.bot

Make sure to whitelist cdn.immy.bot in your endpoint protection tools.

The ImmyBot Agent and the Ephemeral Agent are now served from a Cloudflare CDN at https://cdn.immy.bot

ImmyBot Remote Control (Remotely) - BETA

Initial support for remote control is here!

The newest version of the ImmyBot Agent will support the ability to establish remote control sessions.

Remote control can be established by clicking the "Open Remote Session" dropdown and then clicking the "ImmyBot Agent" option.

image

You can also select the initial Windows session within which to start remote control.

Task Deprecation & Supersedence

Old tasks can now be deprecated in favor of newer tasks.

You can deprecate a task by supply a "Superseded By" task on the task form. You can additionally supply a parameter migration script that will migrate the parameters specified by the deprecated deployment to the parameters of the superseding one.

image

Schedule using the computer's timezone and Active Hours

The schedule details page has been cleaned up and re-organized for easier understanding.

We are introducing two new ways to schedule execution against a computer.

  1. Use the computer's timezone for execution

    A common complaint is that it is hard to schedule maintenance for a group of computers that are all in different timezones. Another complaint is that scheduling maintenance against laptops for people who travel is difficult because they are constantly changing timezones.

    You now have the option to schedule maintenance at a particular time according to the timezone specified by the computer.

  2. Start execution after active hours if available

    For computers that are running Windows 10+, you can opt into using the Active Hours specified by the computer instead of executing at the specified time on the schedule.

    For now, if active hours are used, execution will be scheduled in the middle of non-active hours. e.g. If active hours ends at 1pm and starts again at 10pm, we will schedule execution at 5pm.

Active Hours as Business Hours

When active hours are used to schedule maintenance for a computer, checks against business hours will resolve to active hours. This is necessary because we don't want to accidentally reboot the computer when in use, when "Suppress Reboots During Business Hours" is checked on the schedule.

Both "Use computer's timezone for execution", and "Start execution after active hours if available" are available for use on the deployment details page as well.

Pending Ephemeral Agent Session Status

A new session status has been added called Pending Ephemeral Agent Session.

Anytime during a maintenance session, if we fail to establish an ephemeral agent, the session will go into Pending Ephemeral Agent Session. The action it was performing when the failure occurred will not be failed so that it can resume when the ephemeral agent is finally connected. A background service will continually attempt to establish an ephemeral agent on sessions that are marked with this status.

With this change, we were able to remove the Script Execution Circuit Breaker that has not proved to be very useful.

Terminating Exceptions

System scripts will now throw terminating exceptions if we fail to establish an ephemeral agent or an actual terminating exception was thrown in the script.

Metascripts will also now throw terminating exceptions when an ephemeral agent fails to establish when using Invoke-ImmyCommand. You must now explicitly use a try/catch in order to prevent the terminating exception from ending the script.

This behavior will prevent software and tasks from continuing script execution in the event of a terminating exception, which will prevent false-positive results and report better errors.

User Script Terminating Exceptions

When running Invoke-ImmyCommand -Context "User", an additional parameter will be available called TerminateFromNoLoggedOnUser. When set, the script with throw a terminating exception when there is no logged on user. By default, user scripts will not throw a terminating exception when there is no logged on user.

Made pending-connectivity session triggering more robust

  • Removed some event handling from pending connectivity service since the session finished event is not emitted in all circumstances
  • Reduced different entrypoints to starting a session to improve consistency and reliability
  • Added logic to check for and start the first pending connectivity session in the queue when any session finishes (both pass and fail) directly from the Immy Service Job

Session Preflight Scripts

A new script category has been added called "Preflight". Preflight scripts run after an ephemeral agent is established and before we attempt to run any other script against a computer. If the preflight scripts do not return any exceptions, then preflight is consider "passed" and scripts can be executed as normal. Otherwise, if any preflight script fails, script execution will not be allowed against a computer.

The major reason we added preflight scripts was to detect whether a computer is currently applying windows updates. Agents can report online and connected while windows updates are applying. However, it's possible that certain actions will not perform successfully while the computer is applying those updates. If we attempt to start or resume a session while windows updates are applying, we run the risk of rebooting the computer during an update and potentially bricking it.

The first global preflight script that has been added will check if the computer is currently applying windows updates and will throw an exception if it is, preventing script execution on the computer until windows updates are completed.

Pending Preflight Session Status

A new session status has been added called "Pending Preflight". When a preflight script fails during a session, the session will go into "Pending Preflight". The action that was actively being performed when the preflight script failed will not failed so that it can be resumed when the computer passes preflight. A background service will continually attempt to run preflight against a computer until it passes. Once preflight passes, the session will continue.

Built-In ImmyBot Agent Software

Before 0.57.0, we had hardcoded an action to perform the ImmyBot Agent update, which resulted in a lot of failures.

The built-in agent update now utilizes the ImmyBot Agent software located in the global repository.

Before

image

After

image

Prepared removal of Azure IotHub for the ImmyBot Agent

The 0.57.0 ImmyBot agent introduces a new method of establishing a connection to the backend using WebSockets.

With this approach, we will be able to remove dependency upon the Azure IoT Hub and provide a more reliable connection to devices.

Other Improvements

  • Added license icons on computers to indicate which ones are actively being counted towards the license count for the month.
  • For instances on Immy Standard, we added a checkbox on the computer list page that allows you to filter to only computers that are licensed
  • Added fallback for tls when using Download-FileToFolder
  • The .dlls extracted from the ImmyBot Agent and Ephemeral Agent executable are now signed, which should make whitelisting by our certificate in A/V tools easier.
  • Improved the readability of the billing page
  • Renamed Get-Hash to Get-KeyedHash as it only supported keyed hashes like HMACMD5, HMACSHA1, HMACSHA256, HMACSHA384, and HMACSHA512
  • Implemented Get-Hash for non-Keyed algorithms like MD5, SHA1, SHA256, SHA384, and SHA512
  • The "Update agent on device" button under the Agents Tab -> ImmyBot agent is clickable even when the computer is offline. It will put the session in pending connectivity and update when the computer comes back online.
  • For ImmyBot Agents version 0.57.0 and above, the version is now displayed on the Agents tab.
  • C:\\Program Files (x86)\\ImmyBot\\Immybot.Agent.exe now contains the correct file version
  • ImmyBot Remote Control and Require Consent For External Session Provider tenant preferences now have a tri-state value. They can be enabled, disabled, or use the application default value.
  • Actions can now be sorted by the date/time execution started
  • ImmyAgent binaries now show correct version
  • Added a tenant preference to enable/disable the User Affinity Sync

Bug Fixes

  • Fixed an issue where commands and output from the computer terminal and the script editor were showing up in both
  • Fixed an issue where creating a new filter script or metascript from the deployment page was selecting the wrong execution context
  • Fixed another issue that was causing the azure user sync to sometimes fail
  • Fixed an issue with schedules not being able to update when they are using a deleted filter script
  • Fixed an issue where failing to refresh an agent's online status could cause detection to fail
  • Fixed a potential bug that could occur when script-output recovery would happen, that would cause a false Recovery is not possible error to be thrown.
  • Fixed issue where running a User-context script w/o a logged on user would cause throw $args[0]; # If you can see this, report it to the ImmyBot Dev Team. to be displayed in powershell output.
  • Fixed an issue with Update If Found deployments for software with a test script incorrectly running the test script even when the software was not found
  • Fixed some theme color issues with table column choosers and filters
  • Cleaned up action error messages when a test or get script failed.
  • Fixed an issue where the session would not go to pending connectivity when the AgentsOfflineException would be thrown but a provider agent is incorrectly reporting online still.
  • Fixed an exception that was occurring when duplicating some global maintenance tasks
  • Fixed an issue preventing the azure sync from running
  • Fixed an issue with PowerShell returning System.Type arrays causing out of memeory exceptions
  • Fixed instance of inventory json parsing exceptions causing sessions to fail hard
  • Fixed an issue with publishing the agent as a single file

0.56.5

Released 2023-05-11

Improvements

  • Made it more obvious when actions are skipped because reboots are suppressed and the action's software requires a reboot
  • Removed the hardcoded "Uninstall by Package Info" logic from software uninstall steps since it could cause unexpected reboots
  • Updated the description of the tenant Onboarding Patching preference to indicate that it currently only applies to CW Automate
  • Added PowerShell Version to computer overview tab

Bug Fixes

  • Added missing logs around reboot checks
  • Fixed a XSS vulnerability found in param block descriptions
  • Fixed an issue where GDAP customers that need consent would show up as consented when they had previously been synced as a non-GDAP customer
  • Fixed an issue with quick deploy where it would sometimes not kick off the session
  • Fixed an issue where dynamic form errors were not clearing upon refresh
  • Fixed issue where the url in a cloud session's support request was incorrect

0.56.4

Released 2023-05-08

Bug Fixes

  • Fixed an issue where duplicating a task would not copy over all data
  • Fixed an issue that sometimes prevented the onboarding task forms from loading
  • Fixed an issue where scripts with the category "Filter Script Deployment Target" and "Metascript Deployment Target" were not automatically selecting the correct execution context
  • Fixed an issue where some actions would have incorrect parameters or variables when multiple sessions executed the script at the same time

0.56.3

Released 2023-05-04

Improvements

  • Added a note to the ImmyBot Agent installer modal indicating that there's an issue on Windows 11 22h2 builds that prevent the PPKG from working and added notes on how to resolve it.

Bug Fixes

  • Added missed user auditing to certain software, task, and deployment operations
  • Fixed an issue with assigning tags while creating a new tenant
  • Fixed an issue where schedules targeting a specific maintenance item were picking up onboarding only deployments
  • Fixed an issue where some macOS agents were not being excluded
  • Fixed an issue where navigating to a computer that did not exist threw a non-404 unexpected error
  • Fixed an issue with schedules targeting CW Control groups not being limited to the specified tenant on the schedule
  • Fixed an issue with sessions failing when attempting to retrieve bulk software and the bulk software response contains text that is not representable as valid UTF-8

0.56.2

Released 2023-04-27

Improvements

  • Updated the alert on the schedule details page when targeting a specific item to state, "Metascript deployment targets are not supported when the schedule is limited to a specific maintenance item because it would require executing a script against every computer in the system."
  • Azure User Sync now excludes external users
  • Renamed the "All" tab to "Active" on the computer list page to avoid confusion. "All" implies it should contain "Pending" agents, which it does not.

Bug Fixes

  • Fixed an issue where new instances would not be able to use immy agent provider
  • Fixed an issue where some business hours were not being computed correctly and the session incorrectly reported that we were within business hours
  • Fixed an issue with the computer terminal not maintaining execution when toggling between tabs
  • Fixed bug where exceptions that occur while resolving Cw Control remote screen share URLs caused the maintenance session page to not load any data
  • Software Post Uninstall phase is now only shown when the software or version has a post uninstall script

0.56.1

Released 2023-04-24

Improvements

  • When an agent is identified to a computer that already exists in ImmyBot, we will now automatically select the "Wiped" option if the computer name and OS install date reported by the agent are different than what is reported by the existing computer.
  • The ephemeral agent no longer extracts to c:/windows/temp. This alleviates issues around A/V blocking .dlls coming from the temp directory, and also alleviates issues around windows randomly removing required .dlls for the ephemeral agent to run.
  • Updated the identification log text that explains why a manual decision is required
  • Added the manufacturer name and serial number of an agent in the agent identification logs when resolving a trusted manufacturer
  • Added ability to group by target on the deployment list

Bug Fixes

  • Fixed issue with tenant tags not resolving deployments
  • Fixed issue where cancelling sessions would sometimes cause session to retry some number of times
  • Fixed an issue causing new instances immy agent integration to not be properly initialized
  • Fixed a bug where alternate providers were not getting disabled when dynamic versions are selected
  • Fixed an internal issue where Immy Support Technicians were not allowed access due to existing expired access requests
  • Fixed an issue where a pending agent that has the same trusted manufacturer and serial number as an existing computer would sometimes require a manual decision instead of automatically replacing the existing agent

0.56.0

Released 2023-04-17

Tenant and Person tags

Support has been added for Person and Tenant tags.

A tag no longer has a "type". A tag can be assigned to any person, computer, or tenant.

Deploying a software or maintenance task with a tag target type now resolves computers for the following:

  1. computers that have the tag
  2. computers for tenants that have the tag
  3. primary computers for people who have the tag

Deploying a cloud task can now target tags assigned to tenants, as well as integrations that support client groups.

Now that tags can target tenants, you can create a schedule that targets tags to run a single schedule across multiple tenants.

Tags for tenants can be assigned on the tenant list and tenant details pages.

Tags for persons can be assigned on the person list and person details pages.

ImmyBot Session Support Requests

You can now request support from Immy technicians from maintenance sessions. When requesting support, you can:

  • Add details about the issue you are experiencing
  • Select whether an Immy technician should be allowed to access your instance
    • If selected, there is no need to approve an access request for the Immy tech to log into your instance
    • You can disable Immy technician access at any time from the Application Preferences page
  • Select whether the session's logs and computer timeline events should be available in the support ticket
    • The logs / timeline events are formatted as a text file and stored in your instance's blob storage account, and a link to download this file is added to the support ticket
    • You can also download this file before submitting the ticket

Global Script Editor

Below are some of the new features in the script editor!

  • General VS Code "vibe"
  • Open/Close multiple scripts(tabs)
  • Go To Definition support for function scripts
  • Script Search and Directory Views with result highlighting
  • Variable preview based on script execution context, category, and a selected target (computer, tenant, task, software).
  • Parameter Form for scripts with param blocks, selected software that have configuration tasks, and selected maintenance tasks that have parameters
  • Closing a script tab with unsaved changes alerts you
  • Function name/definition view that shows the results of Get-Help {functionName} -Detailed | Out-String
  • Basic hotkey support

image

image

image

image

You can access the script editor from the top navbar or in the sidebar under Library -> Script Editor

image

image

Parameter Value View

Sometimes deployment parameters result in an exception when performing the binding. This can happens when the parameter types have been updated but the values have not.

You can now toggle the parameter form to a value view that provides you the ability to remove/reset values that may be causing issues.

image

Tenant Software

The Tenant Details Page now has a Software tab that displays a grid of software that was detected on endpoint machines and could be matched to software in the global database. The result set is grouped by global software name/ID and sorted descending by total installs (i.e. number of devices that have it installed). Each group has a Deploy button, which will open a new deployment for the software that targets all computers under that tenant.

image

Other Improvements

  • On the Deployment List Page, tenants with missing or deleted tenants will show Tenant no-longer exists under tenant column and the entire row will be highlighted red.
  • The current ImmyBot agent version is now shown on the frontend in the installer modal and in the sidebar's ImmyBot Agent Download box.
  • Added the ImmyBot version in a session log at the start of a session. This will be useful when debugging session-related issues since we can correlate the problems to the version ImmyBot was on when the session ran.
  • You can now install the ImmyBot Script Editor as a progressive web app.
  • Cleaned up some of the error messages returned by integrations
  • Fixed issues with tag deployments not getting applied during an onboarding session
  • System scripts that use param blocks will now through an error letting users known that param blocks are only available in metascript and cloudscript contexts.
  • Maintenance tasks can now specify function scripts
  • Added a session log when attempting to apply a windows patch since there are currently none
  • Added a check for whether the computer is online before attempting to apply windows patches
  • Get-Hash now supports HMACMD5, HMACSHA256, HMACSHA384, and HMACSHA512
  • Added back session list "Completed" count and filter and removed "All"
  • Added internal auditing tables for scripts, software, tasks, and deployments. The future plan is to expose an audit trail for these objects so you can see who made changes and when they were made, with the ability to revert changes.
  • Moved the tenant tag selector to the edit tab. The tags now show inline next to the tenant's name
  • Made session log database handler more efficient by breaking large updates into smaller queries
  • Reduced likelihood of CW Control Integration failing to sync devices.
  • The deployment page no longer hangs when attempting to preview/deploy to a large number of computers
  • Improved Package Analyzer to handle improper/malformed content-disposition header returned from some file servers, which resulted in a failure to analyze a package.
  • Expired users can now be un-expired from the edit user form
  • Wait-ImmyComputer (and therefor Restart-ComputerAndWait) has been improved with a new RebootWithPollingFallback option that should help alleviate issues with ImmyBot not detecting when a machine has been rebooted and now back online. This option will periodically poll providers/integrations about machine connectivity status if they haven't reported target machine as online after an expected WaitForEventTimeout period.
  • You can now define multiple functions in a Module script and import them into other scripts using Import-Module
  • Maintenance task get/test can now create child actions during detection using the new cmdlet Add-ImmyMaintenanceActionChild

Bug Fixes

  • Fixed an exception in the Sync Azure Users Job that was preventing some person entities from being deleted
  • Fixed a bug where integrations would all become unhealthy until ImmyBot restarts when one provider failed to initialize in a timely fashion
  • Fixed an issue where a specific unrecoverable ephemeral agent exception was being suppressed
  • Fixed an issue with postpone button from scheduled maintenance emails not actually postponing the session in some circumstances
  • Fixed unnecessary logging of an exception when an Ephemeral Agent Session was disposed correctly
  • Fixed an internal exception with ephemeral agent sessions where we were failing to dispose of the connection timeout callback
  • Fixed issue with instances that have large session logs tables having poor database performance and dropping session logs
  • Fixed issue with logs displayed on maintenance sessions occasionally showing up unsorted-by-timestamp
  • Fixed an issue that was allowing a device to sleep when the ephemeral is connected
  • Potentially fixed an issue where sessions would get stuck in the running status after the backend restarted
  • Fixed an issue where tasks marked to be ignored would show as compliant instead of ignored on the maintenance session's action list
  • Resolve potential bug with ImmyAgent causing IoTHub issues
  • Fixed browser warnings about using variable names starting with $ or _ in setup()
  • Restart-ComputerAndWait now will show agent timeline events in correct order
  • Fixed issue with gdap customers not showing up when azure permission level is reset from custom to default and custom didn't have correct permissions
  • Fixed an issue with media missing the base url
  • Fixed an issue where software deployments don't report download failures correctly and will continue on.
  • Fixed an issue where quick deploying software would not also deploy the configuration task if it had one
  • Fixed $using variables on single line scripts
  • Fixed an issue where the cross tenant deployment grooup was not sorted at the top of the deployment list page
  • Delete existing UserAffinities when new user is set to prevent reverting to old user

0.55.13

Released 2023-04-03

Bug Fixes

  • Fixed a regression in 0.55.12 where some business hours checks would report within business hours but the computer would still be rebooted

0.55.12

Released 2023-03-31

Improvements

  • Added timespan parameter -AgentConnectionWaitTimeout to Invoke-ImmyCommand so you can override the default 5 minute wait time.

Bug Fixes

  • Fixed an issue where some session logs were failing to save due to issues sanitizing a script's param block
  • Fixed an issue where deployments targeting an Azure Group were not applying when the computer's primary user was set during the onboarding stage
  • Fixed an issue where executing quick deployments against computers needing onboarding would incorrectly trigger the onboarding stage
  • Fixed an issue with the onboarding form's assignment links not bringing users to the specified assignment
  • Fixed an issue where reboots were occurring during business hours than spanned over to the following day. e.g 9am - 4am
  • Fixed an issue where the Primary User task was running after Set Computer Name and Domain Join. This was causing computers to not get the correct name when the computer is named after the primary user.
  • Fixed a long-standing issue where Immy PPKGs wouldn't reliably disable sleep/hibernation when the option was checked on some computers. This has been improved.

0.55.11

Released 2023-03-22

Bug Fixes

  • Fixed issues with the websocket connection randomly disconnecting when adhoc deploying to a large number of computers
  • Fixed an issue with PowerShell Editor Services continually starting and stopping

0.55.10

Released 2023-03-21

Bug Fixes

  • Fixed an issue where adhoc deployed sessions would go over the session limit and cause performance issues
  • Fixed an issue in the ImmyBot Agent that would cause devices to rapidly send connected messages to the IoTHub, depleting the quota and preventing new devices from registering

0.55.9

Released 2023-03-16

Improvements

  • Using the [Person()] attribute on param block parameters now takes into account the selected tenant on the deployment form and only shows people belonging to the selected tenant.
  • The computer list page now supports the following query parameters: filter and includeDisconnected. This can be used to filter the computer list e.g demo.immy.bot/computers?filter=desktop-R2D2&includeDisconnected=true

Bug Fixes

  • Fixed an issue with hashtable parameter values not working when provided from the deployment
  • Fixed an issue with the CW Control device sync

0.55.8

Released 2023-03-15

Improvements

  • Improved performance of syncing devices from all integrations. Automate in particular was failing to sync device updates (online/offline statuses).

Bug Fixes

  • Fixed a WebSocket exception where we were attempting to close the WebSocket after it was already closed

0.55.7

Released 2023-03-14

Improvements

  • Parameters for "Not Present" deployments now show up on the deployment edit page.
  • Removed 100 and 1000 page sizes from all tables for performance reasons

Bug Fixes

  • Fixed an issue in the azure sync users job that was causing it to fail
  • Fixed more issues with the ephemeral agent getting locked up
  • Fixed an issue where agent disconnect events would show duplicated in the timeline events table
  • Fixed an issue where computers would be moved to needs-onboarding after a new agent connects for an existing online computer
  • Fixed issue where newly-installed immy agents would not result in new computers in ImmyBot under some circumstances

0.55.6

Released 2023-03-08

Improvements

  • Improved performance of searching the main computer list
  • Added a button near maintenance task parameters to copy the parameters as a script param block string. Useful in converting a task to use a script param block

Bug Fixes

  • Fixed an issue where identification logs would sometimes not be sorted by date.
  • Fixed an issue where we were not considering case-insensitive serial numbers for trusted manufacturers
  • Made non-admins able to delete their tenant's computers
  • Made non-admins able to add and remove tags from their tenant's computers
  • Fixed an exception that was occurring where the azure sync was trying to delete people who existed as an Immy user.
  • Fix issue with PowerShell formatting of System.Version

0.55.5

Released 2023-02-28

Improvements

  • Improved performance of session counts on session list page

Bug Fixes

  • Fixed an exception that was occurring frequently when the ephemeral agent established a websocket connection
  • Fixed an internal error that occurred when we add function scripts to the PowerShell InitialSessionState

0.55.4

Released 2023-02-24

Improvements

  • A new application preference has been added: "Allow Non-Admins and Non-MSP Users to Use Terminal and Edit Scripts"
    • Default: disabled (by default, only MSP Admins will be able to use terminals or edit scripts)
  • Added ephemeral agent details under the Computer Details Page -> Agents tab with the ability to kill the active ephemeral agent

Bug Fixes

  • The ImmyStarter plan no longer allows maintenance to be run against computers that were added into Immy over 7 days ago.
  • Added "Tags" to the default display set returned from Get-ImmyComputer

0.55.3

Released 2023-02-21

Improvements

  • Syncing azure users now deletes people in Immy that no longer exist in Azure (if the person in Immy has the Azure Object Id set).
  • You can now upload .msp, .appx, .appxbundle, .msix, and .msixbundle installer files!

Bug Fixes

  • Fixed an issue related to N-Central providers executing scripts on machines

0.55.2

Released 2023-02-14

Improvements

  • Increased the font-weight of heading text in the light theme for better contrast
  • Fixed an issue where some global software and tasks were incorrectly failing due to permission issues.
  • Updated dynamic version scripts to show logs even when it is already cached
  • Removed maintenance task parameter description from onboarding form unless the parameter is being specified
  • Made onboarding task/assignment title bar visible when scrolling down on dynamic parameter panels
  • Added ability to manually refresh dynamic parameters on onboarding form

Bug Fixes

  • Fixed an issue with loading deployments that targeted people where the deployment wouldn't allow saving
  • Fixed an issue where rerunning a session that contained reran actions would fail unexpectedly
  • Fixed an issue with binding malformed uri parameters

0.55.1

Released 2023-02-09

Improvements

  • Added batch action to maintenance session list to cancel all incomplete sessions.
    • image
  • Improved the performance of the integration client's table. Instances with thousands of clients and tenants should now be able to use this page without running into performance issues.
  • Updated the ImmyBot backend from .net 6 to .net 7

Bug Fixes

  • Fixed an issue that prevented the maintenance email's reboot now button from rebooting the computer
  • Fixed an issue where some assignments using tags would not be resolved to a computer due to using data from a stale cache
  • Fixed an issue CW Control integration where it was not forcing https:// on the url

0.55.0

Released 2023-02-07

Stale Computers

A new "Stale" tab has been added to the Computers List page showing devices that have not had a recent agent connection event. By default, the staleness threshold is 30 days. This value can be configured from the System Preferences page.

image

This feature can be used to cleanup old computers when you are coming close to the maximum limit for computers.

Dynamic Maintenance Task Parameters (PowerShell Param Blocks)

Maintenance task parameters can now be defined dynamically using a script's param() and dynamicparam{} block.

image

PowerShell has a robust parameter definition and validation engine. By leveraging it, we give ourselves features like:

  • Parameter Sets
  • Regex Validation
  • Conditional/Dynamic Parameters
  • Dynamic Values
  • Type enforcement

When deploying Onboarding tasks, you can define which parameters should be visible to the technician, while hiding others or setting their defaults in the Deployment. image

GDAP Support

"GDAP Customer Syncing" option has been added to the Azure settings page. Enabling this option does the following:

  • Adds the DelegatedAdminRelationship.Read.All permission to ImmyBot's default app registration, to allow retrieval of your GDAP customers
  • Enables ImmyBot to offer a consent link for each GDAP customer to be synced by ImmyBot

Please see the GDAP Customer Syncing documentation for usage details.

Important! If you are using a custom app registration (also known as the CSP App Registration), your app registration must have a Web redirect URI of https://<your-domain>.immy.bot/consent-callback, replacing <your-domain> appropriately. Please see the updated custom app registration docs for details on how to add the redirect URI

Other Improvements

  • Onboarding only maintenance tasks now have an option to "Ignore during automatic onboarding". This is useful if you have an installer set to automatically onboard the computer and the task requires data that wasn't able to be provided.
  • Improved code around establishing Ephemeral Agent connection & eliminated possible race condition.
  • Prepend an "[ImmyBot User]" tag for the username that displays for remote session started from a supported provider. This makes it clear at a glance who is connected to a machine initiated from an ImmyBot user.
  • Removed the need for executing suspicious-looking encoded powershell for N-Central integration which would trigger some AV alerts while also moderately decreasing latency to start ephemeral agent.
  • When the Immy Agent fails to update during a maintenance session, it will now retry up to 3 times in case it failed due to a transient error
  • You can now assign tags to a computer from its Onboarding form
    • image
  • When we run a script and to establish an ephemeral agent and detect that there are no online agents, we only wait 5 minutes instead of 30 minutes. For integrations like Automate and N-Central and don't support connectivity changed events, a machine would potentially restart so fast the RMM was unaware, therefore we would wait 30 minutes before realizing the machine was actually online.
  • Removed execute and verify progress bars when action is a task monitor, and changed the "detect" progress text to "monitor".
  • Added the ability to change a computer's primary user from the overview page.
  • Improved performance of computer list page when sorting by Date Created
  • Added -IncludeTags switch parameter to Get-ImmyComputer that includes an array of tags containing the tag id and the tag name
  • Added a date input to the dashboard page to optionally return actions that were executed on or after the specified date
  • Added basic health check functionality to all integrations that were missing health checks
  • Added a test suite for the NCentral integration to run in our build pipeline to help reduce bugs
  • Made the main scripts table use server-side pagination to decrease the amount of data initially transferred to the page. Global scripts are now showing over 3MB combined.
  • Added better error messages when we fail to sync users due to permissions issues
  • Improved and simplified some internal logic related to permissions in our Metascript cmdlets

Bug Fixes

  • Fixed an issue with tag acccess levels not saving the limited tenants selected
  • Fixed an issue with metacript exception handling where any error with the category OperationStopped was being treated as terminating exception
  • Fixed an issue with Uri parameter values being inserted into scripts with type string instead of type Uri
  • Fixed an issue where the software upload analysis result description had the wrong color making it impossible to read
  • Fixed issue on the computer list -> pending tab where massive exceptions were not limited to a reasonable height
  • Fixed issues with SQL queries timing out early than intended Fixed a bug that would prevent users from actually using the N-Central integration with servers that are hosted on a non-standard port.
  • Fixed an issue where the tenant link on a computer's overview page had a bunch of whitespace that could be accidentally clicked.

0.54.8

Released 2023-01-17

Bug Fixes

  • Fixed a potential deadlock that could cause the ephemeral agent to never connect. Potentially isolated to just devices using CW Automate
  • Fixed a potential deadlock in the N-Central integration that could cause Immy to hang up
  • Fixed some frontend issues where a maintenance action's status and reason would not show correctly for certain values
  • Fixed an issue where a terminating exception in a custom download script would get swallowed and allow the install to continue anyway

Releases in 2022

Go to 2022 releases

`,319),P=[r,l,d,h,c,u,p,m,g,w,b,f,y,k,x,v,q,F,A];function I(E,C,S,B,T,_){return s(),n("div",null,P)}const M=a(o,[["render",I]]);export{R as __pageData,M as default}; +Write-Host "Got WebHook!"

Atomic and Cache Cmdlets

Added 3 new Cmdlets, Set-CacheKeyExpiration , Invoke-CommandCached, and Invoke-AtomicCommand

image

image

image

Other Improvements

Bug Fixes

0.57.6

Released 08-10-23

Improvements

Bug Fixes

0.57.5

Released 08-08-23

Bug Fixes

0.57.4

Released 08-07-23

Improvements

Bug Fixes

0.57.3

Released 07-14-23

Improvements

Bug Fixes

0.57.2

Released 07-11-23

Bug Fixes

0.57.1

Released 06-30-23

Fixed an issue for new instances deployed without an IoTHub being unable to install Immy Agents.

0.57.0

Released 06-29-23

Agent Delivery - Whitelist cdn.immy.bot

Make sure to whitelist cdn.immy.bot in your endpoint protection tools.

The ImmyBot Agent and the Ephemeral Agent are now served from a Cloudflare CDN at https://cdn.immy.bot

ImmyBot Remote Control (Remotely) - BETA

Initial support for remote control is here!

The newest version of the ImmyBot Agent will support the ability to establish remote control sessions.

Remote control can be established by clicking the "Open Remote Session" dropdown and then clicking the "ImmyBot Agent" option.

image

You can also select the initial Windows session within which to start remote control.

Task Deprecation & Supersedence

Old tasks can now be deprecated in favor of newer tasks.

You can deprecate a task by supply a "Superseded By" task on the task form. You can additionally supply a parameter migration script that will migrate the parameters specified by the deprecated deployment to the parameters of the superseding one.

image

Schedule using the computer's timezone and Active Hours

The schedule details page has been cleaned up and re-organized for easier understanding.

We are introducing two new ways to schedule execution against a computer.

  1. Use the computer's timezone for execution

    A common complaint is that it is hard to schedule maintenance for a group of computers that are all in different timezones. Another complaint is that scheduling maintenance against laptops for people who travel is difficult because they are constantly changing timezones.

    You now have the option to schedule maintenance at a particular time according to the timezone specified by the computer.

  2. Start execution after active hours if available

    For computers that are running Windows 10+, you can opt into using the Active Hours specified by the computer instead of executing at the specified time on the schedule.

    For now, if active hours are used, execution will be scheduled in the middle of non-active hours. e.g. If active hours ends at 1pm and starts again at 10pm, we will schedule execution at 5pm.

Active Hours as Business Hours

When active hours are used to schedule maintenance for a computer, checks against business hours will resolve to active hours. This is necessary because we don't want to accidentally reboot the computer when in use, when "Suppress Reboots During Business Hours" is checked on the schedule.

Both "Use computer's timezone for execution", and "Start execution after active hours if available" are available for use on the deployment details page as well.

Pending Ephemeral Agent Session Status

A new session status has been added called Pending Ephemeral Agent Session.

Anytime during a maintenance session, if we fail to establish an ephemeral agent, the session will go into Pending Ephemeral Agent Session. The action it was performing when the failure occurred will not be failed so that it can resume when the ephemeral agent is finally connected. A background service will continually attempt to establish an ephemeral agent on sessions that are marked with this status.

With this change, we were able to remove the Script Execution Circuit Breaker that has not proved to be very useful.

Terminating Exceptions

System scripts will now throw terminating exceptions if we fail to establish an ephemeral agent or an actual terminating exception was thrown in the script.

Metascripts will also now throw terminating exceptions when an ephemeral agent fails to establish when using Invoke-ImmyCommand. You must now explicitly use a try/catch in order to prevent the terminating exception from ending the script.

This behavior will prevent software and tasks from continuing script execution in the event of a terminating exception, which will prevent false-positive results and report better errors.

User Script Terminating Exceptions

When running Invoke-ImmyCommand -Context "User", an additional parameter will be available called TerminateFromNoLoggedOnUser. When set, the script with throw a terminating exception when there is no logged on user. By default, user scripts will not throw a terminating exception when there is no logged on user.

Made pending-connectivity session triggering more robust

Session Preflight Scripts

A new script category has been added called "Preflight". Preflight scripts run after an ephemeral agent is established and before we attempt to run any other script against a computer. If the preflight scripts do not return any exceptions, then preflight is consider "passed" and scripts can be executed as normal. Otherwise, if any preflight script fails, script execution will not be allowed against a computer.

The major reason we added preflight scripts was to detect whether a computer is currently applying windows updates. Agents can report online and connected while windows updates are applying. However, it's possible that certain actions will not perform successfully while the computer is applying those updates. If we attempt to start or resume a session while windows updates are applying, we run the risk of rebooting the computer during an update and potentially bricking it.

The first global preflight script that has been added will check if the computer is currently applying windows updates and will throw an exception if it is, preventing script execution on the computer until windows updates are completed.

Pending Preflight Session Status

A new session status has been added called "Pending Preflight". When a preflight script fails during a session, the session will go into "Pending Preflight". The action that was actively being performed when the preflight script failed will not failed so that it can be resumed when the computer passes preflight. A background service will continually attempt to run preflight against a computer until it passes. Once preflight passes, the session will continue.

Built-In ImmyBot Agent Software

Before 0.57.0, we had hardcoded an action to perform the ImmyBot Agent update, which resulted in a lot of failures.

The built-in agent update now utilizes the ImmyBot Agent software located in the global repository.

Before

image

After

image

Prepared removal of Azure IotHub for the ImmyBot Agent

The 0.57.0 ImmyBot agent introduces a new method of establishing a connection to the backend using WebSockets.

With this approach, we will be able to remove dependency upon the Azure IoT Hub and provide a more reliable connection to devices.

Other Improvements

Bug Fixes

0.56.5

Released 2023-05-11

Improvements

Bug Fixes

0.56.4

Released 2023-05-08

Bug Fixes

0.56.3

Released 2023-05-04

Improvements

Bug Fixes

0.56.2

Released 2023-04-27

Improvements

Bug Fixes

0.56.1

Released 2023-04-24

Improvements

Bug Fixes

0.56.0

Released 2023-04-17

Tenant and Person tags

Support has been added for Person and Tenant tags.

A tag no longer has a "type". A tag can be assigned to any person, computer, or tenant.

Deploying a software or maintenance task with a tag target type now resolves computers for the following:

  1. computers that have the tag
  2. computers for tenants that have the tag
  3. primary computers for people who have the tag

Deploying a cloud task can now target tags assigned to tenants, as well as integrations that support client groups.

Now that tags can target tenants, you can create a schedule that targets tags to run a single schedule across multiple tenants.

Tags for tenants can be assigned on the tenant list and tenant details pages.

Tags for persons can be assigned on the person list and person details pages.

ImmyBot Session Support Requests

You can now request support from Immy technicians from maintenance sessions. When requesting support, you can:

Global Script Editor

Below are some of the new features in the script editor!

image

image

image

image

You can access the script editor from the top navbar or in the sidebar under Library -> Script Editor

image

image

Parameter Value View

Sometimes deployment parameters result in an exception when performing the binding. This can happens when the parameter types have been updated but the values have not.

You can now toggle the parameter form to a value view that provides you the ability to remove/reset values that may be causing issues.

image

Tenant Software

The Tenant Details Page now has a Software tab that displays a grid of software that was detected on endpoint machines and could be matched to software in the global database. The result set is grouped by global software name/ID and sorted descending by total installs (i.e. number of devices that have it installed). Each group has a Deploy button, which will open a new deployment for the software that targets all computers under that tenant.

image

Other Improvements

Bug Fixes

0.55.13

Released 2023-04-03

Bug Fixes

0.55.12

Released 2023-03-31

Improvements

Bug Fixes

0.55.11

Released 2023-03-22

Bug Fixes

0.55.10

Released 2023-03-21

Bug Fixes

0.55.9

Released 2023-03-16

Improvements

Bug Fixes

0.55.8

Released 2023-03-15

Improvements

Bug Fixes

0.55.7

Released 2023-03-14

Improvements

Bug Fixes

0.55.6

Released 2023-03-08

Improvements

Bug Fixes

0.55.5

Released 2023-02-28

Improvements

Bug Fixes

0.55.4

Released 2023-02-24

Improvements

Bug Fixes

0.55.3

Released 2023-02-21

Improvements

Bug Fixes

0.55.2

Released 2023-02-14

Improvements

Bug Fixes

0.55.1

Released 2023-02-09

Improvements

Bug Fixes

0.55.0

Released 2023-02-07

Stale Computers

A new "Stale" tab has been added to the Computers List page showing devices that have not had a recent agent connection event. By default, the staleness threshold is 30 days. This value can be configured from the System Preferences page.

image

This feature can be used to cleanup old computers when you are coming close to the maximum limit for computers.

Dynamic Maintenance Task Parameters (PowerShell Param Blocks)

Maintenance task parameters can now be defined dynamically using a script's param() and dynamicparam{} block.

image

PowerShell has a robust parameter definition and validation engine. By leveraging it, we give ourselves features like:

When deploying Onboarding tasks, you can define which parameters should be visible to the technician, while hiding others or setting their defaults in the Deployment. image

GDAP Support

"GDAP Customer Syncing" option has been added to the Azure settings page. Enabling this option does the following:

Please see the GDAP Customer Syncing documentation for usage details.

Important! If you are using a custom app registration (also known as the CSP App Registration), your app registration must have a Web redirect URI of https://<your-domain>.immy.bot/consent-callback, replacing <your-domain> appropriately. Please see the updated custom app registration docs for details on how to add the redirect URI

Other Improvements

Bug Fixes

0.54.8

Released 2023-01-17

Bug Fixes

Releases in 2022

Go to 2022 releases

`,319),P=[r,l,d,h,c,u,p,m,g,w,b,f,y,k,x,v,q,F,A];function I(E,C,S,B,T,_){return s(),n("div",null,P)}const M=a(o,[["render",I]]);export{R as __pageData,M as default}; diff --git a/assets/releases.md.bgt_DXtz.lean.js b/assets/releases.md._Xh-opGd.lean.js similarity index 98% rename from assets/releases.md.bgt_DXtz.lean.js rename to assets/releases.md._Xh-opGd.lean.js index 9f901f3e..12688770 100644 --- a/assets/releases.md.bgt_DXtz.lean.js +++ b/assets/releases.md._Xh-opGd.lean.js @@ -1 +1 @@ -import{_ as a,c as n,o as s,U as i,m as e,a as t}from"./chunks/framework.Q7Se86sZ.js";const R=JSON.parse('{"title":"Releases","description":"","frontmatter":{},"headers":[],"relativePath":"releases.md","filePath":"releases.md"}'),o={name:"releases.md"},r=i("",95),l=e("ul",null,[e("li",null,"Fixed an issue where the user affinity job was assigning a primary person to a computer, even when the person was from a different tenant than the computer"),e("li",null,"Fixed an issue where an action's duration would continue to increment when a session was completed while the action was still running"),e("li",null,"Fixed an issue where the spinner icon in the Deployment Detection button was broken"),e("li",null,'Fixed an issue where loading a computer detail page would sometimes throw "InvalidOperationException: Sequence contains no elements"'),e("li",null,"Fixed an issue where schedules targeting CW Control secondary groups become could become borked when a CW Control company was renamed"),e("li",null,`Fixed an edge case issue where a scheduled job that's in "Pending Connectivity" status could run concurrently with a newly-created onboarding task of the agent is reinstalled with "automatic onboarding" enabled.`),e("li",null,"Fixed an issue where a software could incorrectly have a prereq on itself"),e("li",null,[t("Fixed a bug where it was possible to encounter a "),e("code",null,"Pipe is broken"),t(" exception while trying to execute scripts on a machine due to a possibility of the agent attempting to use a Powershell host that has faulted/exited recently before we could detect it.")]),e("li",null,[t("Fixed a bug that lead to User-context scripts to incorrectly use the System-context Environment variables (such as "),e("code",null,"TEMP"),t(", "),e("code",null,"USERPROFILE"),t(")")]),e("li",null,'Fixed an issue where the "show more" sidebar dropdown would collapse when selecting the notifications link'),e("li",{prompt:""},"Scripts no longer appends unwanted prompt query param values to your new-OAuthConsent -ExtraQueryParams @"),e("li",null,"Fixed an issue with re-ran actions incorrectly failing due to missing required parameters when they were present in a deployment"),e("li",null,"Fixed an issue where msp non-admins could not view cross-tenant deployments"),e("li",null,"Fixed an issue where msp non-admins could see access request notifications when it should have been admin only"),e("li",null,"Fixed an issue with incorrect breadcrumbs showing on the schedules list page"),e("li",null,'"User Action Trigger" dropdown have been removed in the Script Editor')],-1),d=i("",137),h=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/f30cb597-3a97-49d9-b26a-7018b1dd5605","max-width":"100%"},null,-1),c=e("h3",{id:"oauth-parameters",tabindex:"-1"},[t("OAuth Parameters "),e("a",{class:"header-anchor",href:"#oauth-parameters","aria-label":'Permalink to "OAuth Parameters"'},"​")],-1),u=e("p",null,"Added the ability to create and select auto-refreshing OAuth tokens as script parameters",-1),p=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/85259b64-917e-4676-9f44-8cde043e6fa6","max-width":"100%"},null,-1),m=e("hr",null,null,-1),g=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/ec13e684-8bd3-479c-9c94-69ee21103dfc","max-width":"100%"},null,-1),w=e("hr",null,null,-1),b=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/94275c46-2c78-4739-a0fb-43260f210f88","max-width":"100%"},null,-1),f=e("hr",null,null,-1),y=e("p",null,"Added a button to the Azure Partner Settings page to pre-consent customers to the default or custom app registration via the Partner Center API",-1),k=e("p",null,"This removes the need to provide consent for each customer manually using an admin account from the customer",-1),x=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/8a3c312d-b8d4-4b94-8f1a-5c2c1cb13d65","max-width":"100%"},null,-1),v=e("hr",null,null,-1),q=e("p",null,"Added an OAuth Token Acquisition mechanism to allow Partner admins to give ImmyBot consent to use the Partner Center API",-1),F=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/1d78a586-637b-49b5-9ec4-5a349a8c77b4","max-width":"100%"},null,-1),A=i("",319),P=[r,l,d,h,c,u,p,m,g,w,b,f,y,k,x,v,q,F,A];function I(E,C,S,B,T,_){return s(),n("div",null,P)}const M=a(o,[["render",I]]);export{R as __pageData,M as default}; +import{_ as a,c as n,o as s,U as i,m as e,a as t}from"./chunks/framework.Q7Se86sZ.js";const R=JSON.parse('{"title":"Releases","description":"","frontmatter":{},"headers":[],"relativePath":"releases.md","filePath":"releases.md"}'),o={name:"releases.md"},r=i("",99),l=e("ul",null,[e("li",null,"Fixed an issue where the user affinity job was assigning a primary person to a computer, even when the person was from a different tenant than the computer"),e("li",null,"Fixed an issue where an action's duration would continue to increment when a session was completed while the action was still running"),e("li",null,"Fixed an issue where the spinner icon in the Deployment Detection button was broken"),e("li",null,'Fixed an issue where loading a computer detail page would sometimes throw "InvalidOperationException: Sequence contains no elements"'),e("li",null,"Fixed an issue where schedules targeting CW Control secondary groups become could become borked when a CW Control company was renamed"),e("li",null,`Fixed an edge case issue where a scheduled job that's in "Pending Connectivity" status could run concurrently with a newly-created onboarding task of the agent is reinstalled with "automatic onboarding" enabled.`),e("li",null,"Fixed an issue where a software could incorrectly have a prereq on itself"),e("li",null,[t("Fixed a bug where it was possible to encounter a "),e("code",null,"Pipe is broken"),t(" exception while trying to execute scripts on a machine due to a possibility of the agent attempting to use a Powershell host that has faulted/exited recently before we could detect it.")]),e("li",null,[t("Fixed a bug that lead to User-context scripts to incorrectly use the System-context Environment variables (such as "),e("code",null,"TEMP"),t(", "),e("code",null,"USERPROFILE"),t(")")]),e("li",null,'Fixed an issue where the "show more" sidebar dropdown would collapse when selecting the notifications link'),e("li",{prompt:""},"Scripts no longer appends unwanted prompt query param values to your new-OAuthConsent -ExtraQueryParams @"),e("li",null,"Fixed an issue with re-ran actions incorrectly failing due to missing required parameters when they were present in a deployment"),e("li",null,"Fixed an issue where msp non-admins could not view cross-tenant deployments"),e("li",null,"Fixed an issue where msp non-admins could see access request notifications when it should have been admin only"),e("li",null,"Fixed an issue with incorrect breadcrumbs showing on the schedules list page"),e("li",null,'"User Action Trigger" dropdown have been removed in the Script Editor')],-1),d=i("",137),h=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/f30cb597-3a97-49d9-b26a-7018b1dd5605","max-width":"100%"},null,-1),c=e("h3",{id:"oauth-parameters",tabindex:"-1"},[t("OAuth Parameters "),e("a",{class:"header-anchor",href:"#oauth-parameters","aria-label":'Permalink to "OAuth Parameters"'},"​")],-1),u=e("p",null,"Added the ability to create and select auto-refreshing OAuth tokens as script parameters",-1),p=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/85259b64-917e-4676-9f44-8cde043e6fa6","max-width":"100%"},null,-1),m=e("hr",null,null,-1),g=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/ec13e684-8bd3-479c-9c94-69ee21103dfc","max-width":"100%"},null,-1),w=e("hr",null,null,-1),b=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/94275c46-2c78-4739-a0fb-43260f210f88","max-width":"100%"},null,-1),f=e("hr",null,null,-1),y=e("p",null,"Added a button to the Azure Partner Settings page to pre-consent customers to the default or custom app registration via the Partner Center API",-1),k=e("p",null,"This removes the need to provide consent for each customer manually using an admin account from the customer",-1),x=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/8a3c312d-b8d4-4b94-8f1a-5c2c1cb13d65","max-width":"100%"},null,-1),v=e("hr",null,null,-1),q=e("p",null,"Added an OAuth Token Acquisition mechanism to allow Partner admins to give ImmyBot consent to use the Partner Center API",-1),F=e("img",{src:"https://immybot.blob.core.windows.net/media-qa/1d78a586-637b-49b5-9ec4-5a349a8c77b4","max-width":"100%"},null,-1),A=i("",319),P=[r,l,d,h,c,u,p,m,g,w,b,f,y,k,x,v,q,F,A];function I(E,C,S,B,T,_){return s(),n("div",null,P)}const M=a(o,[["render",I]]);export{R as __pageData,M as default}; diff --git a/azure-graph-permissions-setup.html b/azure-graph-permissions-setup.html index 2cc291ab..d18a6223 100644 --- a/azure-graph-permissions-setup.html +++ b/azure-graph-permissions-setup.html @@ -20,7 +20,7 @@
Skip to content

AzureAD/365 Graph Permissions

Your first ImmyBot tenant will be automatically linked to the Azure tenant that you signed up for ImmyBot with. You can link other ImmyBot tenants to Azure from the tenant Azure tab.

Linking to an Azure Tenant

After creating an ImmyBot tenant, link it to an Azure tenant by navigating to the Azure tab in ImmyBot and entering the Azure tenant's principal id or domain and clicking Save.

Azure Permission Level

Once your ImmyBot tenant has been linked to Azure, you can set the Azure Permission Level from the tenant Azure tab. This allows ImmyBot to:

  1. Sync all users from the Azure tenant
  2. Sync all users from your GDAP customers (please see GDAP Customers)
  3. Install the 365 applications a user is licensed for
    • Apps for business/Apps for entrprise/Project/Visio
  4. Deploy software to Teams, On-Premises Security Groups
    • Ex. Everyone in the Engineering Team gets AutoCAD 2022

The Azure Permission Level has two modes: Default and Custom

NB: In both the Default and Custom modes, consent must be provided for each customer you want to sync. Please see GDAP Customers for requirements

Default

In this mode, you don't need to create an app registration. You consent as an administrator, allowing ImmyBot access users in your tenant and your customers tenants. Please see GDAP Customers if you want ImmyBot to access your customers' users.

Custom

In this mode, you create an App Registration and provide its Application (client) Id and Secret to ImmyBot, allowing you to customize the permissions Immy has to you and your customer's environments.

Create an App Registration

Navigate to: https://aad.portal.azure.com/

Important! Your app registration must have a Web redirect uri of https://<your-domain>.immy.bot/consent-callback, replacing <your-domain> appropriately

Grant Permissions

See the screenshots below for the minimum permissions.

image

image

Create Client Secret

Please see GDAP Customers if you want ImmyBot to access your customers' data.

Copy the Application (client) ID and Client Secret Value into the form in ImmyBot.

GDAP Customers

To sync users from GDAP customers of your Azure Partner, permission must be granted in the customer tenants to Immy's app registration (Default or Custom). This can be achieved either by clicking on the Consent button for each customer individually ("Manual consent") or by using the Pre-consent button ("Pre-consent").

This can be done by clicking on the Consent or Reconsent button for the customer on either the Azure Settings page or ont he Azure tab of the ImmyBot tenat linked to the customer.

NB: When manually consenting to an Azure customer, you must authenticate using an administrator account from that customer!

Immy can automatically grant consent to your GDAP customers using the Partner Center API, removing the need to consent to each customer individually. To do this, you must authenticate to the Partner Center API with a user in the partner tenant that meets these requirements:

  1. Is a member of the AdminAgents security group
  2. Is given the Application administrator and Privileged role administrator Entra roles at the customer through the GDAP relationship

Example: GDAP Role Assignments

Here is an example GDAP relationship configuration that will work with Immy's pre-consent functionality:

  1. Create security group in the partner tenant named Application Administrators
  2. Create security group in the partner tenant named Privileged Role Administrators
  3. Assign the Application administrator Entra role to the Application Administrators security group on the customer's admin relationship
  4. Assign the Privileged role administrator Entra role to the Privileged Role Administrators security group on the customer's admin relationship
  5. Add the partner user that you wish to sign-in to the Partner Center API with to AdminAgents, Application Administrators and Privileged Role Administrators security groups

For more information, see these Azure docs:

Common Issues

AADSTS500113: No reply address is registered for the application

This error occurs when the redirect uri is not set correctly on the custom app registration. Please follow these steps to set the redirect uri correctly:

  1. Navigate to the Azure Portal
  2. Navigate to the Microsoft Entra ID blade
  3. Navigate to the App Registrations blade
  4. Select the app registration you created for ImmyBot
    • You may need to change the filter to "All Applications"
    • You can paste the Application (client) ID of your custom app registration into the search box to find it image
  5. Navigate to the Authentication blade
    • Select "Add a platform"
    • Select "Web" as the type image
    • Enter https://<your-domain>.immy.bot/consent-callback as the redirect uri, replacing <your-domain> appropriately
    • Click "Configure" image
- + \ No newline at end of file diff --git a/build-your-own-integration.html b/build-your-own-integration.html index 72c89464..1375062b 100644 --- a/build-your-own-integration.html +++ b/build-your-own-integration.html @@ -443,7 +443,7 @@ } $Integrationimage - + \ No newline at end of file diff --git a/connectwise-automate-integration-setup.html b/connectwise-automate-integration-setup.html index cc6e4fa9..a712f1a1 100644 --- a/connectwise-automate-integration-setup.html +++ b/connectwise-automate-integration-setup.html @@ -22,7 +22,7 @@
Skip to content

ConnectWise Automate

Setting up this integration allows you to

  1. Import customers from Automate
  2. Import computers from Automate
  3. Manage all computers in Automate without deploying the ImmyBot Agent
  4. Map customers from Manage to ImmyBot tenant based on existing Automate<->Manage relationship

Create ImmyBot Role

ImmyBot requires the following permissions in Automate

  • Core
    • Clients.Read
    • Clients.Show All
    • Computers.Show All
    • Computers.Edit (For moving existing computers to new locations
    • Computers.Delete (For retiring duplicate computers)
    • Groups.Show All
    • Locations.Show All
    • Patch Manager.Read (Required if you want Immy to apply approved Windows Updates)

Immy-CWA-User Class Manager-Permissions

Create ImmyBot User

Enable Google MFA for ImmyBot User

The integration requires Google for MFA. Duo is not supported as Duo does not expose the MFA token anywhere for us to use and doesn't appear to be the standard TOTP like Google uses. You will need to exclude the integration user from your Duo deployment if using Duo and configure the Google MFA plugin for Automate for this user.

image

Import your customers

Alternatively, you can create/map only certain customers.

When you map a customer from an RMM, the computers will undergo Identification

- + \ No newline at end of file diff --git a/connectwise-control-integration-setup.html b/connectwise-control-integration-setup.html index f0de879b..24651755 100644 --- a/connectwise-control-integration-setup.html +++ b/connectwise-control-integration-setup.html @@ -30,7 +30,7 @@ DELETE FROM SessionConnectionEvent WHERE (EventType = 70) AND (Time < DATETIME('now', '-7 day')) - + \ No newline at end of file diff --git a/connectwise-manage-integration-setup.html b/connectwise-manage-integration-setup.html index 5a71fd00..9ceb959e 100644 --- a/connectwise-manage-integration-setup.html +++ b/connectwise-manage-integration-setup.html @@ -20,7 +20,7 @@
Skip to content

ConnectWise Manage

Setting up this integration allows you to

  1. Deploy Software to machines covered by a certain agreement type
  • Example: Deploy Huntress to all customers with a Managed Security Agreement
  1. (Preferred) Deploy Software to machines covered by an Agreement with a specific Addition
  • Example: Deploy SentinelOne to all computers that have SentinelOne as an Addition on their agreement

If you use Automate, setup the Automate integration first and import your customers from there. Importing customers from Manage generally results in many unnecessary Tenants being created in ImmyBot. You can link Automate to Manage to leverage the existing mappings between Automate<->Manage instead of manually mapping your Manage customers

Create an ImmyBot Role with the following permissions

  • Company -> Company Maintenance -> Inquire Level (All)
  • Finance -> Agreements -> Inquire Level (All)
  • Procurement -> Product Catalog -> Inquire Level (All)
  • Procurement -> Product -> Inquire Level (All)
  • System -> API Reports -> Inquire Level (All)

Create an API Member

Go to System -> Members and create a new API Member

Create a new API key

Plugin the API Keys in ImmyBot

Create a new PSA Link and fill in the Provider Info

CW Manage Pod v1

Setting up this integration allows you to Look up the contact's email address in Immy and shows you their computers (Immy does User Computer Affinity behind the scenes so you don't have to do it manually). Technicians can jump into their computers or push software via the ticket.

image

Go to Show More -> Integrations

Add CW Manage Pod

Go to ConnectWise -> Setup Tables -> Manage Hosted API -> +

image

- + \ No newline at end of file diff --git a/getting-started.html b/getting-started.html index 34bf01c2..a4344258 100644 --- a/getting-started.html +++ b/getting-started.html @@ -20,7 +20,7 @@
Skip to content

Getting Started / Thinking with Immy

The goal of ImmyBot is to setup a computer knowing only the customer and the end user.

Thinking with Immy means thinking in terms of how things "Should" be.

You teach Immy how things "should" be by creating Deployments.

How things "Should" be is often dependent on external factors. For example

  • Customer A should have SentinelOne because they pay for it
  • Person A should have Visio 365 because he has a license for it

Luckily, deployments can be conditionally applied based on the result of scripts that reach out to external sources

This is out of the box functionality in ImmyBot. I'm just showing you how it works to illustrate the power of the rules engine.

Overview

ImmyBot deploys 2 things:

  1. Software
  2. Tasks

Tasks are for anything that isn’t software, think Bitlocker, Power Options, etc.

  • You can use Tasks to configure software by selecting a "Configuration Task" for the software
  • Configuration Tasks are useful for configuring the application (even if the application wasn't installed by ImmyBot)
  • Configuration Tasks run after Immy determines the software is installed
  • Configuration Task parameters are available in all scripts related to the software

ImmyBot tests everything it does before and after it does it.

  • Software
    • Version Detection - Runs before install to determine if installation is necessary, and after to verify the desired version is installed
      • DisplayName
        • Contains
        • Regex
        • Traditional (Wildcard *)
      • UpgradeCode (For MSI based installs)
      • Script
        • Must return a version or null
    • Test Script - If software is installed, the failure of this test (the test script returning $false) will trigger a "Repair" action (default Uninstall/Install) of the application
      • Example: Check to verify Foxit PDF Editor is the Preview handler extension is working in Windows Explorer, reinstalling the PDF Editor usually corrects this scenario
  • Tasks
    • Test script (When using separate scripts)
    • Combined script returns $false when $method is 'test'

Example: Adobe Reader

We find that most MSPs install Adobe Reader by default so ImmyBot includes a Recommended Deployment that states

  • "the latest version of Adobe Reader should be installed for all Workstations and Portable Devices"

When this rule applies (i.e. it isn't disabled or overridden by a more specific rule) ImmyBot will do the following:

  1. Find the latest available version of Adobe Reader by running the Adobe Reader "dynamic version" script that uses a public API to return the latest full version number of Adobe Reader, as well as the URL to download it, the latest patch version of Adobe Reader, and the URL to download it.
  2. Determine the installed version (if any) by looking for Adobe Reader in Add/Remove Programs on the machine
  3. Queue an Install or Upgrade task (depending on the previous step)
  4. Set Adobe Reader to be the default PDF handler by running the "configuration task" that verifies that Reader is the default handler for .PDF files for each user on the machine.
- + \ No newline at end of file diff --git a/halo-integration-setup.html b/halo-integration-setup.html index 05c549cd..df90962d 100644 --- a/halo-integration-setup.html +++ b/halo-integration-setup.html @@ -20,7 +20,7 @@
Skip to content

HaloPSA

Setting up this integration allows you to

  1. Deploy Software to machines covered by a certain contract type
  • Example: Deploy Huntress to all customers with a Managed Security Contract
  1. (Preferred) Deploy Software to machines covered by an Contract with a specific recurring invoice item
  • Example: Deploy SentinelOne to all computers that have SentinelOne on a recurring invoice as a recurring invoice item on their contract

Create an ImmyBot Application under /config/integrations/api/applications

  • Under the details section, select the Client ID and Secret Authentication Method
  • Generate and copy the Client ID and Client Secret
  • The Login Type should be "Agent", and you should select an "Agent to log in as"

Permissions:

  • read:customers -> Yes
  • read:contracts -> Yes
  • read:items -> Yes
  • edit:items -> Yes (*should not be needed > 2.99, API bug will not allow listing items without edit rights)
  • read:invoices -> Yes
  • read:software -> Yes
  • read:assets -> Yes (*future feature of the integration will include asset population, not currently necessary)
  • edit:assets -> Yes (*future feature of the integration will include asset population, not currently necessary)

Plug in the Client ID and Client Secret in ImmyBot

Create a HaloPSA Integration Link and fill in the Integration Settings

image

Embedded Ticket Tab

HaloPSA version 2.125.5, introduced a new feature called Custom Tabs. You can configure these Custom Tabs to point to a web address, similar to an iframe.

Within HaloPSA, configure the tab as follows:

image

This tab will then show on all tickets in the system, like this:

image

- + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index 1841347f..179035e3 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"user-roles.md":"2kRKvpRc","markdown-examples.md":"0fDP8ump","index.md":"savCj9OT","onboarding.md":"SCpUpMQC","windows-sandbox.md":"eGW9ttyg","faq.md":"sXJ9RXSw","recommended-deployments.md":"bJn8zbiP","troubleshooting.md":"FIP7nqZ9","add-users.md":"TPrk5VcE","connectwise-manage-integration-setup.md":"yVBPWwaD","connectwise-automate-integration-setup.md":"OMw3Hnaq","getting-started.md":"QWE9A8tA","releases-2021.md":"VzdP9D8Q","terminology.md":"sIQXfQph","scripts.md":"t_iGcB5k","ncentral-integration-setup.md":"2tmSgx0l","old-ncentral-integration-setup.md":"osLAhaiP","readme.md":"8dBE8h8q","releases.md":"bgt_DXtz","releases-2022.md":"SAdko67G","releases-2020.md":"YQUUk8hF","immy-commands.md":"neOz-T9Y","connectwise-control-integration-setup.md":"96Tx51Uh","build-your-own-integration.md":"BCYySqpS","halo-integration-setup.md":"7lgOh6lD","azure-graph-permissions-setup.md":"lffx8VWj"} +{"connectwise-automate-integration-setup.md":"OMw3Hnaq","readme.md":"8dBE8h8q","index.md":"savCj9OT","halo-integration-setup.md":"7lgOh6lD","markdown-examples.md":"0fDP8ump","old-ncentral-integration-setup.md":"osLAhaiP","connectwise-manage-integration-setup.md":"yVBPWwaD","faq.md":"sXJ9RXSw","onboarding.md":"SCpUpMQC","connectwise-control-integration-setup.md":"96Tx51Uh","troubleshooting.md":"FIP7nqZ9","user-roles.md":"2kRKvpRc","scripts.md":"t_iGcB5k","windows-sandbox.md":"eGW9ttyg","recommended-deployments.md":"bJn8zbiP","azure-graph-permissions-setup.md":"lffx8VWj","ncentral-integration-setup.md":"2tmSgx0l","immy-commands.md":"neOz-T9Y","add-users.md":"TPrk5VcE","getting-started.md":"QWE9A8tA","terminology.md":"sIQXfQph","build-your-own-integration.md":"BCYySqpS","releases.md":"_Xh-opGd","releases-2022.md":"SAdko67G","releases-2020.md":"YQUUk8hF","releases-2021.md":"VzdP9D8Q"} diff --git a/immy-commands.html b/immy-commands.html index 659851f1..9c021e22 100644 --- a/immy-commands.html +++ b/immy-commands.html @@ -97,7 +97,7 @@ $versionString = $url -split '/' | select -Last 1 -Skip 1 $latestVersion = $SoftwareVersions | sort SemanticVersion | select -last 1 $createdVersion = Add-SoftwareVersion -SoftwareVersion $latestVersion -SemanticVersion $versionString -Url $url

Get-AllLocalScripts

Coming Soon

Get-AllGlobalScripts

Coming Soon

CW Automate Commands

Invoke-CWAQuery

Coming Soon

Invoke-CWARestMethod

Coming Soon

Get-CWARestPages

Coming Soon

- + \ No newline at end of file diff --git a/index.html b/index.html index 5f8eef07..75a536f0 100644 --- a/index.html +++ b/index.html @@ -20,7 +20,7 @@
Skip to content
- + \ No newline at end of file diff --git a/markdown-examples.html b/markdown-examples.html index b9e4d4ba..d452a76b 100644 --- a/markdown-examples.html +++ b/markdown-examples.html @@ -52,7 +52,7 @@ ::: details This is a details block. :::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- + \ No newline at end of file diff --git a/ncentral-integration-setup.html b/ncentral-integration-setup.html index df445e47..18c7d756 100644 --- a/ncentral-integration-setup.html +++ b/ncentral-integration-setup.html @@ -23,7 +23,7 @@
Skip to content

INFO

This page is now dedicated to the new N-Central integration, utilizing the new N-Central REST API & ImmyBot Dynamic Integrations.

This new integration should provide improved stability over our classic (and soon to be deprecated) integration.

Looking for the classic N-Central integration guide? We recommend against it, but here is the classic setup guide.

N-Central REST API Dynamic Integration

Setting up this integration allows you to:

  1. Import customers from N-Central
  2. Import computers from N-Central
  3. Manage all computers in N-Central without deploying the ImmyBot Agent

Create ImmyBot Role in N-Central

ImmyBot currently requires the following role permissions to operate correctly:

Devices

  • Devices View
    • All Devices -> Read Only
  • Scheduled Tasks
    • Scheduled Tasks -> Manage

Create an "ImmyBot" role in your N-Central instance using above roles.

Create an API-Only ImmyBot user in N-Central

N-Able themselves have an offical short guide for doing this we recommend following for this part, but here is a recap:

  1. Create a new "ImmyBot" user in the instance with the "ImmyBot" role applied.
  2. Under "API Access", ensure "Api-Only User" is checked. 2FA MUST be disabled for the API User!
  3. Save the new ImmyBot user, and press the "Generate JSON Web Token" button. Copy this value somewhere for later.

Add the necessary 'RunScript' Automation Policy

After completing the new API-Only user setup, it's time time add an Automation Policy to N-Central so Immybot can run scripts on the machines.

First, navigate to the "Script/Software Repository" under "Schedules Tasks" beneath the "Configuration" tab in N-Central. Once at the Script Repository page, select "Add" -> "Automation Policy".

Second, download the ImmyBot RunScript Automation Policy and upload it to your instance. Fill out the Name and Description how you see fit if required.

Last step is to ensure this new automation policy we have uploaded is able to be invoked by the Immybot API User. Find the automation by searching for "Immybot", then flipping the Enable API switch. Accept the confirmation modal, then copy the Repository ID for later use.

Make sure you copy YOUR Repository ID, as this identifier for the automation policy will be unique across every N-Central instance!

Add integration for N-Central

After completing setup in N-Central, it's time to add the integration to ImmyBot. Navigate to the "Integrations" page in ImmyBot, and create a new N-Central v2 integration. Input a name you'd like for the integration, followed by your N-Central server URL, and the JWT you copied in the steps to make an "ImmyBot" API user. Then, input the RepositoryId gathered from the step before. Lastly, flip the Enable Integration switch.

If the Health Check reports an error after enabling the integration, ensure you have completed the above steps correctly. If you continue to have issues, reachout to the community or support for assistance.

Import your customers

Alternatively, you can create/map only certain customers.

When you map a customer from an RMM, the computers will undergo Identification

Troubleshooting

My customers are showing up but no computers

Login to N-Central as the ImmyBot User and accept the EULA

- + \ No newline at end of file diff --git a/old-ncentral-integration-setup.html b/old-ncentral-integration-setup.html index 0476443e..ff1784da 100644 --- a/old-ncentral-integration-setup.html +++ b/old-ncentral-integration-setup.html @@ -23,7 +23,7 @@
Skip to content

WARNING

This classic N-Central integration is soon to be deprecated and not recommended for further use. It is unlikely to receive further updates.

Please migrate to the New N-Central REST API Integration

N-Central Integration

Setting up this integration allows you to

  1. Import customers from N-Central
  2. Import computers from N-Central
  3. Manage all computers in N-Central without deploying the ImmyBot Agent

Create ImmyBot Role in N-Central

ImmyBot currently requires the following role permissions to operate correctly:

Devices

  • Devices View
    • All Devices -> Read Only
  • Direct Support
    • Command Prompt -> Manage
    • File System -> Manage
  • Remote Control
    • Custom -> Manage
    • Take Control -> Manage
  • Network Devices
    • Add/Import Devices -> Manage
    • Edit Device Settings -> Manage

Create an "ImmyBot" role in your N-Central instance using above roles.

Create ImmyBot user in N-Central

Create a new "ImmyBot" user in the instance with the "ImmyBot" role applied.

Login to the new ImmyBot user to get MFA code and accept EULA

Once you have created the new ImmyBot user account, you must attempt to login so that you may retrieve the MFA key, and complete any initial setup. After entering the accounts email and password, there will be a MFA QR code displayed. You MUST press the "CAN'T SCAN IT?" button to get the Base32-encoded MFA key. After saving the key, use a site such as this to get the current token from the key, or temporarily scan the QR code on a device to complete sign-in.

TIP

Make sure you accept the EULA when you login, otherwise the computers will not import!

Add integration for N-Central

After completing setup in N-Central, it's time to add the integration to ImmyBot. Navigate to the "Integrations" page in ImmyBot, and create a new "N-Central" integration. Input all the N-Central user account data to the fields on the right.

Press the "Verify Credentials" button, then, if completed successfully, press the button again to save the integration.

Import your customers

Alternatively, you can create/map only certain customers.

When you map a customer from an RMM, the computers will undergo Identification

Troubleshooting

My customers are showing up but no computers

Login to N-Central as the ImmyBot User and accept the EULA

- + \ No newline at end of file diff --git a/onboarding.html b/onboarding.html index e06addf2..cba8c4f0 100644 --- a/onboarding.html +++ b/onboarding.html @@ -20,7 +20,7 @@
Skip to content

Setup your first Computer

When you first login to ImmyBot the Getting Started Wizard will be prompt you to create your ImmyBot flash drive, and plug it into the new computer.

THIS IS A ONE TIME PROCESS, YOU DO NOT NEED TO CREATE A FLASH DRIVE FOR EACH CLIENT. YOU WILL CHANGE THE CLIENT AFTER THE MACHINE IS IN IMMYBOT

image

We recommend unboxing a physical computer (Dell, HP, or Lenovo) so we can demonstrate applying the latest manufacturer BIOS and driver updates.

If you insist on testing on a virtual machine, do the following to receive the PPKG inside an ISO, then mount it to the VM, and press the Windows Key 5 times when you are at the Region Selection screen. If you are past the region selection screen, simply double click the PPKG from the mounted disk

image

image

Once the computer is identified, you will be directed to that computer to begin the Onboarding process:

image

ImmyBot needs:

  1. Customer
  2. Primary User (That will be using the computer, optional but recommended)

image

You only have one customer and one person right now, and it’s your MSP and you. That’s fine, we’ll pretend we’re setting up a computer for you and your MSP.

TIP

Customers can be imported from your RMM or PSA, or by setting up the Azure integration

TIP

People are imported from your customers' Azure AD via the Azure integration

An "Onboarding" session will be created for this computer, and ImmyBot will apply the "Recommended Deployments"

TIP

You can add your own Deployments and re-run this session as many times as you like until everything is to your liking.

- + \ No newline at end of file diff --git a/recommended-deployments.html b/recommended-deployments.html index 23a74e4b..01d10a05 100644 --- a/recommended-deployments.html +++ b/recommended-deployments.html @@ -20,7 +20,7 @@
Skip to content
- + \ No newline at end of file diff --git a/releases-2020.html b/releases-2020.html index f23e72e1..50d8278b 100644 --- a/releases-2020.html +++ b/releases-2020.html @@ -22,7 +22,7 @@
Skip to content

Releases in 2020

0.38.2

Released 2020-12-29

New Features

Updated the export default name to be meaningful.

image

image

Added a Uri datatype for maintenance task parameters.

image

This parameter is available as a Uri type in power shell for users to us inside of scripts.

image

Improvements

  • When creating new software versions, we will default the new version's settings to the previous version's settings. This is generally more reliable that using the analysis results by default. If there is no previous version, then we will still use the analysis results as default.

  • Adds the result message to the action column in the deployment excel export to help indicate success/failure.

  • Using the new Uri datatype no additional parsing will be needed to convert a string to a Uri inside of the script.

  • Made the system update page show current version release notes

  • Added current release update notes; Switched to using cards for displaying releases

  • Display computer provider type button for each RMM Link instead of type and hid disabled links

  • Updates the Schedules List to show the same Target fields that the Deployment List shows.

    • image

Bug Fixes

  • Fixed issue with saving global maintenance task with non-file parameters
  • Fixed an issue when uploading an installer Immy would not try and match it to an existing software.
  • Fixed a bug on the upload software version page where clicking the next button was not loading the next screen.
  • Fixed a bug when saving cross tenant deployments where we did not clear the tenant field if the deployment was previously for a specific tenant.
  • Fixed issues with the session list page not showing correct results when the time filter was applied.
  • Fixed an issue where we could show non IP addresses for a computer's external IP field when the External IP Inventory script runs
  • Fixed an issue where BITS Download would not fallback to basic download if the command timed out.
  • Fixed issue with showing the updated by and update by by person on the Schedules List page.
  • Hid the Download ImmyAgent link when ImmyAgent RMMLink is disabled.
  • When detecting software version after install a newer version than expected will no longer cause a failure for that action.
    • This fixes the case in where some software auto update themselves right after installation.

0.38.1

Released 2020-12-23

Bug Fixes

  • Corrected issue preventing Maintenance Tasks from being saved

0.38.0

Released 2020-12-21

New Features

Maintenance Tasks Files

image

  • Specify a default file if the user doesn't specify one
  • Include utilities with maintenance tasks by marking the parameter as hidden

image

Log Highlighting

image

  • Highlights the important logs for a software or task so they are more easily recognized.

Safely create Uris for REST APIs

image

Example
powershell
Add-UriQueryParameter -Uri 'https://my.thingwithqueryparams.com/items' -Parameter @{'Filter'='subject like "hello"'}
Output
https://my.thingwithqueryparams.com:443/items?Filter=subject+like+%22hello%22

Accessing Azure KeyVault

powershell
$Headers = Get-ImmyAzureAuthHeader -Endpoint Keyvault
 Invoke-RestMethod 'https://<yourvault>.vault.azure.net/secrets/secretname?api-version=7.1' -Header $Headers | Select -Expand Value

image

Access arbitrary Azure authenticated resource URIs

powershell
$Headers = Get-ImmyAzureAuthHeader -ResourceUri 'https://vault.azure.net'
 Invoke-RestMethod 'https://<yourvault>.vault.azure.net/secrets/secretname?api-version=7.1' -Header $Headers

Improvements

  • Added the capability for ImmyAgent Provisioning packages to be downloaded an ISO. image
  • Added date/time tooltips to session times to see specifically when a session started
  • Removed automatic software evaluation run from computer details page
  • Adds Open remote session buttons to the computer deployment list.
  • Adds a checkbox to include/exclude offline computers from the computer list page.
  • Configuration task parameters are now available in software test scripts.
  • Added OS Name and Manufacturer to the Computer Overview tab.
  • Added dependency badges to maintenance action items
  • Added default to maintenance action table to hide actions with No Action to reduce clutter.
  • Removed unnecessary show preview div from Computer Details->Software tab
  • Removed automatic software evaluation from Computer Details page
  • Added Remote Session button on Edit Deployment page
  • Added offline computer checkbox filter to computer list page
  • Fixed test script result parsing and added config task variables to it
  • Removed legacy TestResult syntax from SoftwareVersion scripts
  • Added date tooltips to sessions/actions times
  • Set JobArgs to Suppress reboots when running action from Computer Details; Needs Attention
  • Moved the drag handle for RMM Priority ordering to the left side
  • Start system required inventory in overwrite existing command
  • Added dependency badge to maintenance session action list item and action table
  • Refactored to keep GetAuthConnectionString() private and added -Endpoint KeyVault as an alias for the resourceUri
  • Added parametersetnames to Get-ImmyAzureAuthHeader to differentiate between orthogonal use cases
  • Default to hiding 'No Action' in the computer actions table
  • Removed string expansion from MetascriptHost to prevent need for backticks in Set-ComputerName Metascript
  • Decreased timeout for the pending reboot check as this could cause sessions to hang for an unnecessarily long period of time if the script doesn't respond

Bug Fixes

  • Fixed 'Rerun' button action not suppressing reboots.
  • Fixed maintenance action start and end time issues showing the wrong times
  • Fixed an issue where the computer would show online even though all agents were disabled.
  • Maintenance Task parameters and built in variables values are preserved and no longer string expanded in the Metascript context, allowing you to pass these values unaltered to scripts run via Invoke-ImmyCommand
  • Fixed UTC/local issues with action start and end time
  • Fixed online status for disabled RMMLinks

0.37.10

Released 2020-12-15

Bug Fixes

  • Fixes an issue on the computer software list where some fields were not immediately updating.
  • Reduces padding of each item in the software list
  • Fixed issue where scripts would occasionally fail to execute as the user even though the user is logged in
  • Invoke-ImmyCommand no longer returns System.Object instead of $null, making it easier to detect null results
  • $using variables no longer throw a null reference exception when the value is null in the parent context
  • $using variables will issue a warning when they are not present in the parent context, previously a NullReferenceException was thrown both when the variable was declared but had a null value and when the variable was not declared. (Sometimes null is a valid value)

0.37.9

Released 2020-12-14

Bug Fixes

  • Fixed regression in 0.37.8 that broke inventory for most machines

0.37.8

Released 2020-12-12

New Features

  • Adds a helpful alert letting the user know that user scripts with a user action trigger of Run once at login, Run at every login, and Active Setup at login will run immediately if the user is logged in.

Bug Fixes

  • Fixes an issue running some inventory scripts against computers running PowerShell 2.0 (And possibly other PS versions, causing inventory to fail and computer names to be displayed as GUIDs)
  • Un-reversed order of first and last names on edit deployment page
  • Adds missing maintenance task category to the maintenance task details page
  • Fixes an issue where we were not properly updating the maintenance action if the desired state was Update If Found and the software was not present`
    • Now properly resolves the action result to Success, the Action Type to No Action, and the Action Reason to Software Missing.
  • Fixes issue where RunAsUser fails because user is not a local admin
  • Fixed issue where Immy was pre-selecting incorrect Software after analyzing non-MSI installers
  • Fixes error when using 'Update if Found' with ninite packages.

0.37.7

Released 2020-12-10

Enhancements

  • Allows for saving scripts while focused in the editor by pressing Ctrl S.
  • Adds an alert prompting to save changes when navigating away from a modified script

Bug Fixes

  • Fixes a permission issue when searching the computer list by primary user
  • Fixed object serialization issue from Windows Server 2003 machines

0.37.6

Released 2020-12-09

Bug Fixes

  • Fixes an issue where CW Control RMM Links were failing if the CW Control URL contained a specific route.
  • Fixes the excel export on the Deployment page's Affected Computers panel
  • Fixes a bug on script details form where the scripts timeout was not showing the correct value
  • Fixes a bug when viewing the script details in a modal, where the default timeout was not being supplied.
  • Resolves issue where Immy incorrectly reports "User is not logged in" when a user is logged in over RDP
  • Fixes a bug on the computer details page sessions tab where sessions for other computers show up if you change the time filter
  • Fixes a bug in the computer list page, if the computer name is missing, we now show the device id

Enhancements

  • If a provider fails to initialize, it will be automatically disabled to increase the overall health of Immy.

0.37.5

Released 2020-12-08

New Features

  • Function Scripts! Keep your code dry! You can now call scripts from other scripts. Simply create a new script with category Function, define your logic, and then call the function from another MetaScript.
  • Adds a new column to the session table called "Type" to indicate whether the session was "Scheduled" or "Manual".

Bug Fixes

  • Fixed duplicate persons issue. Syncing persons from azure users now checks if there is an existing person with the same user principal name (email) and will update that person instead of creating a new one.
  • Fixes an issue where the onboarding form's primary user selector was returning people outside of the selected tenant (Only an issue for MSP users).
  • Fixes a bug where the New and Copy as New buttons were missing from the script selector.
  • Fixed an issue with Immybot using the incorrect software version when deploying the "latest" version
  • You can now analyze a version without specifying the "Installer Executable Path" if the file is a zip file
  • Renamed metascript Get-RmmProvider to Get-RmmInfo and added the information required to retrieve EDFs for Clients and Computers from Automate
  • Addresses memory performance issues with the computer list page
  • Fixes some default properties when loading the maintenance task form in a modal. Fixes a bug in Invoke-ImmyCommand where providing the same $using variable with different capitalization threw a duplicate variable error.

Enhancements

  • Added logic to auto select an existing software by upgrade code on the software version upload page
  • Updates the deployment form's software, version, and configuration task "View" buttons

0.37.4

Released 2020-12-08

Bug Fixes

  • Fixed an issue with inventory scripts being retried every minute on devices that return exceptions

0.37.3

Released 2020-12-01

Bug Fixes

  • Fixed issue with terminal not rendering output when launched from Edit button on session logs
  • Fixes an issue where the suggested rmm link name conflicted with an existing name
  • Set the Hangfire Redis MaxStateHistoryLength to 5 to fix issues with uncontrolled memory leak

0.37.2

Released 2020-11-24

Hotfixes

  • Fixed several broken maintenance session links that were not bringing the user to the correct page.
  • Fixed an error in metascripts about the use of duplicate $__using variables.
  • Fixed an issue rendering the xterm terminal within the script editor modal.

0.37.1

Released 2020-11-23

Hotfixes

  • Fixed filter scripts to only return a single computer when run for a maintenance session. Not doing this was causing memory to balloon up unnecessarily.

0.37.0

Released 2020-11-23

Enhancements

Check out our new documentation site! https://docs.immy.bot/

Actionable Software Inventory
  • Updated the Software tab to now provide actionable buttons for software and maintenance tasks that are not compliant
Automatic Onboarding
  • Plug in the USB drive and setup begins automatically without having to login to Immy
    • Create a new Windows 10 Setup USB Package and enable the auto-onboarding option
  • Added a new tab called Sessions that allows a user to easily see computer sessions without leaving the computer details page
  • Added an Onboarding tab to the computer details page to allow easier changing of customer and primary user
Script Engine
  • Simplified Filter Script syntax, removed -TargetType and -TargetGroupFilter as these are selectable in the UI
  • Added xterm.js to the Script Editor for better handling of large return payloads
  • Write-Host output is no longer suppressed when run within Invoke-ImmyCommand
  • Write-Debug, Write-Verbose, Write-Warning, and Write-Error all work both within Metascripts, and scripts run via Invoke-ImmyCommand (Note: $DebugPreference and $VerbosePreference need to be set to 'Continue' as the PowerShell default will suppress the output from these cmdlets)
  • Write-Host in Metascripts and Cloudscripts supports -ForegroundColor, -BackgroundColor and -NoNewLine parameters
  • Terminal now formats Errors and many other objects according to the PowerShell 7 default
  • PowerShell 7 $ErrorView= 'ConciseView' is now supported
  • Exceptions thrown within scripts now show the script line instead of a backend stack trace
  • Added $AzureTenantId variable to all scripts

Stability

  • Fixed memory leak in the user affinity job that was causing instances to hang on an error page
  • Added availability health checks for some azure resources to help diagnose issues faster.

Hotfixes

  • Fixed an issue where renaming a computer did not immediately show the change in the browser
  • Fixed an issue with sending test emails from the smtp page. It would sometimes incorrectly throw an error about enabling authentication
  • Added Update If Found desired state for Ninite Software
  • Fixed selecting a software on the deployment page to auto select "Installed" and "Latest" as the default options
  • Fixed an issue where it was not possible to view global maintenance task scripts from within the Maintenance Task interface
  • ImmyAgent no longer executes Batch/CommandLine as PowerShell

Security

  • Get-ImmyComputer no longer returns computers from other tenants when run by a non-MSP user

0.36.4

Released 2020-11-19

Bug Fixes

  • Moved the pending reboot check from the beginning of the session to the beginning of the execution phase so computers do not reboot during detection. Computers usually run detection during the day and we do not want to reboot computers while they are being used.

0.36.3

Released 2020-11-13

Bug Fixes

  • Fixes bug where rebooting a computer would sometimes hang the maintenance session
  • Fixes a typo reading for onboarding -> ready for onboarding
  • Fixed issue preventing a computer from rebooting if necessary before it starts a maintenance session
  • Fixes an issue where an action would immediately fail if the computer failed to reboot
    • e.g. A software is supposed to be uninstalled and then reinstalled. After the uninstall, a reboot may be attempted. If it fails, we will now still attempt the reinstall anyway.
  • Fixes a critical bug that could allow a person to be incorrectly associated with another tenant.

0.36.2

Released 2020-11-04

Bug Fixes

  • Fixed an issue where the Update Now and Postpone buttons were missing on the maintenance email when they were set to be shown by its schedule.

0.36.1

Released 2020-11-02

Bug Fixes

  • Run Maintenance button at the top of the Computer Details Page now suppresses reboots by default
  • Edit PSALink page no longer throws exception when CWManage API returns duplicate companies
  • Updated task type and task category label names on the task form
  • Fixed a null reference exception when calling Get-ImmyComputer passing in InventoryKeys

0.36.0

Released 2020-10-26

Features

  • New and improved Computer Details Page that shows much more details
  • Added Inventory Task feature
  • Added a System Status Page that shows script execution metrics for enabled RMM Providers
  • Added a System Update Page that allows an administrator to update to newer versions of ImmyBot when they are released
  • Implemented Downgrade logic for software

Enhancements

  • Optimized script execution when using the CW Control RMM Provider
  • Optimized background job scheduling
  • Re-designed the Computer List Page
  • Merged the Onboarding and Pending Computer Pages into one page called New Computers
  • Made the ImmyAgent more scalable
  • Added a loading animation when filtering the Computer List Page
  • When a session expires and the page is reloaded, you will now be redirected back to the page you were on

Bug fixes

  • Fixed CW Control extension to work on latest version of CW Control (2020.11)
  • Fixed session failing with Ninite fails to download
  • Fixed a CORS issue when new instances are registered with uppercase characters
  • Fixed an edge case when scripts erroneously indicate they have been modified when pressing cancel
  • Removed validation requirement for username in SMTP settings
  • Fixed Automate Computers with UTC+0 (UK) do not sync due an issue with using DateTime.Subtract(0)
  • Fixed an error occurring on Windows 7/PS 2.0
  • Fixed an edge case where a server got caught in an endless reboot
  • Removed the WiFi SSID minimum length for PPKGs
  • Fixed a bug where license files did not download before running the Test script
  • Fixed an issue where User Context Scripts were returning 'gt' is not recognized
  • Fixed a bug where maintenance tasks were performed out of order when there was a software dependency
  • Fixed a bug on the Deployment Page where selecting a domain controller was causing an error
  • Fixed a bug in metascripts where Get-ImmyComputer -TargetType TenantDomainControllers was failing
  • Fixed bug where the Users List showed a System user
  • Fixed a bug where bulk software detection failed on PS 2.0 and PS 3.0 when using [Guid]::new
  • Fixed a bug where the CW Automate Provider was not leveraging the 301 command
  • Fixed a bug where the ImmyAgent did not start on VMware VMs due to lack of BoardSerialNumber
  • Fixed some edge cases where sessions kept getting stuck in the Created status
  • Fixed a bug where the ImmyAgent was defaulting to 10 seconds for the script execution
  • Fixed a bug where the software selector on the license form was showing parameters for linked maintenance tasks
  • Fixed a bug where maintenance task fields Hidden and Default Values were not saving on Create
  • Fixed a bug in the package analyzer where it was throwing Key Not Found for Inno version 6 installers
  • Fixed a bug with Deployments using a desired state of Uninstall/NotPresent that was causing failures due to missing required parameters
  • Fixed a bug with maintenance task parameters not being provided to software install scripts
  • Fixed a bug where users could not open the Maintenance Session Details Page for computers they onboarded
  • Fixed a bug where deployments for maintenance tasks with password parameter types were unable to be deployed
  • Fixed a bug where the Current User user action trigger was not available for scripts created on the software version form
  • Fixed a bug where the RMM to PSA auto client mapping failed when the RMM returns non-unique external ids
  • Fixed a bug where non-msp users could not access software or deploy the ImmyAgent

0.35.16

Released 2020-10-23

This is the first release in the release cycle

- + \ No newline at end of file diff --git a/releases-2021.html b/releases-2021.html index 00cda32b..d653c446 100644 --- a/releases-2021.html +++ b/releases-2021.html @@ -36,7 +36,7 @@ $Parameters = $using:Parameters $Parameters.ComputerName }

Timezone Support for Schedules

image

image

My Customers (CSP Preconsent)

image

Software List Type Filter

image

Bug Fixes

0.38.4

Released 2021-01-15

Improvements

Bug Fixes

0.38.3

Released 2021-01-04

Improvements

Computer Software list loads instantly

image

Parameter Ordering

Bug Fixes

Releases in 2020

Go to 2020 releases

- + \ No newline at end of file diff --git a/releases-2022.html b/releases-2022.html index 1dbbc805..c5745b9b 100644 --- a/releases-2022.html +++ b/releases-2022.html @@ -20,7 +20,7 @@
Skip to content

Releases in 2022

0.54.7

Released 2023-01-04

Improvements

  • Improved error messages when the error is coming from an integration's API, such as the CW Automate API, CW Manage API, or CW Control ImmyBot extension API.
  • Added manufacturer to duplicate agent table
  • Added Device ID to the computer overview details

Bug Fixes

  • Fixed a potential issue where a computer architecture could not be found while trying to resolve a dynamic software version
  • Fixed a transient issue that was causing detection to fail when it could have continued
  • Fixed an issue where pending connectivity sessions would not be triggered for a computer that came online due to a manual resolution for a conflicting agent
  • Fixed an issue during identification where the device id of "00000000-0000-0000-0000-000000000000" was allowed as a valid GUID. It is not valid, and new devices with this GUID will be assigned a new one.

0.54.6

Released 2022-12-27

Improvements

  • Only MSP Admins have access to the Tenant Mappings tab now

Bug Fixes

  • Fixed an issue where schedules with an invalid cron expression were allowed to be saved
  • Existing invalid cron expressions will be converted to a valid cron expression when possible, using NCronTab validation functions.
  • Fixed an issue where system and user scripts could possibly timeout before an ephemeral agent was ever established
  • Fixed an issue with downloading the immy agent installer as an .iso file
  • Fixed an issue preventing computers from being deleted
  • Mitigated an issue with N-Central which eventually resulted in N-Central hangs and crashes
  • Fixed a transient issue related to starting Ephemeral Agents on some N-Central devices the first time

0.54.5

Released 2022-12-22

Bug Fixes

  • Fixed an issue with deleting actions that caused sessions to fail
  • Fixed an issue saving some database calls due to issues from the migration to flex database servers
  • Fixed an issue with saving scripts that incorrectly fail with a message that the name is not unique

0.54.4

Released 2022-12-19

Improvements

  • Added bulk cancel and bulk rerun buttons to the maintenance session list page Added Split-Path cmdlet as well as $ActionId, $SessionId and $SessionGroupId to the included variables
  • Improved Ephemeral Agent connection speed
  • Discontinued use of WMI CreateProcess which flags AV, specifically Windows Defender for Endpoint
  • Made modifications to the light color theme to improve readability

Bug Fixes

  • Fixed several issues with the NCentral integration. Should be more stable overall.
  • Fixed an issue where preview/deploy from the dashboard table header were not getting enqueued and would crash instances by running too many sessions as once.
  • Fixed an issue with saving local software versions where it would respond with an error about certain fields being required when they shouldn't be
  • Fixed an issue with the Stop-ImmySession cmdlet where it was not setting the session or stage status to Cancelled
  • Fixed issues with our BITS download where it could get potentially stuck trying to download when an ephemeral agent could not be established
  • Fixed an issue with computers getting set to needs onboarding incorrectly when an agent gets assigned to an existing computer that is not new
  • Centered the text in the "Session #xxx in progress" button
  • Fixed an issue with saving the SMTP form
  • Fixed an issue where session logs could repeat "Reboots have been suppressed during business hours" over and over

0.54.3

Released 2022-11-23

Improvements

  • Improved enqueueing of maintenance sessions based on priority. Adhoc > Onboarding > Scheduled maintenance
  • Removed service bus form options for CW Control as the service bus is now always used
  • Added a health check to the CW Control integration to report unhealthy when the extension is not up to date
  • Updated the connected indicator on the computer details page to have a yellow lightning bolt when the ephemeral agent is connected
  • Scripts are now allowed to run for computers that have an ephemeral agent connected even if the agents all report disconnected
  • Updated the batch actions on the tenant list page to include tenant preferences. e.g. You can now update tenant business hours in bulk
  • Clicking "Attempt Identification Again" or "Rety x failed agents" on the identification tab now immediately triggers identification where before it would take up to 60 seconds

Bug Fixes

  • Made computer feature usage calculator no longer count computers that have zero agents
  • Fixed a race condition in the Ephemeral Agent that would cause scripts to hang and sessions to timeout

0.54.2

Released 2022-11-17

Improvements

  • Improved our identification de-dupe logic to automatically associate re-installed agents to the correct computers
  • Added more identification logs for some edge case scenarios to help with debugging
  • Added onboarding text to dashboard underneath onboarding computers
  • Slightly improved performance of preview/deploy functionality on the dashboard page
  • Increased the width of the tag selector in the ImmyBot Installer form and on the computer details page

Bug Fixes

  • Fixed some issues where newly identified agents would always skip onboarding
  • Fixed an issue where non-msp admins could not view tag deployments limited to their tenant
  • Added missing times to the time dropdown for scheduling adhoc deployments
  • Fixed descriptions on the maintenance task get/set/test script dropdowns
  • Fixed some mobile styling issues with the navigation bar and on computer list page

0.54.1

Released 2022-11-14

Bug Fixes

  • Fixed an issue with CW Control syncs causing CW Control agents to re-sync into ImmyBot unnecessarily

0.54.0

Released 2022-11-11

CW Control Updates

We added support for the breaking changes introduced in CW Control 22.9. We addressed stability issues with Control crashing due to the ImmyBot extension. On the Control integration form, make sure you check off the new options for using the Service Bus for better performance.

Pending Identification Updates

Agent identification now has logging to help you find root causes for why some agents fail to have scripts run against them. View them in Computers -> Pending Identification -> Show Identification Logs

You can also see the identification logs for successfully identified agents under the Computer -> Agents tab.

We now utilize the serial numbers for devices that come from trusted manufacturers (currently Lenovo, Dell, and HP). If a computer already exists in ImmyBot for a trusted manufacturer, any additional agents with that computer's serial number will skip identification and automatically be associated.

Improvements

  • Fixed issue where Intellisense would throw null reference exception when completing variables
  • Updated CW Control integration to support CW Control 22.9 (extension version 0.3.0)
  • Added immy subscription information to billing details page
  • Made subscription portal show within immy frontend instead of a link to chargebee
  • Updated the default combined maintenance task script to leverage the latest function scripts in Immy. The new script is Get-WindowsRegistryValue -Path "HKLM:\Software\Wow6432Node\MySoftwareVendor\MySoftware" -Name EnableFeature | Registry-ShouldBe -Value 1
  • License files are now downloaded before running a configuration task's test script during detection in case the script relies on the presence of the license file
  • Added a new tenant preference "Exclude from Cross-Tenant Deployments and Schedules". When a tenant is excluded, all cross-tenant deployments and schedules targeting the tenant or its computers will not be applied when full maintenance is ran. This is particularly useful for Co-Managed IT situations that don't don't want your cross-tenant schedules or deployments.
  • Improved startup time of instances in situations where there was a large number of recently added agents
  • Added "Change Tenant" in batch actions for the computers table

0.53.12

Released 2022-11-09

Bug Fixes

  • Removed the ImmyBot Agent from the Tenant -> Mappings table
  • Reduced metric reporter frequency to 30 minutes

0.53.11

Released 2022-10-20

Bug Fixes

  • Fixed a null reference exception that was occurring when sending the maintenance session follow-up email
  • Fixed a potential exception that could occur in the N-Central API
  • Fixed an exception that occurred when trying to retrieve the online agents for a computer
  • Fixed an uncommon issue where some dynamic version scripts were throwing a null reference exception
  • Fixed an uncommon exception with ImmyBot Agent connection events that caused the event to not get saved
  • Fixed an issue with syncing devices from CW Automate where it would potentially take a few minutes and block other requests
  • Fixed an issue where some CW Control and N-Central agents were not automatically onboarding when they should
  • Fixed issue where Get-ImmyComputer -InventoryKeys metascript was not auto populating the available keys
  • Fixed an issue with incorrect breadcrumbs sometimes showing on the computer list page
  • Added a missing debug log that indicates when an ImmyBot agent fails to provide inventory data
  • Fixed a bug where we were dropping both dedupe markers over the same agent instead of different agents
  • Fixed an issue with maintenance sessions reporting failed after re-running an action successfully
  • Fixed an issue where loading the deployments list would throw a ArgumentNullException
  • Fixed an issue with some Chocolatey and Ninite logs not showing up under a maintenance action's phases

0.53.10

Released 2022-10-05

Bug Fixes

  • Fixed an issue with displaying large software icon sizes on the Library -> Ordering page

0.53.9

Released 2022-10-05

Improvements

  • SVGs now render correctly when uploaded as software icons
  • Increased some low timeout values on the ephemeral agent that were causing devices with slow network connections to fail
  • Changed the Pending Identification tab to default sort descending by Date Added since the most recent machines are the ones we are usually looking for.

Bug Fixes

  • Fixed an issue with the ImmyBot Agent connected/disconnected events not propagating for pc reboots and pending connectivity sessions
  • Reduced likelyhood of Output CircularBuffer has already over-run requested index error in scripts
  • Ephemeral Agent reconnection is now prevented upon receiving a 500 status code. This was previously causing agents to stay running indefinitely.
  • Fixed an issue on the system update page where the new releases dropdown was not stretching the width like the current release dropdown

0.53.8

Released 2022-9-22

Improvements

  • The "Suppress Reboots During Business Hours" flag no longer relies on offline behavior. If you are suppressing reboots during business hours and you run a session during business hours, then Immy will suppress reboots. Business hours are now checked on every script execution, and the RebootPreference variable passed to scripts will also be updated to Suppress if it was not already set. We did this so that scripts that handle reboots can safely rely on this variable.
  • The customer list on the Azure page no longer shows the MSP tenant as a selectable option in the Linked Tenant dropdown since the MSP tenant is mapped by default
  • Refactored how we handle ImmyBot agent connected and disconnected events. Instances that heavily utilize the ImmyBot agent will have significantly improved performance.
  • The Enable Automatic Onboarding field on the PPKG form is now disabled and shows an alert if the onboarding preference is globally disabled or disabled for the selected tenant.

Bug Fixes

  • Fixed an issue with loading the AzureAD module for metascripts. This issue was causing all scripts that relied on AzureAD commands to fail.
  • Fixed an issue where syncing the connected state of large numbers of ImmyBot agents would prevent other system jobs from being performed
  • Fixed an issue where configuration tasks for already compliant software were executing at the very end of a maintenance session instead of in the expected order
  • Fixed an issue where the default upgrade strategy was set to none instead of install over
  • Fixed a permission issue where non-admins could not refresh the connectivity status of a computer
  • Fixed an issue with downloading the ImmyAgent installer as an .iso file where the extension was incorrectly set to .ppkg
  • Fixed an issue where software set to perform an update would incorrectly report compliant when the software did not specify an upgrade strategy and the upgrade was never performed. The action will now fail and report "Upgrade failed: No Upgrade Strategy specified on the software."
  • Fixed an issue with maintenance action execution ordering. If the currently executing action has dependencies, it will now immediately execute the dependencies instead of waiting until the end of the session.
  • Fixed an issue with selecting a license on the deployment details page where the selected license was not shown upon refreshing

0.53.7

Released 2022-09-14

Improvements

  • Increased the timeout of the Ephemeral Agent's Ping RPC method from 1 second to 5 seconds. 1 second was too short and was unnecessarily causing scripts to fail on machines with high network latency.
  • Added a warning message whenever the Ephemeral Agent's Ping RPC method takes over 1 second to respond to help identify machines with high network latency

Bug Fixes

  • Fixed an issue with schedules where updating a schedule from a single tenant to cross tenant would delete the schedule. This was happening due to a bug in a database constraint between schedules and tenants.
  • Fixed an issue where the connectivity status button on the computer details page was not actually refreshing the agent's connectivity status
  • Fixed an issue where repairing a software would trigger full maintenance

0.53.6

Released 2022-09-12

Improvements

  • Added Set-ImmyDeviceId cmdlet to be used during Inventory to keep the UUID of the machine up to date and prevent new computers from getting created when the UUID of the machine has changed due to a feature update.

Bug Fixes

  • Fixed an issue where the "Determine Desired Version" phase was running before the "Detect Installed Version" phase. "Detect Installed Version" needs to run first so we can pass the detected version to scripts that may rely on it when determining the desired version.
  • Fixed an issue where dynamic versions were not properly installing dependent versions

0.53.5

Released 2022-09-09

Bug Fixes

  • Fixed an issue from 0.53.4 where some code changes were unintentionally included in the release which caused downloading the PPKG to fail

0.53.4

Released 2022-09-08

Improvements

  • For maintenance task test scripts, we made Immy tolerant of non-Boolean values by displaying a warning when non-Booleans are found on the pipeline along with helper text for preventing output pollution.
  • Updated the ImmyBot Agent to support installing beta versions

Bug Fixes

  • Fixed a scripting error that caused Immy to indicate there was no output when there was definitely output

0.53.3

Released 2022-08-30

Software Test Script Changes

We now execute the software test script during the detection stage for software that have updates available.

Before, if a software needed to be upgraded, we would not run the software's test script in detection. We would perform the upgrade and then run the test script afterwards. However, if the test failed, the action would fail without any remediation.

Now, if a software needs to be upgraded, and it has a test script, the test script will run in detection. If the test script fails, then the repair strategy will be performed instead of the upgrade strategy. The test script will still be run after the upgrade as it did before.

General Improvements

  • Updated the error text for schedule cron expressions to indicate that a schedule can run at most once per day.
  • The ImmyBot Agent service sometimes throws an exception about a missing file CliWrap.dll, which causes the agent to bork. When we encounter this exception, we now auto restart the service to resolve the issue.
  • Improved the session log message "Detection stage failed: Software Action Id is not specified on the provided configuration task action" to include more information to help diagnose the issue. It is usually because the deployment contains out-of-date data and needs to be updated.
  • Improved the performance of loading the main computer list when sorting by computer name
  • Test methods containing multiple outputs now return the result of ANDing those outputs together to compute the overall result.
  • Updated Quick Deploy to allow you to choose a desired state. e.g. "Install, Uninstall, Update If Found, Ignore" or "Enforce, Monitor, Audit"
  • Added detection of stuck/non-responsive jobs such as the agent identification job, which can initiate a self-restart of backend.
  • Added reboot preference dropdown to quick deploy and override forms
  • Moved several action columns on tables to the left side for consistency and best compatibility with mobile views.
  • Added an option to schedules and adhoc-deplyoments to send detection emails even when all actions are compliant. This is to allow users whose computers are already up to date to still receive a maintenance email.
  • Updated the script list page and session log component to use the Monaco script editor
  • Added the CW Automate icon to the main computer list. Clicking the icon opens up the computer in CW Automate.
  • Added "Date Added" to the computer list and made it sortable
  • Added a simple "new" tag on the computer list for computers that have been added to ImmyBot within the last 24 hours
  • Added an 'X' button to easily remove linked tenants from integrations

Bug Fixes

  • After a task is created, the Runs Against property is now disabled. Changing this value after it is created can cause issues for deployments that are referencing it.
  • Fixed an issue with Ephemeral Agent resilient script output logic that would fail to re-connect if the script had never had any output prior to connection loss. (Ex. SonicWall VPN installer script)
  • Added missing triggered by text on the session details page when the session was triggered by a schedule or automatic onboarding
  • Fixed a width issue on some dropdown buttons
  • Fixed an issue with the integration client list re-sorting after you link/unlink a tenant

0.53.2

Released 2022-08-19

Bug Fixes

  • Fixed an error that showed on the schedules list when a schedule existed that did not specify a time zone
  • Fixed issue introduced in 0.53.1 where the current immy version stopped displaying in the sidebar
  • Fixed issue introduced in 0.53.1 where the maintenance item ordering page broke
  • Fixed issue introduced in 0.53.1 where showing/adding parameters on the maintenance task page broke
  • Fixed an issue where monitor results were only showing the last line of output instead of all output
  • Fixed an issue where monitor results were overflowing into other components
  • Fixed an issue where re-running actions while showing action details would not displaying logs as they came in
  • Fixed an issue introduced for instances that signed up after the release of 0.53.0 where identification would fail due to some missing database configurations

0.53.1 (un-published)

Released 2022-08-18

Improvements

  • Added a Trigger Now button to the Azure User Sync preference on the preferences page
  • Added a description to the PPKG reset windows checkbox - "Will perform a reset of windows with the remove user data option"

Bug Fixes

  • Fixed an issue with agent identification where users were seeing the following error - Failed attempt to differentiate existing agent and pending agent: 42883: procedure sp_create_computer_from_agent(integer, uuid, boolean, text, text, text, unknown, boolean) does not exist POSITION: 6
  • Updated the alert of the person list page to match the available actions
  • Fixed an issue where the software configuration task edit link was missing
  • Fixed an issue where the branding logo alt text was still hardcoded to "Immense Networks" instead of the value provided by the branding
  • Fixed an issue with cancelling a detection only session from the computer details page -> software tab.

0.53.0

Released 2022-08-16

UI Improvements

Dark Mode

image

Deploy Software from Dashboard

image

Session Details

imageimage

Moved commonly used Main Menu items to the top, moved less commonly used items under sub-menus

image

Integrations - New look and feel

image

Integrations - Embedded Documentation

image

Script Editor

Moved Script items into the left pane

image

New Integration - HaloPSA

Deploy software/tasks to customers with specified recurring invoice items

New Parameter Type - KeyValuePair

image

image

Improvements

  • ImmyAgent now detects 'dirty' shutdown events of the ImmyAgent with a shutdown.dirty file.
  • Added a description to /schedules "Show Postpone Button" checkbox
  • Improved the integration details page by embedding the integration's documentation
  • Added a button that triggers an immediate Azure AD Sync and a note about automatic Azure AD Sync
  • Started improving the dashboard page. Added the ability to trigger actions for items in the dashboard
  • Added cmdlets Expand-String and New-LiteralString cmdlets to help deal with strings that should or should not be expanded before being sent to a remote machine.
  • Upgraded Intellisense Engine and Monaco Editor to latest versions
  • Moved live chat button to the header navbar so it doesn't potentially block buttons on the page
  • Added 8 new Ephemeral Agent Timeline events
  • Added "Script Bytes Received" metric to system status page
  • Fixed an issue with quick assign not setting the correct desired state when running the detection only session
  • Made minor improvements to the getting started wizard
  • Moved script details into script editor sidebar for convenience

Bug Fixes

  • ImmyAgent now sends 'online' events when we reconnect to IoTHub from an ungraceful network loss to prevent session hangs after the computer restarts
  • Fixed an issue with the Automate integration where we were unable to retrieve more than 50 Windows patches
  • ImmyAgent now handles exceptions returned from an instance during registration, and will continually retry instead of shutting down.
  • Fixed a typo in the SMTP port placeholder text
  • Fixed an issue with quick assign not setting the correct desired state when running the detection only session
  • Fixed an issue with checking online/offline status of agents during a session
  • Fixed an issue where a deployment referenced a specific version even when the desired state did not require one. This was causing actions to fail
  • Fixed an issue with displaying the account dropdown on mobile
  • Fixed incorrect tooltip on install Immy agent icon in the computer list
  • Fixed an issue with the Automate integration where we were unable to retrieve more than 50 Windows patches.
  • Fixed issue where piping to Format-Table would result in an error or no output
  • Remove disabling of Cortana from PPKG builder output, as it is no-longer supported & may break newer OOBE installs.
  • Fixed issue with version restriction selector on License Edit page
  • Fixed issue with licenses deleting when saving a license with no tenant selected
  • Fixed issue displaying Customers on Azure Sync page
  • Fixed an issue with runnable script editor not including the user's tenantId in readonly cloud script editors
  • Fixed agent bug that prevents 'online' event on IoTHub reconnection
  • Fixed agent bug that would cause the agent to not retry transient registration failures
  • Only show Postpone and Update if "start immediately" not checked

0.52.7

Released 2022-07-11

Improvements

  • The script list page now persists your filters after refreshing or leaving the page.
  • Fixed width issues in the maintenance item column on the deployment list page
  • Reduced required permissions for N-Central integration. See the new N-Central integration docs for details
  • Added a new PowerShell cmdlet Stop-ImmySession that will cancel the maintenance session it is currently running in

Bug Fixes

  • Fixed some potential issues around agent connected/disconnected events
  • Fixed potential N-Central exception with re-sending messages
  • Fixed potential issue with 'missing' devices from N-Central due to possible filter contamination in N-Central

0.52.6

Released 2022-06-27

Improvements

  • Set the default install script for new software to the "Manual Install Script" and the upgrade strategy to "Install Over" whenever we don't have another specific install script to provide
  • Set the default software installer type to "Installer File"
  • Updated the example New-DynamicVersion script
  • We now show a confirmation modal when choosing the "Wiped" option for resolving an agent identification conflict.
  • You can now see Cloud Sessions from the main Sessions list!
  • Added warnings when the ephemeral agent is failing to establish a connection to help users identify causes for failing script execution
  • Fixed an issue with the detection stage stuck running when it fails to execute scripts in the beginning of the stage
  • Improved timeline connected/disconnected events. There were edge cases that would show multiple connects/disconnects back to back.
  • Removed timeline computer online/offline events to avoid confusion. These events were never actually based on a computer coming online or going offline. We simply emitted "online" when an agent connected and happened to be the only online agent. Similarly for "offline" events, we only emitted the event when an agent disconnected and all agents were offline. ImmyBot does not actively check whether a machine is online or offline. It only checks whether it has any connected agents to use. This concept will be further improved upon to help resolve issues with agents incorrectly reporting connected/disconnected.
  • Removed link to software/task on deployment list since people are clicking it thinking it is the edit deployment link
  • Moved the software/task selector back above the target selector on the deployment edit page
  • Removed the media nav item since it's not actually useful

Bug Fixes

  • Moved "Update If Found" from underneath "Installed" to the same level as "Installed" for clarity. A software can be "installed, uninstalled, ignored, or updated if found"
  • Fixed an issue with cloud task previews failing with "device offline"
  • Fixed an issue where the ImmyBot agent update action would not run when the agent was offline
  • Fixed an issue with the agent updates stage, onboarding stage, and resolution stage not honoring pending connectivity
  • Fixed an issue where the resume and cancel session buttons were incorrectly showing for postponed sessions
  • Fixed an issue with CW Control and CW Automate health error messages excluding important details that can help diagnose the problem
  • Fixed an issue where we were not checking if a configuration task is actually marked as a configuration task. This resulted in tasks getting run when they should not have.

0.52.5

Released 2022-06-13

N-Central Beta Updates

  • Fixed an issue with exceptions that may occur inside the N-Central device-sync job causing memory to bloat
  • You can now get registration tokens from the NCentral integration via new PSCmdlet Get-NCentralRegistrationToken

image

Other Improvements

  • Under "Preferences", the description of the User Affinity Sync feature says it will run every 4 hours; this is incorrect. Verbiage was changed to indicate it will run every 24 hours.
  • On the integration details page, a confirmation modal has been added when clicking the "Bulk create tenants..." button to prepare users that this will cause code execution for linked clients.
  • Added more improvements to online/offline agent handling during maintenance sessions
  • Updated the online/offline event receiver for CW Control to return immediately in an effort to close requests faster

0.52.4

Released 2022-05-31

Improvements

  • Removed unnecessary checkboxes from the Computers table on the "Edit Schedule" page
  • Immy live chat now supports screenshare! Immy support can now request access to view your screen to help resolve issues faster.

Bug Fixes

  • Fixed an issue with the maintenance email actions requiring authentication

0.52.3

Released 2022-05-27

Improvements

  • ImmyAgents no longer need to see a valid board serial number in order to complete registration or rekey. Instead, ImmyAgent may fall back on and rely on an 'ImmyHWID' (Immy hardware id), when a board serial is not available. ImmyHWIDs are derived from CPU, BIOS, MOBO, GPU, and TPM information where available.
  • Updated maintenance sessions to listen on agent connected/disconnected events instead of computer online/offline events which have faster responses and higher success rates
  • When a new agent comes into ImmyBot, we now kick off the identification job immediately if it isn't already running in an effort to speed up identification
  • Added session logs for dependencies indicating what they are for. e.g. Software A depends on Software B → If not installed then install.
  • The actions in the maintenance email (Reboot Now, Update Now, and Postpone), now link to a form on the ImmyBot instance instead of linking directly to the backend api. The reason for this is because some spam filters will automatically follow links in an email, which has accidentally caused computer reboots. Moving the link to a form allows spam filters to no longer be able to trigger the action automatically.

Bug Fixes

  • Fixed an issue causing the computer details page to sometimes not load
  • Fixed an issue with the ImmyAgent rekey request not being received
  • Fixed an issue where Get-ImmyComputer was incorrectly reporting offline
  • Fixed an issue where configuration file parameters were not being downloaded when the configuration task did not have any enabled scripts
  • Fixed an issue with displaying the dependency badges on maintenance actions
  • Fixed an issue with the schedule's day of week selector cutting off the last characters of "Wednesday"
  • Fixed an issue with the CompareTo-ImmyBotVersion metascript
  • Fixed an issue with some maintenance action start times showing "2021 years ago" instead of "Unavailable" when the action never started
  • Bump Azure IoTHub packages to resolve some connection issues with the ImmyAgent

0.52.2

Released 2022-05-25

Ephemeral Agent and Identification Improvements

  • ALL scripts now run through the ephemeral agent, even during identification and computer de-dupe logic 🎉
  • Additional exception information is now visible in Identification Failed tab, and in session output. This furthers insight for users to understand and fix potential reasons why the providers may have failed to run our agent. image
  • Fixed an issue where the date was not being set correctly when adding a AgentIdentificationFailure log, leading the user to think this issue happened at the beginning of time!

Other Improvements

  • Added computer batch actions button on the tenants -> tenant details -> computers tab
  • You can no longer create a schedule that executes within one hour of detection. This is a safety measure to help prevent reboots during business hours
  • Added a checked to the schedules page for "Execute maintenance immediately after detection" to make it easier for those that do actually want to run execution after detection. When checked, you cannot set the execution time.
  • The schedule list "Next Run" column now sorts correctly and also shows the browser's local "Next Run" time
  • Added clarity to session logs when we are checking if an agent is online
  • Quick deploy actions now use Offline Behavior: Apply on Connect
  • Auto onboarding sessions now use Offline Behavior: Apply on Connect
  • Computer list batch actions - Run Maintenance now uses Offline Behavior: Apply on Connect
  • On the schedule details page, renamed "Target Category" to "Runs Against", and changed the options to "Computers" or "Cloud"

Bug Fixes

  • Fixed an issue with the primary user not being found when sending emails after an onboarding session
  • Fixed an issue with checking off "Send follow-up email" on the onboarding form where it would not actually send the email
  • Fixed an issue with unhealthy integration messages not showing the real error message
  • Fixed an issue with unhealthy integration agents showing on the computer onboarding form
  • Added missing script parameter $LicenseFilePath to detection scripts and configuration tasks
  • Removed maintenance tasks from accidentally showing in the software prerequisite dropdown
  • Updated the computer batch actions sidebar to have better clarity
  • Fixed an issue with loading the deployment list when a deployment existed for a computer or person that no longer existed
  • Fixed an issue where Get-ImmyAzureAuthHeader -UseMspTenant was failing if the Tenant didn't have an Azure mapping
  • Fixed an issue where Get-ImmyAzureAuthHeader -UseMspTenant was returning an access token for the Tenant instead of the MSP
  • Fixed an issue where some failed sessions were getting marked as pending connectivity
  • Fixed some more issues around offline/online agent detection during sessions
  • Implemented a HTTP Concurrency limit for requests to N-Central to prevent issues with too many requests hitting their backend
  • Fixed an issue with not being able to skip onboarding
  • Fixed an issue with the "Retry X failed computers" where it was re-attempting to identify all failed computers
  • Fixed an issue with "Analyze Installer" not returning any data
  • Fixed an issue with script output in session logs not being truncated to the last 5 lines
  • Fixed an issue with the Immy Agent installation request not reporting whether the integration is disabled or unhealthy

0.52.1

Released 2022-05-18

Bug Fixes

  • Fixed an issue where tag deployments were not resolving during full maintenance
  • Fixed an issue where cloud deployments were not resolving during full maintenance

0.52.0

Released 2022-05-18

Tags

You can now add tags to computers, and deploy software to tags! Manage tags under the settings link on the sidebar. Tags help in scenarios where workstations are shared by a variety of users and there is otherwise not a common property to target with a filter script.

Tags can be added to computers as a batch action on the computer list page.

image

Tags can also be added to a computer on the details page.

image

Tags can be deployed as a cross-tenant target scope.

image

Tags can also be deployed as a single-tenant target scope.

image

Tags can be added to an ImmyBot installer to automatically set tags for new computers

image

Exclude Computer From Maintenance

You can now specify that a computer be excluded from maintenance. Excluded computers will not be allowed to run any type of maintenance session.

Settings -> Preferences -> Company Preferences -> Computers Excluded From Maintenance

or

Tenants -> Select a tenant -> Preferences tab -> Computers Excluded From Maintenance

image

Immy Chat Integration

Added in 0.51.5

We added LiveChat to Immy to make it easier for you to get support

Session Script Execution Improvements

Before executing a script on a device, we now check if it is online. If it is not online, we verify whether any of its agents are incorrectly reporting online and refresh the status appropriately. If it is still not online, we will wait up to 30 minutes for it come back online. If it is still not online, then we will mark the session as Pending Connectivity (only for Apply On Connect) or cancel the session due to the computer being offline.

Other Improvements

  • On Immy startup, we now sync the online/offline state of all ImmyBot agents
  • Added an hourly job to pull the latest online/offline state of all ImmyBot agents
  • Updated parts of the frontend codebase with typescript to prevent accidental bugs
  • Improved performance of loading certain pages that relied on fetching clients from a provider
  • On the deployment details page, deploying to over 10 computers will now prompt to confirm this is the action you want to take
  • Active Ephemeral Agents will now prevent Windows from going to sleep to keep sessions from halting
  • A new preference has been added to aid in development of Ephemeral agent, as-well as diagnosing of bugs
  • Added Offline Behavior selector to the computer onboarding form and set the default option to "Apply On Connect"
  • The Run Maintenance button on the computer details page now defaults Offline Behavior to "Apply On Connect"
  • The Run Maintenance button on the computer details and list pages now provide a dropdown for the reboot preference
  • The Run Maintenance button on the computer details and list pages now have a confirmation modal
  • Azure groups now include devices as long as you grant ImmyBot the Device.Read.All permission
  • Azure groups now include all sub groups
  • Improved the action logs and result message for failed dependencies
  • Added a Preferences tab to the Tenant details page
  • Updated PowerShell Editor Services from 3.1.5 to 3.3.5

Bug Fixes

  • Fixed an issue in the ephemeral agent that prevented the agent from exiting when finished running PowerShell
  • Fixed an issue with uninstall strings in the registry not containing quotes around paths with spaces
  • Fixed an issue where devices with unknown operating systems (non windows) were coming into Immy
  • Fixed an issue where dependencies for software set to update if found would run even if the software was not found
  • Fixed an issue where command line uninstall scripts with spaces in the path were not being wrapped in quotes
  • Fixed an issue where the access request button was not visible when access requests were disabled
  • Fixed an issue where failed dependencies were being removed instead of failed
  • Fixed an issue with the branding preview and test email not showing the mascot name

0.51.5

Released 2022-05-06

Chat with ImmyBot

  • Added a live chat button to ImmyBot as another option for support requests

Bug Fixes

  • COMMAND LINE WORKS AGAIN! Fixed an issue where Command Line (non-PowerShell) scripts would not run correctly, resulting in software uninstalls not working as expected
  • Fixed an issue where maintenance actions with a prerequisite dependency would not execute after the dependency finished successfully
  • Fixed an issue where Immy support would be unable to regain access after expiration
  • Fixed an issue with the "Show Details" link on the computer software tab not opening
  • Increased the timeout for the ImmyBot Agent to connect from 20 seconds to 60 seconds since setting up the ephemeral agent on some machines may take longer
  • Fixed an issue with configuration tasks not displaying underneath the software action
  • Fixed an issue with configuration tasks not running when using quick deploy

0.51.4

Released 2022-04-27

Deployment List Improvements

  • Removed the button "Show Recommended Deployments"
  • Recommended deployments and the ability to "Approve/Dismiss" them now show up in the list
  • Updated the group by filter and added two new filters.

image

Session Log Improvements

  • Made several logs more concise
  • Added action name and stage name to the top level logs
    • image
  • Checking the box to the left of actions do a better job of filtering to the relevant logs for that action
    • image

Bug Fixes

  • Fixed a performance issue with a timeline events database query
  • Fixed an issue that was causing the Ephemeral Agent to not extract on machines running Windows PowerShell 4 or below
  • Fixed issue where ImmyBot would not verify dependencies for software that is already compliant

0.51.3

Released 2022-04-21

Bug fixes

  • Fixed an issue with upgrading to 0.51.3 where the instance would fail to start if you had a branding that did not specify a from address (which is now required)

0.51.2

Released 2022-04-21

Branding Updates

  • Added color picker for Text Color and Table Header Text Color
  • Branding Logo and Mascot images are now optional
  • Added live branding preview

image

Other Improvements

  • Added more details such as the reboot preference to the session details page. Also added a snazzier stage indicator.
    • image
  • Changed access request default options to Three Days and Admin
  • Maintenance Tasks now have the "Ignore" option just like software and will take precedence over other deployments for the same task and target group.
  • Added desired software state "Any" as an available option for software that use dynamic versions
  • Maintenance emails no longer show software actions that have a desired state of "Update If Found" and no detected version.

Bug Fixes

  • Fixed an issue with saving a tenant's default time zone
  • Fixed an issue with the software/task selector not correctly selecting tasks on the schedule and dashboard page
  • Fixed an issue with chocolatey items not showing in the software/task selector
  • Removed ability to use metascripts to define schedule targets (since metascripts do not resolve to list of computers)
  • Fixed an issue with configuration task file parameters not getting downloaded before the software's action runs
  • Fixed an issue where the Cloud Script execution context was not selected by default when creating a new dynamic version script from a software
  • Handled some common application initialization failures more gracefully
  • Fixed an issue with metascripts being able to override certain variables that were automatically provided.

0.51.1

Released 2022-04-12

Integration Health

Integrations can now have a health status of Healthy, Degraded, Unhealthly, or Disabled.

  • Healthy: All is well
  • Degraded: Started experiencing issues in the last few minutes
  • Unhealthy: Consistently experiencing issues (integration is no longer usable)
  • Disabled: Integration has been explicitly turned off by a user

Unhealthy integrations will return to healthy automatically when transient issues subside.

An alert with the latest message is shown on the integration details page.

image

A badge has been added to the integration list and on the computer details -> agents tab.

image

image

The "Download ImmyBot Agent Installer" dropdown will now be disabled if the integration is unhealthy or disabled.

image

Other Improvements

  • Schedules can no longer be created with cron expressions using a * , - or / in the minute or hour position to help prevent to frequent scheduling.
  • Important: Schedules that are currently using a * , - or / in the minute or hour position will be automatically disabled in this version.
  • Software items in emails show "Up to Date" after successfully updating instead of "Update Available" which causes confusion whether the software has actually updated
  • Quick Assign and Assign actions are no longer disabled when the computer is already running a maintenance session
  • Added OS version after the OS name in the computer details overview info
  • MSP non-admins can now see the recommended deployments on the list page to know that they exist
  • Added detected version to items in the software tab
  • Removed the integration priority table and details since they are no longer applicable
  • When a maintenance session is manually resumed, the name of the user that resumed it now shows up in the logs. Or if it was resumed from an email, then it will indicate that a user clicked the "Update Now" button in the email.
  • Added field for maintenance task notes.

Bug Fixes

  • Fixed an issue where the dynamic version response was incorrectly cached when the script was shared for multiple software and required different output for each software
  • Fixed an issue where the software detection radio options were disabled and unable to be changed
  • Fixed an issue where the "Skip x onboarding computers" button would disable even if you had computers selected
  • Undid the change that disabled the onboarding tab since it was a bad decision
  • Fixed an issue with slug not saving when creating a tenant

0.51.0

Released 2022-04-08

Onboarding Form: Maintenance Task Parameter Override

  • New checkbox added to maintenance task parameters on the deployment details page: 'Allow override from computer onboarding'

    image

  • The checked parameters will show on the computer onboarding form, allowing the user to override the value just for the onboarding session

    image

Other Improvements

  • Implemented a Get-Hash cmdlet in the Metascript engine useful for interacting with APIs like NinjaRMM and Mimecast that require HMACSHA1 signatures

  • We moved the Target Selector above the Software / Task Selector on the deployment page since it felt more natural to answer "Who am I creating a deployment for?" before answering "What am I creating a deployment for?"

  • Software Display Name Regex detection now supports capture groups to pull the version

    image

  • Added Azure ID column to the User List page

  • Improved handling of integration API routes

  • Added a "Do not remember" option when overriding an "Update If Found" deployment, and added more options for overriding certain desired states.

    image

  • Added Tenant Slug. $TenantSlug is now exposed for all scripts executed against a computer. You can also conveniently edit the tenant slug directly in the Tenant List.

    image

  • Hid the maintenance item selector behind a checkbox on the schedule details page since it was causing some confusion

    image

Bug Fixes

  • Fixed an issue where dynamic versions that throw a terminating exception were not displaying the exception message under the maintenance action
  • Fixed an issue with the "New Version" notice not showing up
  • Fixed an issue preventing the Getting Started Wizard modal from showing
  • Fixed an issue with configuration tasks running before the software was deemed compliant
  • Fixed an issue with non-msp users not being able to create configuration tasks from the software details page
  • Fixed various issues with deploying Ninite software
  • Fixed issue with software repair not re-installing software
  • [Global Software Only] Fixed an issue with saving a custom download installer script to a global software
  • Removed double base64 encoding that triggered alerts in BitDefender and Arctic Wolf
  • Fixed the script documentation link
  • Fixed issues with Invoke-ImmyCommand forcing terminating errors instead of honoring the error action preference set by the script
  • Fixed an issue with configuration task parameters not being provided to the test script when run during detection
  • Fixed an issue with loading deployments when you have multiple of the same provider type enabled
  • Fixed issues with loading CW Control, Automate, and Manage target groups on the deployment details page
  • Fixed some exceptions that were occurring when sending emails
  • Removed duplicate "Should not be present" text showing in the maintenance actions list

0.50.13

Released 2022-04-1

Capture Version from DisplayName with Regex

For software that puts its version in the DisplayName instead of the DisplayVersion field like this:

image

You can now use a capture group to capture the version from the DisplayName

Example

HexCmp 2.34.1 can be captured with

regex
HexCmp (\d+\.\d+)

Script Editor Improvements

Within filter scripts, Get-ImmyComputer -InventoryKeys now shows valid InventoryKeys

image

0.50.12

Released 2022-03-29

Improvements

  • Made the software override options more similar to the quick deploy options
  • The ImmyBot Agent no longer writes and executes scripts from C:\Windows\Temp\ImmyBot.
  • You can now add a Tenant Slug under the "Edit" tab on the Tenant Details page. This value is exposed as the variable $TenantSlug for scripts that run against this tenant's computers.

Bug Fixes

  • Fixed an issue preventing the 'Getting Started Wizard' from showing
  • Fixed an issue with non-MSP users not being able to create configuration tasks from the software details page
  • Fixed an issue with the 'New Version' notice not showing up
  • Fixed an issue with configuration tasks running before the software was deemed compliant
  • Fixed an issue where dynamic versions that threw a terminating exception were not displaying the exception message under the maintenance action

0.50.11

Released 2022-03-21

Improvements

  • Added ability to choose "install" when overriding "update if found" deployments on the quick deploy form

Bug Fixes

  • Fixed an issue where deployments with the same target type were resolving "update if found" as a higher priority than "latest version"
  • Fixed an issue where scripts run in Control were visible in the Commands tab
  • Fixed an issue where registry manipulation scripts would fail with ProviderNotFound: Microsoft.PowerShell.Core\Registry

0.50.10

Released 2022-03-14

Intellisense Improvements

Intellisense no longer restarts when syntax error is detected.

Quickfix Actions work

image

image

No more duplicate definition on hover

image

Bug Fixes

  • Fixed an issue with downloading ImmyBot Agent EXEs which would intermittently fail
  • Fixed an issue where an unreachable integration could cause ImmyBot background jobs to not start up correctly
  • Fixed a null reference that could occur when re-running a maintenance action
  • Refactored some ephemeral agent PowerShell code for easier testing

0.50.9

Released 2022-03-08

Bug Fixes

  • Fixed a bug that was causing new instances of Immybot to crash when starting up

0.50.8

Released 2022-03-04

Onboarding Deployments

The Onboarding target type has been moved to a separate checkbox so that you can limit deployments to onboarding only AND use the target type filters.

ImmyAgent Improvements

Updated internal infrastructure to utilize our new extended verification code-signing certificate.

We currently sign:

  1. ImmyAgent executable & MSI/EXE/PPKG Installers
  2. Ephemeral Agent executable
  3. Static PoSH run on computers

In addition to being more secure, this ensures our software is no-longer flagged by SmartScreen.

IMPORTANT NOTE

Customers utilizing software such as ThreatLocker MUST ensure our new certificate is whitelisted, as our new EV cert required "LLC" to be present on our CN and O.

image

Bug Fixes

  • Improved exception handling during maintenance sessions
  • Fixed an issue with re-running cloud scripts from a session log where it would throw an exception
  • Fixed some performance issues and improved caching of function scripts

0.50.7

Released 2022-02-25

Maintenance Task Serial Execution

A maintenance task now has the option to "Execute Serially".

When checked, this maintenance task is guaranteed to only have one instance active at a time.

e.g. If three maintenance sessions have an action for a maintenance task that executes serially, then one session will execute the maintenance task while the other two wait for it to complete. Once the first completes, the second will execute. Once the second completes, the third will execute.

This is useful for maintenance tasks that rely on the state of subsequent executions.

Other Improvements

  • Added a Status and Types column to the CW Manage client list on the integration details page so you can easily filter your list to clients you want to create tenants for. Also made the Linked Tenants column filterable to "Linked" or "Not linked". The Bulk create tenants for unassigned clients is now Bulk create tenants for filtered unassigned clients and will only bulk create tenants for those visible rows matching the table filters.
  • Added checks to ensure that the identification job is running properly

Bug Fixes

  • Fixed an error that was preventing the computer overview page from loading
  • Fixed an issue with scripts running multiple times if you opened, closed, and re-opened a script editor
  • Fixed issues with the CW Control integration not updating the device name, os name, and serial number of the agent

0.50.6

Skipped

0.50.5

Released 2022-02-18

Improvements

  • Updated ImmyBot from dotnet 5 to dotnet 6
  • Non-existent items on the deployment ordering page are now automatically removed
  • Added description below the "Suppress reboots during business hours" checkbox to indicate that it is only applied for maintenance sessions that resume after a device comes back online
  • Deployments can now be disabled which will exclude them from being applied during full maintenance sessions. This can be useful if you want to stop a deployment from happening without deleting it.
  • ImmyAgent PPKG's should now work on Windows Home editions
  • Improved the load time of the maintenance session list for instances that have 1+ million sessions

Bug Fixes

  • Removed unnecessary device online check when running metascripts through the script editor
  • Fixed issue with parameters not getting provided to scripts that are re-run from maintenance session logs
  • Fixed a format exception that occurred when attempting to schedule adhoc deployments to run after midnight
  • Fixed a null reference exception thrown when using the "Limited" option on the "Software Access Level" field
  • Fixed issue with the "Last logged on user" fields not showing on the computer overview tab
  • Updated the error text of user scripts to indicate whether or not there is currently a logged in user
  • Fixed an argument exception that occurred when trying to uninstall a software by product code
  • Fixed an internal issue with migrating items to global
  • Fixed an issue with maintenance action timeline events that was preventing them from showing in the list
  • Fixed a bug where cancelling scripts from the editor would not close the PowerShell stream reader
  • Updated broken links to https://docs.immy.bot
  • Fixed a poor performing query with instances that have millions of maintenance sessions
  • Fixed issue allowing you to click the install Immy agent button on computers that did not have an online agent to install it with
  • Fixed issue where local accounts created by the PPKG were not being hidden
  • Fixed potential issue where local accounts created by the PPKG were not being added to the local administrators group if the local administrators group name wasn't called 'Administrators'

0.50.4

Skipped

0.50.3

Released 2022-02-11

ImmyBot Agent Updates

  • Fixed a bug where agent installers that were created before 0.50.0 were failing to register on new devices
  • Increased the verbosity of logging during agent installation for easier debugging
  • Fixed a null reference issue occurring on startup
  • Updated the MSI uninstallation to remove the config.json and registration.json files located under C:\ProgramData\ImmyBotAgentService.

Improvements

  • Increased the Ephemeral Agent named-pipe connection timeout from 10s -> 60s to allow computers with extremely poor PowerShell initialization time likely due to system issues to still run scripts
  • Added software / task descriptions to deployment details page and license details page. The descriptions are accessible by clicking the the question mark button

Bug Fixes

  • Fixed an issue where filter scripts and software auto update scripts were not showing any output in the script editor
  • Fixed a label issue on tenant category schedules and tenant category deployments
  • Fixed an issue on the schedule details page where the maintenance item selector would should a blank selection by default image
  • Removed unnecessary code that fetched software twice during detection
  • Fixed an issue where the selected computers on the new computers page would de-select automatically
  • Put in an update to the CW Control ImmyBot extension to work on CW Control 21.15+. CW Control 21.15 introduced a breaking change to the API.
  • Fixed an issue where cross tenant device group target types were taking precedence over tenant specific target types

0.50.2

Released 2022-02-09

Bug Fixes

  • Fixed an issue with azure sync job creating duplicate users in the MSP tenant
  • Fixed an issue where a disabled integration could not be deleted

0.50.1

Released 2022-02-08

Improvements

  • When ImmyBot restarts, it will now attempt to restart any maintenance session that was active when it shutdown. Before, it would only attempt to restart scheduled sessions
  • Restarting maintenance sessions should now be idempotent. If an action was running when the backend rebooted, then it will be restarted.
  • Removed some thread blocking code to improve performance

Bug Fixes

  • Fixed issue with Microsoft.PowerShell.Security functions not found in metascripts
  • Fixed an issue with "Uninstall By Package Info" failing to uninstall via product code
  • Fixed an issue where pending connectivity sessions were not triggering for computers that had exactly one agent

0.50.0

Released 2022-02-07

Intellisense (beta)

Intellisense can be enabled on the application preferences page (disabled by default). Having intellisense inside the script editor is going to make your life much easier when it comes to writing ImmyBot scripts.

This feature is considered beta and there may be a few bugs present that will be get patched over the next few releases.

image

image

image

image

Other Improvements

  • Added navigation link for tenant on the computer overview tab and the maintenance session list
  • Improved performance of filtering maintenance action table and dashboard results
  • Improved performance for instances that have a large number of ImmyBot agents by optimizing some database calls
  • Added compression support for JavaScript and CSS assets to decrease the initial page load time

Bug Fixes

  • Fixed an issue with some deployments not resolving to computers that are auto-onboarding
  • Fixed an issue where clicking Include Offline in the Onboarding computer list would be de-selected after 5 seconds
  • Fixed an error that showed on the tenant details page for ImmyWorkbench instances that do not have schedules enabled

0.49.9

Released 2022-02-02

Improvements

  • Inventory during a maintenance session now runs before resolving deployments since a deployment may rely on inventory data. e.g. Filter Scripts

0.49.8

Released 2022-01-27

Bug Fixes

  • Fixed a bug with quick deploy where maintenance actions were failing due to Parameter <X> is marked required... and no value has been set

0.49.7

Released 2022-01-26

Improvements

  • General cleanup/refactoring to improve performance
  • Added an index that improves some maintenance session queries

Bug Fixes

  • Fixed an issue with uploading licenses and software installers with users who have names that contain non-Latin1 characters
  • Fixed an issue where failed audit tasks were showing as compliant
  • Fixed an issue where the maintenance item selector was not showing correct results for the Tenant target category
  • Fixed an issue uploading an MSI where the Uninstall MSI By ProductCode script was being used on the software instead of the correct Uninstall MSI By UpgradeCode. The Uninstall MSI By ProductCode is now set on the software version. The software upgrade strategy is also defaulted to install/over instead of none.
  • Fixed several issues around script timeouts and memory management
  • Fixed an issue with some slow computer list queries
  • Fixed an issue with software test scripts causing detection to fail due to missing required maintenance task parameters

0.49.4

Released 2022-01-19

Improvements

  • Significantly improved performance of re-initializing maintenance sessions upon the server starting up
  • Immy will now wait for one or more of a device's agents to reconnect when the device goes offline while attempting to run a script

Bug Fixes

  • Fixed an issue with application restarts taking a long time to re-enqueue pending maintenance sessions
  • Fixed an issue with some exceptions that occur in maintenance sessions causing the sessions to be stuck in the "Created" status

0.49.3

Released 2022-01-18

Improvements

  • Reduced the number of concurrent inventory jobs that can run to preserve performance until it can be refactored
  • Delivery of Ephemeral Agents on computers that don't support TLS v1.2 no longer spit out scary looking error. Instead, it now shows a warning that it will fallback to TLS v1.0.

image

  • Monitor maintenance tasks now run during execution except for previews which still run during detection

Bug Fixes

  • Fixed an issue with maintenance item specific schedules causing sessions to get stuck in created
  • Fixed an issue with ephemeral agents not working correctly on Win7 x64-era machines
  • Fixed issue with immy version not showing in footer

0.49.2

Released 2022-01-18

Bug Fixes

  • Fixed an issue where scripts run from the editor could throw the error: An item with the same key has already been added. DebugPreference

0.49.1

Released 2022-01-17

Improvements

  • The $VerbosePreference and $DebugPreference in a metascript now get passed down to the computer
  • The top navbar on smaller screen sizes is now accessible from a collapsible button
  • Added docs nav icon linking to https://docs.immy.bot
  • Standardized task verbiage in the UI
  • Added an additional task type filter on the task list page for "All, Computer, Cloud, Configuration"
  • Write-Progress now appends to the session log output
  • Added a health check for when the Hangfire server crashes and fails to restart
  • Changed chocolatey actions to no longer use a hardcoded path C:\ProgramData\chocolatey\bin\choco.exe. We now retrieve the path by using Get-Command choco -ErrorAction Stop | select -expand Source. This ensures we can run chocolatey when it is not in installed in the default location (Looking at you SyncroRMM).
  • Deployment filter scripts can now utilize function scripts
  • Added license description field
  • Improved performance of resolving azure group deployments

Bug Fixes

  • Resolved issue where computers running non-English version of Windows could not run any scripts. This issue also prevented successful identification for those computers.
  • Resolved parameters not being passed to user-context scripts
  • Fixed an issue with boolean deployment parameters not honoring false
  • Fixed an issue with adhoc deployments not using the parameters specified on the page
  • Fixed an issue with sessions showing passed when it should show partial passed
  • Fixed issue where duplicating deployments did not copy over the parameter values
  • Fixed issue with [ctrl-s] saving scripts from the editor
  • Fixed a bug where software from deleted deployments were still showing in the assigned software tab
  • Fixed a bug where the ephemeral agent retry logic was being ignored
  • Fixed an issue with the logs panel failing to stay scrolled to the bottom
  • Fixed an issue where inventory session logs were not showing up correctly
  • Fixed an issue where needs attention actions were showing "unavailable" for the date time
  • Fixed word wrapping on maintenance task parameter text
  • Fixed a bug where deployments targeting "All computers / No Filter" would show "Workstations and portable devices" instead
  • Fixed a bug where uploading files for global maintenance tasks would fail
  • Fixed a bug where schedule and deployment provider specific target data was not loading properly

0.49.0

Released 2022-01-11

Improved Performance

In this release, codenamed "Cheetah" we achieved a 20x improvement in script execution performance through the use of WebSockets, Named Pipes, and removing code that is no longer necessary since the introduction of the Ephemeral Agent.

We also made restarting machines faster by using the new event driven Wait-ImmyComputer cmdlet when waiting for computers to reconnect after a reboot.

Apply on Connect

Problem to solve

Computers that are offline never receive maintenance. These computers need a way to update when they miss their maintenance window.

Solution

You can now specify the offline behavior for computers on schedules and ad-hoc deployments.

image

When offline behavior is set to Apply On Connect, a session will get marked as image when the device is offline. When the device comes online, the session will resume.

image

Since devices can come online at anytime, the option to Suppress Reboots During Business Hours is checked by default.

If a device is offline before the detection stage, then it will run the detection stage when it comes online.

If a device is offline before the execution stage, then it will only run the execution stage when it comes online. It will not re-run detection.

Maintenance emails are only sent out once regardless if the device goes offline.

Timeline

On the computer details overview tab, there is now a section called Timeline that shows particular events that have occurred for the computer.

image

The events we are currently showing are:

  1. Agent disconnected
  2. Agent connected
  3. Maintenance action started (only shows if the action required execution)
  4. Maintenance action completed (only shows if the action required execution)

More events will be added in the future.

Other Improvements

  • Improved performance of determining desired state of deployments during maintenance
  • Improved performance of some update queries
  • Added a new metascript cmdlet Wait-ImmyComputer that returns as soon as a computer has connectivity
  • Added & Updated Ephemeral Agent connection statistics in 'System Status' page to report data/data-rate metrics about the underlying Ephemeral Agent connection to the backend

Bug Fixes

  • Fixed an issue where software download scripts were timing out after 60 seconds if the script didn't specify its own timeout
  • Fixed an issue where changes made to a configuration task parameters from the software page were not saving
  • Fixed issues displaying incorrect text in the target type column on the deployment and schedule list pages
  • Fixed a bug where you could not remove a software download script
  • Fixed a bug with Add-UriQueryParameter where it did not accept array values or parse existing parameters
  • Fixed an issue with Ephemeral Agent "end-of-stream" response exceptions resulting in termination of stage
  • Fixed various issues with agent connection events and improved performance
  • Fixed an issue where immy agent registrations could cause resource depletion in the backend's IoT service
  • Fixed the timezone selector to show the region to differentiate the options
  • Fixed a bug where dynamic versions could depend on itself and cause an infinite loop

Releases in 2021

Go to 2021 releases

- + \ No newline at end of file diff --git a/releases.html b/releases.html index 1d6c1399..d105dfa7 100644 --- a/releases.html +++ b/releases.html @@ -12,14 +12,14 @@ - + -
Skip to content

ImmyBot will no longer support Windows 7, Server 2008 (or Server 2012 w/o ESUs) machines after May 14th, 2024

.NET 7 support is ending May 14th, and as a result we will be transitioning the Agent to .NET 8 at that time period. We will not be offering support for these machines after May 14th.

Please see the FAQ section for more details

Releases

0.65.0

Released 07/02/24

Metascript Improvements

Fixed a bug where dropdown attributes, e.g. [Dropdown({@{Option1=1; Option2=2}})], were incorrectly stripping the leading and trailing braces {...}

powershell
param(
+    
Skip to content

ImmyBot will no longer support Windows 7, Server 2008 (or Server 2012 w/o ESUs) machines after May 14th, 2024

.NET 7 support is ending May 14th, and as a result we will be transitioning the Agent to .NET 8 at that time period. We will not be offering support for these machines after May 14th.

Please see the FAQ section for more details

Releases

0.65.1

Released 07/05/24

Bug Fixes

  • Fixed an issue with some onboarding tasks not showing all of the parameters on the onboarding form unless you manually hit the refresh button
  • Fixed an issue with CW Automate where agents were not being synced

0.65.0

Released 07/02/24

Metascript Improvements

Fixed a bug where dropdown attributes, e.g. [Dropdown({@{Option1=1; Option2=2}})], were incorrectly stripping the leading and trailing braces {...}

powershell
param(
   [Dropdown({@{Option1=1; Option2=2}})]
   $DropdownParam
  )

would not work but the following would

powershell
param(
@@ -70,15 +70,15 @@
         }
     }
 }
-process{}

image

Throwing from within a ValidateScript block will now correctly associate the message to the parameter in the frontend.

image

Script Editor

Updated terminal colors for better readability

image

image

Fixed an issue where the script editor's search input would not focus after using the shortcut ctrl+shift+f or ctrl+shift+p

The script editor now has the ability to view previous changes to the script.

image

Diff Editor UI

image

Remote Control

  • In remote control on mobile devices, the virtual keyboard button is now a toggle.
    • The virtual keyboard will remain visible until toggled off.
  • Fixed an issue in remote control for some browsers (e.g. Firefox) that was causing a "Paste" button to constantly pop up.
  • Fixed an issue where remote control input would stop working after a file transfer.
  • Fixed a bug in remote control that would sometimes cause input events to fire incorrectly.

Preflight Scripts

Added the ability for an MSP user to disable specific local or global preflight scripts from executing. A toggle has been added in the script editor when viewing a preflight script to enable or disable it.

image

Dynamic Integrations

  • Added the capability for Dynamic integrations to specify a custom refresh interval for GetAgents job via the new JobSettings attribute over default period of 1 hour. ex: [JobSettings(PeriodMinutes = 5)]
  • Fixed an issue where Get-ProviderInfo would fail to return Configuration form data for dynamic integrations.

N-Central Integration

  • Fixed: This integration has recently started experiencing issues. The requested operation requires an element of type 'Object', but the target element has type 'Array'.

On the Registry tab, you can now search for keys, value names, and value data.

image

Localization and Branding

Added the option to use .NET time formatting strings on Immy emails from the Brandings page

image

Integrations

Integrations now allow capabilities to be excluded

image

Improvements

  • Minor UI padding improvements to computer list
  • We no longer include the AzureAD module in every metascript's runspace. A script now has to call Import-Module AzureAD if it wants to use Azure AD commands. This reduces our memory footprint from 7MB to 4MB per script invocation.
  • Improved the load time of the actions tab on the tenant details page
  • Improved the load time of "This software has been recently used in X actions/deployments" data.

Bug Fixes

  • Fixed an issue with logs not expanding when toggling the computer details page -> actions tab row details
  • Fixed an issue where saving a software would sometimes clear the selected configuration task
  • Fixed an issue with deployments targeting tags not displaying the saved tag correctly
  • Fixed an issue where searching in the script editor did not allow for certain special characters
  • Correct the color of invalid input field warning icons
  • Fixed an issue where agents retrieved from some dynamic integrations were never re-attempting identification on failure or when specified to retry
  • Fixed an issue in the software prerequisite builder where you could incorrectly specify "Install Software A if Software A is installed".
  • Fixed an issue where onboarding only tasks could not be rerun
  • Fixed an issue loading the detected software report page
  • Fixed an issue with the new computer software tab not showing
  • Fixed an issue where the function script cache was not invalidating when creating new function scripts
  • CW Automate agents will now properly be reassigned to the successor computer when a machine is deleted
  • Fixed an issue that could lead to app crashes when Invoke-AtomicCommand cmdlet attempts to cancel script execution due to requested cancellation.
  • Introduced a new PowerShell cmdlet, Clear-ImmyPrimaryUser, to allow clearing the Immy primary user ID from a computer.
  • Fixed an issue where filter scripts could not use Get-ImmyAzureAuthHeader
  • Fixed an issue where Get-ProviderInfo would fail when targeting static integration types.
  • Get-ProviderInfo now doesn't throw terminating errors for Integration types that don't exist to simplify usage patterns.
  • Improved error handling and logging for the Send-ImmyEmail cmdlet
  • Added the ability for Add-UriQueryParameter to remove existing query arguments that match input names to prevent arrays from being formed via OverwriteParameters.
  • Fixed an issue where Stop-ImmySession would not stop the session correctly
  • Forms generated from PowerShell parameters now load in 1/3 the time
  • Debugger->Parameters panel updates automatically as changes are made to the script

0.64.1

Released 05/10/24

Improvements

  • Increased detected-software uninstall string column size in the database to prevent issues with some software objects not being created
  • Fixed a transient bug with notifications occasionally failing to save
  • Optimized memory and db performance when running scripts by relying on an improved cache of all available function scripts. The cache is busted after any function scripts are modified
  • Computer and Tenant software tab now has a grid view for direct access to software data

Bug Fixes

  • Fixed a bug preventing users from entering new immy instances
  • Fixed a bug preventing the maintenance action duration timer from incrementing.

0.64.0

Released 05/08/24

Azure Domain Splitting

Azure customers can now be split into multiple Immy tenants from the Azure Customer Mapper

You can select one or more domains to link to an Immy tenant. Azure users whose UPNs match those domains will then be synced into the domain-linked Immy tenant instead of the default Immy tenant.

Splitting an Azure customer on domain will also automatically set the domain-linked Immy tenant as the "child" of the Azure customer's default Immy tenant, so that deployments targeting the parent can propagate to the domain-linked tenants

Child Tenants

ImmyBot supports sites/location by allowing you to set a parent/child relation between tenants. You can set the parent tenant as a batch action on the tenant list page or from the edit tab on a tenant's details page.

User Affinity Table

User Affinity results are now exposed under Reporting -> User Affinity and on the computer's details page.

Deployment Page Changes

  • Deployments for software linked to an integration can no longer specify configuration parameters.
  • For software linked to a provider, the deployment configuration parameters are now inherited from the linked integration.
  • This helps keep sensitive data like API keys and passwords private by not displaying the information in the deployment configuration parameters and instead storing the information in the integration.

Deployment Migrations

  • GLOBAL software linked to an integration can now automatically migrate data out of relevant deployments and into a new or existing integration.
  • All GLOBAL software linked to integrations with the "Production" tag will be migrated.
  • Added a new App Preference, "Allow Beta Integrations to Migrate Deployments".

Improvements

  • Any software can now be selected for install/uninstall in "Installation Prerequisites"
  • Added parent-tenant-assignment batch action to the Tenants list
  • Added parent-tenant column to the Tenants list
  • Removed ability to deploy/preview cross-tenant computers on the deployment details page from MSP non-admin users that don't have the "can manage cross tenant deployments" permission
  • Added an audit log that records when the application starts up
  • Added an excel export button to the computer inventory scripts report table
  • Increased the timeout for Expand-ZipFile from 1500 to 3600 seconds
  • After updating a user, we now invalidate the cache for that user so the changes are propagated immediately
  • Setting the primary user for a computer now shows up in the audit table. This includes the User Affinity Job and PPKGs that have a primary user set on the installer.
  • Added Chassis Types to our initial inventory so newly created computers don't have the "Unknown Computer Type" badge
  • Decreased PowerShell execution time by optimizing module loading UI improvements in line with what's desired by support and most useful to users -Alerts added as seen fit by support to better inform the user submitting a ticket.

Bug Fixes

  • Fixed an issue preventing software from being selected in "Installation Prerequisites"
  • Fixed an issue with the dashboard table headers not loading correctly
  • Fixed an issue where moving a computer that had an immy agent to another tenant would cause the agent to be deleted if you were to delete the original tenant the computer was assigned to
  • Fixed a possible null reference exception that could occur when executing scripts over the CW Automate agent
  • Fixed an issue preventing integration inventory scripts from running.
  • Fixed an issue with CW Control target assignments saving the incorrect value for Control secondary groups
  • Fixed spelling of "invetory"
  • Fixed an issue with the dedupe inventory script failing with "System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation"
  • Added a missing comma in the meta robots attribute
  • Fixed an issue setting the primary person from the user affinity job
  • Fixed ProviderNotFoundException thrown by PSScriptAnalyzer
  • User cannot cause an error by submitting a ticket with the technician access box checked even as a non-admin. They can no longer check the box as it is grayed out.

0.63.3

Released 04/17/24

Bug Fixes

  • Fixed an issue setting the primary person from the user affinity job

0.63.2

Released 04/16/24

Improvements

  • Dynamic Integrations now allow you to implement ISupportsClientGrouping. This is useful when integrating with PSAs as clients can be grouped by what products they pay you for or the types of agreement they have.

Bug Fixes

  • Fixed an issue where rekeyed/soft-deleted agents would throw an error whenever we would update their status to online (due to a unique constraint violation in our database)
  • Fixed an issue where instances may not reliably automatically update when Days to wait after update is available was set to an interval longer than our typical release schedule.
  • Fixed an issue that was causing new devices to fail during registration.
  • The primary sidebar now automatically closes and opens when resizing between the desktop and mobile view
  • Resumed sessions will now execute immediately if Offline Behavior is set to Apply On Connect and the execution time has already passed. Before, it would re-schedule execution at the same time the next day.

0.63.1

Released 04/15/24

Computer Registry Tab

We have introduced a new tab on the computer details page that lets you remotely navigate the computer's registry and generate configuration tasks from selected values.

image

More functionality is expected to get shipped with version 0.64.0, such as the ability to search and create/edit/delete registry entries.

Improvements

  • All users can now see the maintenance item ordering page. Only MSP users have the ability to update the ordering.
  • After identification, a computer now runs full inventory immediately with priority.
  • Dynamic Integrations can now use dynamic parameters
  • You no longer need to emit [opresult]::Ok(); in your Integration's Init method
  • You can now create a script directly from the Registry tab. Afterward, you're sent to the New Task page with the script pre-selected.
  • Added padding to stage indicators on the session table
  • Added regex validation to the software page
  • Added the ability to run user scripts from the computer terminal tab.
  • Non-terminal errors/warnings coming from a Powershell host starting up will get pushed out as warnings in the console.
  • Removed parallel execution of inventory scripts when run through scheduled sessions. This should improve performance when we have the maximum number of sessions running at once from schedules
  • Depreciated User Action triggers has been fully removed to prevent confusion.
  • When immy restarts, it will now re-enqueue already running sessions first, then pending sessions, and then finally created sessions

Bug Fixes

  • Fixed an issue where the user affinity job was assigning a primary person to a computer, even when the person was from a different tenant than the computer
  • Fixed an issue where an action's duration would continue to increment when a session was completed while the action was still running
  • Fixed an issue where the spinner icon in the Deployment Detection button was broken
  • Fixed an issue where loading a computer detail page would sometimes throw "InvalidOperationException: Sequence contains no elements"
  • Fixed an issue where schedules targeting CW Control secondary groups become could become borked when a CW Control company was renamed
  • Fixed an edge case issue where a scheduled job that's in "Pending Connectivity" status could run concurrently with a newly-created onboarding task of the agent is reinstalled with "automatic onboarding" enabled.
  • Fixed an issue where a software could incorrectly have a prereq on itself
  • Fixed a bug where it was possible to encounter a Pipe is broken exception while trying to execute scripts on a machine due to a possibility of the agent attempting to use a Powershell host that has faulted/exited recently before we could detect it.
  • Fixed a bug that lead to User-context scripts to incorrectly use the System-context Environment variables (such as TEMP, USERPROFILE)
  • Fixed an issue where the "show more" sidebar dropdown would collapse when selecting the notifications link
  • Scripts no longer appends unwanted prompt query param values to your new-OAuthConsent -ExtraQueryParams @
  • Fixed an issue with re-ran actions incorrectly failing due to missing required parameters when they were present in a deployment
  • Fixed an issue where msp non-admins could not view cross-tenant deployments
  • Fixed an issue where msp non-admins could see access request notifications when it should have been admin only
  • Fixed an issue with incorrect breadcrumbs showing on the schedules list page
  • "User Action Trigger" dropdown have been removed in the Script Editor

0.63.0

Released 04/02/24

Automatic Agent Update Changes

The preference to enable automatic agent upgrades has been added back.

We no longer rely on MSI installers to automatically update the immy agent. Instead, we copy the ephemeral agent binary into "C:\Program Files (x86)\ImmyBot" whenever we detect that the agent binary is on an older version. Logic has been put in place to protect agent installations from breaking due to failed upgrades. Overall, the automatic updates should be more resilient.

Notification Table Improvements

  • Severity is now the left-most column.
  • Added icons to the Severity column.
  • The Created column is now hidden by default.
  • The column chooser is now visible.
  • Table is ordered by updated date by default.

Improvements

  • Added filters to the dynamic integration types page to show "local/global" integration types and to show "developer/alpha/beta/production" release stages.
  • New Integration scripts come prepopulated with a working example
  • Changed the Resolved column in the notification table to an icon instead of a checkbox.
  • Added new notification for deployment migrations.
  • Release notes are now available to all users on the System Update page.
  • The deployment table can now be exported to excel!
  • Added an icon to integration cards on the integration list page to indicate it has a non-production release tag
  • Added a release tag badge to the integration details page
  • The Test-PendingReboot script used in maintenance sessions is now in global.
  • Added release tag selector to the provider link list page
  • Added missing datetime tooltips to computer timeline events and the session created date on the session list page
  • Added the year to all timestamps in the session logs view
  • Agents now get updated in the database when the integration reports a new manufacturer
  • Updated error message when navigating to a computer that does not exist to read: "Computer with id xxx was not found".
  • Updated error message when navigating to a computer that has been replaced by another computer to read: "Computer with id xxx has been replaced by computer with id xxx"
  • Updated error message when navigating to a computer that has been deleted to state: "Computer with id xxx has been deleted."
  • The tenant software page UI has been updated to contain new views for deployments, computers, and persons for each found software.

Bug Fixes

  • Fixed an issue in the script editor about The term 'Invoke-ScriptAnalyzer' is not recognized
  • Fixed an issue where some PSPipeHosts that failed to connect wouldn't provide as much useful data for diagnostics.
  • Forms with Password inputs no longer autofill and replace content in other fields
  • Integrations with no parameters (like the CW Manage Pod) no longer show “Please correct above errors” error message
  • Resolved an issue where some machines were experiencing ephemeral port exhaustion when Ephemeral agent was in a retry loop.
  • The Text on the deployments no longer includes the tenant name for cross-tenant deployments. This gave users the false impression that the deployment was tenant specific when it was not.
  • If an Immy tenant was linked to an Azure customer but accidentally set as Partner, then unlinking it from the Tenant Details Azure tab and linking it again from the Azure Customer Mapper should now correctly reset the tenant to Customer
  • Fixed a bug where tenant consented-at/consented-with details were not updating after consent until the page was refreshed
  • Fixed an issue where uploading global software failed
  • Fixed an error that occurred when targeting CW Automate groups on a deployment
  • Fixed some exceptions that were occurring during inventory
  • Fixes css inconsistencies on tenant software list, devextreme, and ImmyLink
  • Fixed an issue where bits transfer errors were not being shown in the session log output
  • Fixed an issue where the ISO option was now available in the immy agent download modal
  • Fixed a bug where some machines fail to return OS install date due to culture issues resulting in a failure to identify.
  • Removed the Default Hourly Inventory Task from the UI since we only support running inventory on a schedule once per day
  • Fixed an issue where agent integration syncs were unable to bring back agents that were deleted. Most commonly found from CW Control and CW Automate.
  • Fixed an issue where deleted agents were still showing up on the Integration -> Agents tab

0.62.6

Released 03/22/24

Bug Fixes

  • Fixed a performance issue with intellisense in the script editor that was causing high CPU
  • Fixed a common exception that was occurring during scheduled inventory jobs

0.62.5

Released 03/19/24

Bug Fixes

  • Fixed an exception that occurred when analyzing a package by url

0.62.4

Released 03/12/24

Bug Fixes

  • Fixed a bug where instance-updated emails were not getting sent after updating ImmyBot to the latest version
  • Fixed an issue with updating maintenance tasks where it sometimes complained about certain fields being required when it should not have
  • Fixed a bug where reboot pref would not update on schedule page

0.62.3

Released 03/12/24

Bug Fixes

  • Fixed an error that occurred when uploading a license
  • Fixed an error that occurred when creating a deployment for a CW Automate Group or CW Control Secondary Group

0.62.2

Released 03/07/24

Bug Fixes

  • Fixed an issue with N-Central where the dynamic version script would not run and prevented installs and updates

0.62.1

Released 03/06/24

Bug Fixes

  • Fixed an issue creating/updating tags with limited tenants specified
  • Fixed an issue creating/updating software licenses

0.62.0

Released 02/29/24

Bug Fixes

  • Fixed an issue where computers that failed to run inventory were incorrectly being classified as workstations/desktops by default. This was causing workstation deployments to incorrectly resolve to the computer.
  • Fixed an issue with application errors disappearing when clicking the "Show Details" link
  • Chocolatey packages no longer fail detection (Removed -lo from Choco command)
  • Fixed issue where even though an "Agent Integration" was specified with GetDynamicVersions implemented, Immy would not run GetDynamicVersions unless the "Use dynamic versions" checkbox was checked
  • Fixed a long standing issue where The Immy Agent/Ephemeral would drop & invoke an unsigned powershell script named Invoke-PSPipeHost.ps1. This would cause some AV & EDR to not like us.
  • Fixed an issue where some computers were stuck in the onboarding status after completion of an onboarding session
  • Fixed an issue where the stale link in preferences was not working
  • Fixed a minor issue in the Application Locks page that would show all active locks fetched as 'cancellable' when they may actually be 'terminal' when requested.
  • Fixed a bug where changing the slug from tenants list page for an MSP tenant would unset the tenant's MSP status
  • Fixed a null reference exception that could occur in the NCentral API client
  • Fixed several null reference exceptions that could occur when loading certain pages
  • Fixed a null reference exception that could occur when parsing a dynamic version result
  • Fixed some null reference exceptions that were occurring sending commands to CW Automate
  • Fixed a null reference exception that was occurring for immy agents attempting to execute scripts over the IoT Hub even when the hub has been removed
  • The detected computer software table now includes software that have SystemComponent set to 0 in the registry.

Improvements

  • Added a new reporting page called Computer Inventory Scripts that contains the latest results of all inventory scripts ran against computers
  • Added more details to exceptions coming from integrations to help diagnose issues
  • (Developer improvement) We have integrated new security testing into our code repository to help us detect potential vulnerabilities before they are released.
  • The version text in the download agent button on the sidebar has been removed to avoid confusion. The agent version is still displayed in the modal that shows after clicking the button.
  • We have exposed the immy.bot API under your-instance.immy.bot/swagger using the Swagger OpenAPI spec. https://swagger.io/specification/. Although officially this is not support, it may be useful if you are attempting to use our api in a 3rd party application.
  • Edit Software: Advanced items with overridden (non-default) values are visible without expanding Advanced
  • Edit Software: Selecting an Integration hides Version/Dynamic Versions UI to make it more obvious that the expectation is for the Integration to handle this logic.
  • If a software is linked to an integration type but the deployment is missing the IntegrationId, but only one integration of that type exists, Immy will fall back to using that single integration.
  • Updated ImmyBot references to immy.bot
  • Removed deprecated IoT Hub code and dependencies from the latest version of the ImmyBot Agent
  • Added a help button explaining global vs local on the Software and Tasks pages
  • Removed progress bar from System context scripts that don't specify PercentComplete. Only the most recent ProgressRecords show status
  • You can now create your own computer inventory tasks. In another release we will add the ability to represent them in the UI. For now, you can see results in the Computer Inventory Table and query them in filter/meta scripts.
  • Added more maintenance options to the computer batch actions. In addition to running full maintenance, you can now run inventory scripts, deployment resolution, and deployment detection.
  • On the computer details page toolbar, "Re-Inventory" was renamed to "Deployment Detection"

0.61.6

Released 02-21-24

Improvements

  • The session logs for verifying the installed software version now include the detected version
  • Inventory is now always performed for full maintenance sessions to ensure inventory data is as up to date as possible before resolving deployments

Bug Fixes

  • Fixed an issue with tags not immediately displaying in the tenant list
  • Fixed an issue with some checkbox values not updating after the first click

0.61.5

Released 02-15-24

Bug Fixes

  • Fixed an issue where users were unable to toggle Remote Control tenant preferences
  • Fixed an issue with non-MSP users unable to load the deployment list
  • Fixed an issue with the "Show dismissed recommended deployments" selector not working
  • Fixed an issue with manually identified agents always being associated with the MSP tenant instead of the selected tenant

0.61.4

Released 02-12-24

Bug Fixes

  • Fixed an issue with the script editor not showing output when loading a script for the first time.

0.61.3

Released 02-09-24

Bug Fixes

  • Fixed an issue where target assignments for an azure group were failing with "PostgresException: 42703: column i.deleted_at does not exist"
  • Fixed an issue with intellisense not starting when opening a script from a maintenance session

0.61.2

Released 02-08-24

Bug Fixes

  • Fixed an issue with not being able to update the value of licenses

0.61.1

Released 02-08-24

Bug Fixes

  • Fixed an issue in the ImmyAgent where it was attempting to connect over the IoT Hub even if the agent was never registered with the IoT Hub. This issue manifested in the agent never showing up in pending list.

Improvements

  • The latest version of the ImmyAgent removes references to the IoT Hub since it has been deprecated.
  • For agents that experienced the bug with the IoT Hub mentioned above, they will now be able to successfully connect to Immy and show up in the pending list. Some agents will automatically get associated to their existing computers while some may need to be manually identified to the correct tenant.

0.61.0

Released 02-05-24

Deployment Notes

Deployments can now have notes. After saving a deployment, notes can be added to it.

image

A notes column has been added on the deployment list page. If it is not visible by default, click the image icon to add it.

image

Computer Excel Export

Located under Reporting -> Computers or at the URL /reporting/computers.

A new report table has been added for "Computers" that can be used to generate an excel report of computers by clicking the xlsx button.

When the table is filtered, only the results in the filter will be exported.

Soft Delete Computers & Agents

Deletion of computers and agents are now performed using a soft-delete.

The current exceptions are:

  1. Deleting tenants: which will cascade delete all computers for the tenant
  2. Deleting integrations: which will cascade delete all agents for the integration

General Improvements

  • The system status page now refreshes automatically every 5 seconds
  • Updated the deployment list column visibility defaults to hide the software version and disabled columns and show the notes column
  • Most recent Write-Progress -Activity <value> now shown on activity detail and current activity overview
  • Added system preference to exclude Chocolatey software results from the deployment software search
  • Dymamic Integrations can implement required interface for running scripts on target
  • Notifications for agents requiring a manual decision are now automatically resolved if there are no more agents that require a manual decision
  • Added warning messages to the deployment screen when required scripts are missing
  • Improved performance by fixing possible memory leaks that could occur during maintenance sessions
  • You can now add a person selector as a dropdown parameter via New-PersonParameter
  • Newly generated Powershell install scripts for Immy Agents now point to an always-latest installer binary 🥳🎉
  • Computer Software report is now generated using excel instead of csv. Also, the export now only exports rows matching the current filter.
  • Added up to 3 retry attempts when attempting to set the unique identifier for a device during identification
  • Added logic to track computers that have been wiped and replaced by other computers. This isn't shown anywhere in the UI as of right now, but can be added in the future
  • Standardized order of Filter Script and Metascript between Cross Tenant and Single Tenant selections when creating deployments
  • Improved performance of saving maintenance session related data to the database
  • Removed word assignment from deployment page data column.
  • Added autocomplete="off" to dynamic form inputs to prevent browsers from injecting unwanted values on deployment and integration pages
  • The "New" software button on the software list page now links directly to the software upload page
  • ISupportsMaintenanceMode for dynamic integrations now disables maintenance mode at the end of sessions
  • Versions details page will automatically show overrides if any are present
  • Software details version table now displays when the version has overrides
  • Updated the software details detection method table to pull results from the detected computer software table used in reporting. This provides better performance and unifies the results between this feature and the reporting.
  • Added warning tooltips to computer overview page for unsupported OS and PowerShell versions
  • Added security exclusions confirmation on session support request page
  • Added hidden column to the detected computer software table that shows the potentially matched global software id
  • Added new report page for computers with the ability to export to excel
  • The "Show Identification Logs" button in the computer page / pending tab is now aligned to the top right instead of in the middle of the row, and renders above any potential errors
  • Application Locks (used for things such as Invoke-AtomicCommand, Invoke-CommandCached) are now visible & controlable via the new 'Application Locks' page under 'Show More'.

Bug Fixes

  • When viewing page on mobile, the sidebar is now hidden on navigation change
  • Fixed an issue where the filter on the tags list was not working as expected
  • Fixed an issue where adhoc maintenance sessions marked as pending connectivity were never being resumed
  • Agents Requiring Manual Decision Notification shows resolved text when no more agents require a manual decision
  • Fixed duplicate text under the Script Path application preference
  • Fixed an issue where checking if we are within business hours was not getting cached, causing additional unnecessary checks
  • Fixed an issue where the within business hours session log was not getting emitted
  • Fixed a deadlock issue that could occur when cancelling a session
  • Updated copyright date to be dynamically set
  • Fixed an issue where New-MediaParameter values were not being set to the path to the downloaded file
  • Fixed styling of access request notifications
  • Added missing border to the top of the Azure notification group header
  • Corrected inconsistent padding of Azure notification group header
  • Fixed issue with missing bottom padding between integrations on integration list page
  • Fixed an issue where some filter scripts were not specifying the cloud context
  • Integration Audit Entries no longer get hung and show no output when clicking details
  • Intellisense no longer stops working when you switch between script tabs
  • Status spinner no longer spins forever when in Stopped state
  • Fixed an issue where multiple ephemeral agents were possibly spinning up during identification of a device
  • Fixed a visual issue where loading a schedule would incorrectly show "Sunday" as the day to run when the value was not "Sunday"
  • Fixed an issue where a duplicate streaming button would show up when streaming agent identification logs
  • The primary user deployment is now hidden from the deployment list since it is a mandatory deployment
  • Updated uninstall help text to reflect existing behavior
  • Fixed an issue where brandings that didn't specify a logo or header image would sometimes still show a broken image
  • Fixed an issue where we were not checking if the port had been specified for an SMTP and resulted in an obscure exception for the end user if the port value was missing
  • Fixed an issue where the person dropdown parameter in onboarding tasks were not limited to persons in the computer's tenant.
  • Fixed an issue on the software upload page, where the validation message for the software version was not showing up.
  • Fixed an issue on the Tasks list page where filtering to Computer tasks were incorrectly including configuration tasks
  • Fixes incorrect PPKG text in download modal
  • Fixed an issue where scripts could fail with FileNotFound.
  • Fixed issue with detected computer software table where it would exclude registry entries that had duplicate display names, but different versions, or some being linked to global and not others
  • Added missing timestamps when hovering over "x days ago" text throughout the application
  • New software versions will now default to the Inherited upgrade strategy
  • Fixed an issue where some Win7 machines were failing to start Ephemeral agent.

0.60.0

Released 01-09-24

Automatic ImmyBot Version Upgrades

When a new version of ImmyBot is released, you can now specify if you want to automatically update to that release after a specified amount of time. This behavior is configurable in preferences.

image

Release Channel

The release channel determines what versions of ImmyBot are available to you. You can now choose which release channel you want to subscribe to.

The available channels are: Alpha, Beta, and General.

  • Alpha: This channel contains releases that have passed development but may still be unstable. Only use this channel if it's absolutely necessary for a critical fix or to test brand new features and provide feedback.
  • Beta: This channel is for early adopters and contains releases that are in the final rounds of testing. Use this channel to test new features and provide feedback.
  • General: This channel contains releases that have been tested and are ready for general use. This is the recommended channel for stability.

All instances will default to the General channel.

You can change your channel on the System Update Page.

image

ImmyBot is on .NET 8

The ImmyBot backend is now running .NET 8. While this doesn't introduce new features to end users, it does provide better performance and newer development features that benefit ImmyBot.

Cross-Tenant Deployment Change Requests

A new application preference has been introduced that when enabled will require MSP non-admin users to submit change requests when creating or updating cross-tenant deployments.

image

On a per user basis, you can additionally opt-out of requiring change requests by assigning the user the following capability from the edit user page:

image

Change requests are submitted from the deployment details page in the same area you would normally create and update a deployment.

image

Once submitted, the change request can be reviewed in a read-only format. MSP non-admins will have the option to edit the change request, while MSP admins will have the ability to approve or deny the change request.

MSP non-admins see

image

MSP admins see

image

All open change requests can be seen from the deployment list page.

image

Improvements

  • Added hidden column to the detected computer software table that shows the potentially matched global software id
  • The tenant software search tab on the tenant details page now renders as a filterable table with the ability to export
  • Automatic ImmyAgent updates are now enabled by default
  • When creating a new deployment, selecting Onboarding Only will now default to "Value from: deployment".
  • Changed notifications list page to hide resolved notifications by default
  • Deployments page will now default to grouping by tenant
  • IntelliSense can be restarted without refreshing the browser

Bug Fixes

  • Fixed issue with some property text in the audit table colliding with other property text
  • Fixed issue where unmatched software in the detected computer software table were not filterable
  • Fixed an issue where detection could fail with "Exception of type 'CwAutomateProvider.CwAutomateHttpException' was thrown." when checking for windows patching. It will now skip windows patching, provide a more useful message, and continue the session.
  • Fixed an issue where creating/updating deployments for integration group targets was not saving the selected tenant
  • Fixed an issue where starting ephemeral agent would cause an error on some older machines.
  • Fixed an issue where the getting started wizard was popping up even when a computer had already been added
  • Fixed an issue where the software repair custom script was not showing up under the Repair Strategy label on the software details page
  • Persistent Agent main connection will now more aggressively obey System Web proxy when attempting to connect.
  • Fixed an issue where Immy Agent EXE downloads would produce a corrupted binary.
  • Fixed an issue where upgrade code and product code were failing to match to global software during detection
  • Fixed issue where Azure Tenant Problem notifications were being created when there were not actually any problems

0.59.3

Released 12-20-23

Bug Fixes

  • Fixed a caching issue where adhoc deploying to multiple computers and then re-running a session would sometimes trigger the session for a different computer
  • Fixed an issue where msp admins would sometimes show up as MSP Tenants
  • Fixed an issue with the detected computer software table where it was not updating information after re-running inventory
  • Fixed an issue where configuration task actions would sometimes not showing the detect stage progress line

0.59.2

Released 12-19-23

Bug Fixes

  • Fixed issue with showing media on the media list page
  • Fixed issue on the tenant details page where the batch actions button on the computer table was not working
  • Fixed issue with calls to Get-ImmyComputer from metascripts where it was incorrectly excluding computers that were excluded from maintenance. This check is only supposed to happen when resolving computers for a deployment or a schedule.

0.59.1

Released 12-13-23

Bug Fixes

  • Fixed issue where Computers and Tenants were still being included in the preview for the Edit Deployment screen even though the tenant had the "Exclude from Cross Tenant Schedules and Deployments" preference set
  • Fixed a caching issue where scheduled maintenance sessions were not always picking the correct deployment

0.59.0

Released 12-12-23

Detected Computer Software Export

We added a page to view all computer detected software and a button to export it to a csv file.

You can access this page from /reporting/detected-computer-software. Values from this table are populated from inventory.

OAuth Parameters

Added the ability to create and select auto-refreshing OAuth tokens as script parameters




Added a button to the Azure Partner Settings page to pre-consent customers to the default or custom app registration via the Partner Center API

This removes the need to provide consent for each customer manually using an admin account from the customer


Added an OAuth Token Acquisition mechanism to allow Partner admins to give ImmyBot consent to use the Partner Center API


Automatic ImmyBot Agent Updates (Alpha)

When a computer attempts to run a script and we establish an ephemeral agent connection, we now also upgrade the ImmyBot Agent if it is outdated. This is currently in alpha and can be opted into from the Application Preferences page.

Improvements

  • You can use the new ScriptTimeout attribute to override the default execution time of 60 seconds in integration scripts (Supports up to 300 seconds)
  • Integrations supporting ISupportsHttpRequest now display the HttpRequest Uri
  • Added integration release stage badges to indicate whether an integration is in the Alpha, Beta, or Production stage.
  • Uninstalling software no longer enforces required parameters specified by the deployment.
  • [Alpha Opt-In] Write-Progress -Activity "Activity 1" -Status "Migrating" Calling Write-Progress with both Activity and Status parameters creates a new row on the action in the session. This helps visualize the progress of long running tasks.
  • Added BitLocker Status to the logical disk tab on the computer details page
  • Added TPM Version to the overview on the computer details page
  • Added disabled deploy button next to configuration tasks with a tooltip explaining that they cannot be deployed directly. The missing deploy button was causing confusion.
  • Added a docs link for agent identification failures under the computer page -> pending tab.
  • Updated help text of desired software state - Latest Version, to read "Will install/update the software to the latest version"
  • Added a link to the ordering page from the deployment list page
  • Updated the execution order help text to read "All tasks that are limited to onboarding computers will be executed at the beginning of the session in the onboarding stage, following the sequence in which they are listed. Once the onboarding process is complete, we will proceed to execute all other actions, also in the order they are listed."
  • Added 'Azure Tenant Problems Detected' notifications to indicate errors and other detected problems related to Azure tenants
  • Made notification creation more performant
  • Added User preference area and moved the theme toggle to it.
  • Improved some UI color settings
  • Creating, updating, and deleting schedules show up in the audit table.
  • Maintenance tasks can now specify an integration to link
  • Fixed an issue on startup that was causing some startup jobs to not run
  • The logic that ensures we have online agents before running a script on a computer no longer runs if we have an active ephemeral agent connection
  • Added AssignmentScope as a script parameter. Possible values are CrossTenant, SingleTenant, and Individual.
  • When ImmyBot restarts, we no longer cancel sessions due to them being considered "outdated". This was an old piece of code that was there to prevent accidental reboots during business hours. This check is no longer needed since we check for active hours and business hours during the maintenance session when deciding if the computer needs to reboot.
  • Important - ImmyBot agents that are installed with automatic onboarding will now ALWAYS automatically onboard. Before, we would optionally not perform onboarding if the agent resolved to an existing computer that had previously run at least one maintenance session.
  • Removed converted parameter values from parameter validation responses since it could possibility contain sensitive data and the value was not being used on the frontend
  • Invoke-CommandCached and Invoke-AtomicCommand cmdlets are now available for use inside Filter Scripts.
  • Action errors regarding missing/failed software prerequisites now show the software's name instead of the type and identifier.
  • Changes to software prerequisites now show up in the audit table
  • Added a link to the ImmyBot community forum to the navbar
  • Minimizing the script editor persists any ephemeral tabs you had open.
  • Extended the ephemeral agent disconnected text to say "This computer does not have an ephemeral agent. An ephemeral agent will connect when a script is run against this computer."
  • Several new Azure-related notifications have been added
  • Fixed an issue where multiple sidebars could be showing and overlapping at the same time
  • Parameter descriptions are now always visible. Before, they were only visible if you were overriding the default value.
  • Improved styling of default value key/value pair parameters on the deployment form
  • Improved serial execution of maintenance tasks by adding a more visible locking mechanism. You can now see who the currently executing computer / session is.
  • Added a check when creating or updating a deployment that warns you when a duplicate deployment is detected. You have the option to replace the existing deployment or fix the newer one such that it is no longer a duplicate.
  • Schedules and Adhoc Deployments now apply batching to create the maintenance sessions. We've seen about a 6x improvement in speed in creation.
  • Debounced script editor changes to prevent Intellisense crashes
  • You can now save scripts that have syntax errors by acknowledging the confirmation modal. Useful for saving unfinished scripts or scripts that may not actually have syntax errors when run on an endpoint
  • Improved ImmyAgent setup when deploying new instances that should result in fewer errors and faster instance setup
  • Improved performance of session cancellation by simplifying the database queries
  • Adding an invisible Formatter, so that information can be easily hidden. Using this to hide ParameterSetBinding messages.
  • In the Debugger section Parameters and Variables, the subsections are now open by default
  • In the Script Details section for the Type dropdown, the Software Auto Update element has been removed
  • Added integration capability ISupportsAgentDownload. Allowing integrations to provide their own "Download Installer" script.
  • Added integration capability ISupportsAuthenticatedDownload. Allowing integrations to provide authentication information without leaking sensitive information.
  • N-Central integration has finally graduated from Beta status, and can now be found in the Integrations page 🎉

Bug Fixes

  • Fixed an issue where some ImmyBot tenants linked to Azure customers were getting reset to Partner type within ImmyBot
    • For Customer tenants that are erroneously set to Partner in ImmyBot, you can fix these by finding the customer on the Azure Settings page, and unlinking/relinking it
  • Fixed an issue where full maintenance schedule sessions did not have the "Full Maintenance" tag in the sessions table Fixed an issue with N-Central integration failing to re-authenticate after ~24hrs of running.
  • Fixed an issue where starting ImmyBot remote control for an outdated agent was kicking off a session that contained actions other than the agent update.
  • Fixed an issue with license descriptions now showing on the deployment page
  • Fixed potential null reference exception on Deployment page when ValidateScript is used
  • Fixed an issue where wiped computers were not being treated as wiped if an existing computer was found. A wiped computer is one where the hostname and OS install date are different that the computer we already see inside of ImmyBot.
  • Fixed a divide by zero error that could occur while computing a software installer's download speed.
  • Set the audit user text to show the user's email address if the user does not have a first or last name specified
  • Fixed an issue where some ImmyAgent & Ephemeral Agent binaries included some unsigned assemblies, falsely triggering some security tooling like ThreatLocker.
  • Fixed an issue where Immy Starter plans were able to select the schedules nav item
  • Fixed an issue where resolving agent identification issues resulted in "404 - entity could not be found."
  • Fixed an issue where resolving agent identification issues with "Let Immy Try again" was not doing anything.
  • Fixed an issue where some ImmyBot agents were failing to connect to ImmyBot when it was re-installed
  • Fixed an issue where only the ImmyBot team could view global dynamic integration types
  • Fixed an issue with scheduling the user computer affinity job once a day
  • Removed some old migration code that was delaying startup and potentially causing issues
  • Fixed an issue where some Immy Agent upgrades would leave installs dead in the water due to a config parsing issue.
  • Fixed an issue where sometimes analyzing an installer package would cause an IOException.
  • Fixed an issue where a software prerequisite would not be installed if an "update if found" deployment for the prerequisite resulted in "no action" because it was not found on the endpoint. Now, an install action for the prerequisite will be created anyway.
  • Fixed an issue where selecting text on expanded script-runs would collapse the script
  • Fixed an issue with fetching CW Manage agreement products where the deployment would show "Server error. Please contact your Administrator." Occurred when CW Manage attempted to return several hundred agreement products.
  • Fixed an issue running invoke-immycommand from a cloud script against a computer that would throw an error during the preflight check, "Value cannot be null. (Parameter 'psComputers')".
  • Fixed issue removing previous pages breadcrumbs on the session list page
  • Fixed an issue on the onboarding form where mandatory parameters would not show the input by default if the parameter was dynamically discovered
  • Fixed several minor issues found with the agent installer download modal and the getting started wizard modal
  • Fixed a caching issue with inserting session logs into the database
  • Fixed a caching issue with detected software from a machine
  • Fixed an issue where database queries to get a list of sorted deployments during a maintenance session were not being cached
  • Fixed an issue where the Package Analyzer would throw a The process cannot access the file error
  • Fixed issue with our script analyzer rule for detecting missing $using: in Invoke-ImmyCommand
  • Fixed the N-Central issue that keeps appearing "InvalidLoginCredentialsException: New tab request failed!"
  • ParameterSetBinding should not emit output.

0.58.3

Released 11-1-23

Notifications

Notification Sidebar

We have updated how our notification system works.

The bell icon in the navbar will provide a number of the unacknowledged notifications you have.

image

The sidebar will show when clicking this icon.

image

Notification History

You can access all notifications from the primary sidebar under "Show More" -> "Notifications". By default, it will only show you unacknowledged notifications. You can click the "reset" link or change the filter on the "Acknowledgement" column to view acknowledged notifications.

image

Silencing notifications

From the notification sidebar, you can silence notifications by the notification type or for the specific object the notification was for.

image

You can then view all of your silenced notifications from the notification history page.

image

Notification Types

We have plenty of notification types in the pipeline. Here are the notification types currently implemented.

  1. Integration Unhealthy - a notification to let MSP users know that an integration has become unhealthy
  2. Access Requested - a notification to let MSP users know that someone is requesting access to their instance of ImmyBot
  3. Large Script Output - a notification to let MSP users know that a specific script has outputted a large amount of data. When scripts like this run during maintenance for hundreds of devices, it can easily cause high CPU and memory which leads to sluggish performance and potential crashes.
  4. Unacknowledged Recommended Deployments - a notification to let MSP users know that there are new recommended deployments that need to be allowed or denied.

Some notification types that will be coming soon include, but are not limited to:

  1. Agents Requires Manual Decision - a notification that lets MSP users know there are agents pending identification that could not be automatically resolved to a computer and require manual actions.
  2. ImmyBot Updated - a notification that lets MSP users know that ImmyBot has been updated to a newer version
  3. Cross-Tenant Deployment Requires Approval - a notification that lets MSP admin users know that a cross-tenant deployment was created or modified and needs approval from an MSP Admin. (Feature coming soon)
  4. Azure related notifications

Improvements

  • Updated variable alert on the license details page to be the same alert shown on the software details page -> license help alert
  • Added random jitter to the time we schedule some of our recurring jobs so that we reduce high database load due to all instances kicking off the jobs at the same time.
  • For maintenance sessions that target a specific item, a session log has been added at the beginning that provides the name of the maintenance item
  • Added auditing for static software versions and static maintenance task parameters
  • Schedules that target a specific maintenance item will now always create a maintenance session for every computer resolved in the schedule's target group. If the computer does not have a deployment for the specified maintenance item, then the session will complete instantly with no actions added.
  • Upgraded PowerShell Editor Services from 3.6 to 3.13
  • Batch actions sidebar now slides out underneath the navbar to not block actions
  • Batch actions sidebar background color was updated to provide more contrast
  • You can now restart Intellisense from the status bar.
    • image
  • Intellisense will restart automatically when changing script type.
  • Removed dependency on Ace.js that shaved off 366KB from the project
  • Made a slight performance change to schedule logic that should result in faster start times for schedules with many computers
  • Added a "Job Args" property to the session details page info panel that expands to show more data associated with the session.
  • ImmyBot no longer tries to run scripts against non-Pro N-Central agents
  • Added custom PSScriptAnalyzerRule with Code Action to detect and fix missing $using: scope modifier in Invoke-ImmyCommand
    • image

Bug Fixes

  • Fixed an issue with azure tenant data sync job not getting scheduled correctly
  • Fixed an issue with cloud deployments targeting tags where the session would error in a NotImplementedException
  • Fixed an issue where agent updates only maintenance sessions were not viewable by a non-msp admin even if the computer was under their tenant
  • Improve deadlock handling when integrations need to be created, removed, or re-initialized
  • Fixed an issue where users were unable to upload license files
  • Fixed an issue on instance startup where integrations were possibly initializing twice unnecessarily
  • Added a default timeout of 5 minutes to every API request made to Automate. We were not specifying a timeout before so the request could have been long-lived
  • Improved the initialization of the CW Automate integration by reducing the number of times we instantiate an API client to communicate with the Automate Server
  • Refactored the logic that handles enqueuing scripts to execute over CW Automate to prevent potential locking and add additional debug logging
  • Fixed an issue where the system status page was not showing metrics under CW Automate and CW Control when it should have
  • Fixed issue where Intellisense would be unrecoverable after selecting script type Software Auto Update
  • Fixed an issue where provider sync jobs could continually enqueue when only one should ever be enqueued at a time.
  • Fixed an issue where CWControl provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length
    • image
  • Fixed an issue where some actions would result in an error of "Invalid maintenance action type."
  • Fixed a potential issue with all providers remaining unhealthy upon server starting up
  • Improved the load time of the application on startup
  • Fixed an issue where some more known bad device ids were being used to uniquely identify a computer, e.g. ffffffff-ffff-ffff-ffff-ffffffffffff
  • Fixed an issue where ImmyAgent provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length.
    • image

0.58.2

Released 10-11-23

Audit Page

An audit page was added that MSP admins can use to view changes made to objects such as Target Assignments and Scripts. This also includes changes made to global objects. This is part one of an effort to provide more transparency around changes made to global data. This page is accessible under Show More -> Audit, or "your-instance.immy.bot/settings/audit".

Improvements

  • Get-ImmyComputer -IncludeTags from a filter script or a meta script now include the tags for the computer's tenant and primary user
  • Improved our resiliency for Redis reconnection for background jobs
  • Updated the Hangfire Service watcher to fix common issues that may occur when it restarts
  • Improved some internal logging that will help diagnose application crashes
  • Added some additional logging to detect performance issues related to CW Control connection events
  • Added support for putting an agent in maintenance mode at the beginning of a session
  • Sessions with reboot preference set to force now only force a reboot at the beginning and end of the session. Reboot checks after each action will only reboot if necessary.
  • Added the ability to toggle online status support for agents of an integration since some dynamic integrations don't support online status
  • The "Install Agent" button on the computer details page now kicks off a maintenance session instead of installing behind the scenes
  • Updated the version of our dependency on the Azure.Storage.Blobs package, which provides better performance.

Bug Fixes

  • Fixed some theme styling issues on some of the tables
  • Fixed an error in the web inspector console that was reporting BackendVersion was null
  • Fixed an issue where array parameters that used [ValidateSet] would not render the dropdown of valid values
  • Fixed an incorrect variable name in the license alert on the software details form. $LicenseFile should have been $LicenseFilePath
  • Fixed an issue where the session resume button would stay disabled if you clicked it but didn't confirm the action.
  • Fixed an issue where deployment parameters were not showing in the correct positions Fixed an issue with the Package Analyzer failing to download some software hosted behind CloudFront CDN.
  • Fixed an issue where Invoke-CommandCached would return objects slightly differently than expected, causing some unexpected behavior for scripts.
  • Fixed an issue where the "Show value view" on a parameter form would not actually show the parameter values
  • Fixed an issue with agent inventory identification where old agents tied to a computer were not getting replaced by the a newer agent
  • Fixed an issue where a phase could be considered successful if the agent went offline at just the right time
  • Fixed an issue where an agent going offline would fail a maintenance task action during the Download Installer phase
  • Fixed an issue where refreshing the computer's connected status would throw an error regarding some agents not supporting the ability to refresh an agent's online status
  • Fixed a potential null reference exception that was thrown when reloading integration types
  • Fixed an issue where dynamic integration agents were not syncing updated data, such as changed name, serial number, or osname
  • Fixed an issue with pending connectivity kicking off incorrectly for disabled/unhealthy links
  • Fixed an issue where the ImmyAgent provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length.

0.58.1

Released 09-28-23

Improvements

  • Made errors that occur while interacting with the graph api show on the frontend to help guide the user on how to resolve common Azure configuration problems
  • Added the ability to specify a docs url for dynamic integrations that will be shown on the integration edit details page
  • Added the installer download url to the session log when attempting a BITS or basic download
  • ImmyBot now defaults to dark mode unless the browser preference is set to light
  • Moved immy support access preference to the top of the preferences page
  • Made Add-UriQueryParameter no longer require -Parameter when Uri is passed in via Pipeline
  • Added the ability to trigger an agent sync from an integration on the clients tab and agents tab
  • Added support for incoming http request inspection to integration audit logging
  • Added support for non-mandatory integration method parameters
  • Dynamic Integrations that support agents can now specify whether the agent supports an online/offline status. Some integrations were defaulting to always online which caused issues with the pending connectivity logic
  • Updated session log text about retrying to fetch PowerShell version
  • Added a better error message when a dynamic version script returns a newer version than what was detected previously in the session. The message is "The dynamic version script is returning a newer version than what was retrieved the last time the script was ran. If so, re-deploy this action. We will automatically handle this scenario in a future release."

Bug Fixes

  • Fixed an issue with onboarding and deployment parameters where the form would sometimes not render due to hidden errors. The errors are now visible in this case.
  • Fixed an issue on the onboarding form where values specified on the deployment form were not considered when resolving any errors
  • Fixed a bug where only the first 300 Azure customers of a partner tenant would show up in the Azure customer mapper
  • Fixed an issue where global software -> agent integration dropdown was showing local integrations
  • Fixed a bug where linking an az customer would incorrectly set the az tenant type as Standalone, preventing usage of the graph api for that customer
  • Fixed an issue where sessions would sometimes not show the computer name, and links to the computer would result in a 404
  • Fixed an issue where a license couldn't be deleted because it was used by a deployment that was no longer showing the license selector. The selector now shows and the license can be successfully removed from the deployment
  • Fixed a rare issue where agents would fail to be synced if the integration reported multiple agents with the same agent id
  • Fixed an issue where Immybot.Agent.Shared.dll from the ImmyBot agent MSI installer was not signed
  • Fixed an issue where linking a dynamic integration client was removing other agents incorrectly during the sync
  • Fixed a bug where tenant select boxes couldn't be searched on provider client link pages
  • Fixed an issue where custom app reg could not be changed without first toggling permission level
  • Fixed an issue where reloading integration types would result in a permission error
  • Fixed an issue where the unlinked msp client banner would show up even when the msp client was linked
  • Fixed an issue that was preventing the ImmyBot agent's .dlls to be signed
  • Removed extra "$" in front of version in the dynamic version response
  • Removed the agent's client name from the agent tab to prevent confusion
  • Fixed an issue where a pending agent "Let Immy Try Agent" action was not working as expected
  • Fixed an issue where a script dropdown would show incorrect results if it was toggled to only show global scripts or toggled to only show local scripts
  • Fixed a "downlaod" typo in "Action To Take"

0.58.0

Released 09-13-23

Bring Your Own Integrations

The goal of this feature is primarily for our own use to more rapidly implement integrations with other RMMs and PSA, but we have opened it up for you to create your own integrations as well.

https://docs.immy.bot/build-your-own-integration.html

New Parameter New-OAuthConsentParameter

This parameter creates a button that will perform the oauth code authorization flow and allow you to use the response in the script.

https://docs.immy.bot/scripts.html#parameters

Agent Tracking

The Computer -> Agents tab now includes all agents, not just ones used to run scripts. This is preparation for the upcoming computer/tenant offboarding feature. Which will allow us to not only uninstall the agents from the machine but de-provision them from their respective platforms.

Metascript WebHooks

You can now receive web requests from within Metascripts.

The webhook URL is {your-domain}.immy.bot/api/v1/webhooks/{web-hook-id}, and it accepts Post and Get requests. The webhook id can be retrieved from $Hook.Id

An example scenario is this can be used to map Toast buttons to actions in ImmyBot.

powershell
$Hook = New-ImmyWebHook
+process{}

image

Throwing from within a ValidateScript block will now correctly associate the message to the parameter in the frontend.

image

Script Editor

Updated terminal colors for better readability

image

image

Fixed an issue where the script editor's search input would not focus after using the shortcut ctrl+shift+f or ctrl+shift+p

The script editor now has the ability to view previous changes to the script.

image

Diff Editor UI

image

Remote Control

  • In remote control on mobile devices, the virtual keyboard button is now a toggle.
    • The virtual keyboard will remain visible until toggled off.
  • Fixed an issue in remote control for some browsers (e.g. Firefox) that was causing a "Paste" button to constantly pop up.
  • Fixed an issue where remote control input would stop working after a file transfer.
  • Fixed a bug in remote control that would sometimes cause input events to fire incorrectly.

Preflight Scripts

Added the ability for an MSP user to disable specific local or global preflight scripts from executing. A toggle has been added in the script editor when viewing a preflight script to enable or disable it.

image

Dynamic Integrations

  • Added the capability for Dynamic integrations to specify a custom refresh interval for GetAgents job via the new JobSettings attribute over default period of 1 hour. ex: [JobSettings(PeriodMinutes = 5)]
  • Fixed an issue where Get-ProviderInfo would fail to return Configuration form data for dynamic integrations.

N-Central Integration

  • Fixed: This integration has recently started experiencing issues. The requested operation requires an element of type 'Object', but the target element has type 'Array'.

On the Registry tab, you can now search for keys, value names, and value data.

image

Localization and Branding

Added the option to use .NET time formatting strings on Immy emails from the Brandings page

image

Integrations

Integrations now allow capabilities to be excluded

image

Improvements

  • Minor UI padding improvements to computer list
  • We no longer include the AzureAD module in every metascript's runspace. A script now has to call Import-Module AzureAD if it wants to use Azure AD commands. This reduces our memory footprint from 7MB to 4MB per script invocation.
  • Improved the load time of the actions tab on the tenant details page
  • Improved the load time of "This software has been recently used in X actions/deployments" data.

Bug Fixes

  • Fixed an issue with logs not expanding when toggling the computer details page -> actions tab row details
  • Fixed an issue where saving a software would sometimes clear the selected configuration task
  • Fixed an issue with deployments targeting tags not displaying the saved tag correctly
  • Fixed an issue where searching in the script editor did not allow for certain special characters
  • Correct the color of invalid input field warning icons
  • Fixed an issue where agents retrieved from some dynamic integrations were never re-attempting identification on failure or when specified to retry
  • Fixed an issue in the software prerequisite builder where you could incorrectly specify "Install Software A if Software A is installed".
  • Fixed an issue where onboarding only tasks could not be rerun
  • Fixed an issue loading the detected software report page
  • Fixed an issue with the new computer software tab not showing
  • Fixed an issue where the function script cache was not invalidating when creating new function scripts
  • CW Automate agents will now properly be reassigned to the successor computer when a machine is deleted
  • Fixed an issue that could lead to app crashes when Invoke-AtomicCommand cmdlet attempts to cancel script execution due to requested cancellation.
  • Introduced a new PowerShell cmdlet, Clear-ImmyPrimaryUser, to allow clearing the Immy primary user ID from a computer.
  • Fixed an issue where filter scripts could not use Get-ImmyAzureAuthHeader
  • Fixed an issue where Get-ProviderInfo would fail when targeting static integration types.
  • Get-ProviderInfo now doesn't throw terminating errors for Integration types that don't exist to simplify usage patterns.
  • Improved error handling and logging for the Send-ImmyEmail cmdlet
  • Added the ability for Add-UriQueryParameter to remove existing query arguments that match input names to prevent arrays from being formed via OverwriteParameters.
  • Fixed an issue where Stop-ImmySession would not stop the session correctly
  • Forms generated from PowerShell parameters now load in 1/3 the time
  • Debugger->Parameters panel updates automatically as changes are made to the script

0.64.1

Released 05/10/24

Improvements

  • Increased detected-software uninstall string column size in the database to prevent issues with some software objects not being created
  • Fixed a transient bug with notifications occasionally failing to save
  • Optimized memory and db performance when running scripts by relying on an improved cache of all available function scripts. The cache is busted after any function scripts are modified
  • Computer and Tenant software tab now has a grid view for direct access to software data

Bug Fixes

  • Fixed a bug preventing users from entering new immy instances
  • Fixed a bug preventing the maintenance action duration timer from incrementing.

0.64.0

Released 05/08/24

Azure Domain Splitting

Azure customers can now be split into multiple Immy tenants from the Azure Customer Mapper

You can select one or more domains to link to an Immy tenant. Azure users whose UPNs match those domains will then be synced into the domain-linked Immy tenant instead of the default Immy tenant.

Splitting an Azure customer on domain will also automatically set the domain-linked Immy tenant as the "child" of the Azure customer's default Immy tenant, so that deployments targeting the parent can propagate to the domain-linked tenants

Child Tenants

ImmyBot supports sites/location by allowing you to set a parent/child relation between tenants. You can set the parent tenant as a batch action on the tenant list page or from the edit tab on a tenant's details page.

User Affinity Table

User Affinity results are now exposed under Reporting -> User Affinity and on the computer's details page.

Deployment Page Changes

  • Deployments for software linked to an integration can no longer specify configuration parameters.
  • For software linked to a provider, the deployment configuration parameters are now inherited from the linked integration.
  • This helps keep sensitive data like API keys and passwords private by not displaying the information in the deployment configuration parameters and instead storing the information in the integration.

Deployment Migrations

  • GLOBAL software linked to an integration can now automatically migrate data out of relevant deployments and into a new or existing integration.
  • All GLOBAL software linked to integrations with the "Production" tag will be migrated.
  • Added a new App Preference, "Allow Beta Integrations to Migrate Deployments".

Improvements

  • Any software can now be selected for install/uninstall in "Installation Prerequisites"
  • Added parent-tenant-assignment batch action to the Tenants list
  • Added parent-tenant column to the Tenants list
  • Removed ability to deploy/preview cross-tenant computers on the deployment details page from MSP non-admin users that don't have the "can manage cross tenant deployments" permission
  • Added an audit log that records when the application starts up
  • Added an excel export button to the computer inventory scripts report table
  • Increased the timeout for Expand-ZipFile from 1500 to 3600 seconds
  • After updating a user, we now invalidate the cache for that user so the changes are propagated immediately
  • Setting the primary user for a computer now shows up in the audit table. This includes the User Affinity Job and PPKGs that have a primary user set on the installer.
  • Added Chassis Types to our initial inventory so newly created computers don't have the "Unknown Computer Type" badge
  • Decreased PowerShell execution time by optimizing module loading UI improvements in line with what's desired by support and most useful to users -Alerts added as seen fit by support to better inform the user submitting a ticket.

Bug Fixes

  • Fixed an issue preventing software from being selected in "Installation Prerequisites"
  • Fixed an issue with the dashboard table headers not loading correctly
  • Fixed an issue where moving a computer that had an immy agent to another tenant would cause the agent to be deleted if you were to delete the original tenant the computer was assigned to
  • Fixed a possible null reference exception that could occur when executing scripts over the CW Automate agent
  • Fixed an issue preventing integration inventory scripts from running.
  • Fixed an issue with CW Control target assignments saving the incorrect value for Control secondary groups
  • Fixed spelling of "invetory"
  • Fixed an issue with the dedupe inventory script failing with "System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation"
  • Added a missing comma in the meta robots attribute
  • Fixed an issue setting the primary person from the user affinity job
  • Fixed ProviderNotFoundException thrown by PSScriptAnalyzer
  • User cannot cause an error by submitting a ticket with the technician access box checked even as a non-admin. They can no longer check the box as it is grayed out.

0.63.3

Released 04/17/24

Bug Fixes

  • Fixed an issue setting the primary person from the user affinity job

0.63.2

Released 04/16/24

Improvements

  • Dynamic Integrations now allow you to implement ISupportsClientGrouping. This is useful when integrating with PSAs as clients can be grouped by what products they pay you for or the types of agreement they have.

Bug Fixes

  • Fixed an issue where rekeyed/soft-deleted agents would throw an error whenever we would update their status to online (due to a unique constraint violation in our database)
  • Fixed an issue where instances may not reliably automatically update when Days to wait after update is available was set to an interval longer than our typical release schedule.
  • Fixed an issue that was causing new devices to fail during registration.
  • The primary sidebar now automatically closes and opens when resizing between the desktop and mobile view
  • Resumed sessions will now execute immediately if Offline Behavior is set to Apply On Connect and the execution time has already passed. Before, it would re-schedule execution at the same time the next day.

0.63.1

Released 04/15/24

Computer Registry Tab

We have introduced a new tab on the computer details page that lets you remotely navigate the computer's registry and generate configuration tasks from selected values.

image

More functionality is expected to get shipped with version 0.64.0, such as the ability to search and create/edit/delete registry entries.

Improvements

  • All users can now see the maintenance item ordering page. Only MSP users have the ability to update the ordering.
  • After identification, a computer now runs full inventory immediately with priority.
  • Dynamic Integrations can now use dynamic parameters
  • You no longer need to emit [opresult]::Ok(); in your Integration's Init method
  • You can now create a script directly from the Registry tab. Afterward, you're sent to the New Task page with the script pre-selected.
  • Added padding to stage indicators on the session table
  • Added regex validation to the software page
  • Added the ability to run user scripts from the computer terminal tab.
  • Non-terminal errors/warnings coming from a Powershell host starting up will get pushed out as warnings in the console.
  • Removed parallel execution of inventory scripts when run through scheduled sessions. This should improve performance when we have the maximum number of sessions running at once from schedules
  • Depreciated User Action triggers has been fully removed to prevent confusion.
  • When immy restarts, it will now re-enqueue already running sessions first, then pending sessions, and then finally created sessions

Bug Fixes

  • Fixed an issue where the user affinity job was assigning a primary person to a computer, even when the person was from a different tenant than the computer
  • Fixed an issue where an action's duration would continue to increment when a session was completed while the action was still running
  • Fixed an issue where the spinner icon in the Deployment Detection button was broken
  • Fixed an issue where loading a computer detail page would sometimes throw "InvalidOperationException: Sequence contains no elements"
  • Fixed an issue where schedules targeting CW Control secondary groups become could become borked when a CW Control company was renamed
  • Fixed an edge case issue where a scheduled job that's in "Pending Connectivity" status could run concurrently with a newly-created onboarding task of the agent is reinstalled with "automatic onboarding" enabled.
  • Fixed an issue where a software could incorrectly have a prereq on itself
  • Fixed a bug where it was possible to encounter a Pipe is broken exception while trying to execute scripts on a machine due to a possibility of the agent attempting to use a Powershell host that has faulted/exited recently before we could detect it.
  • Fixed a bug that lead to User-context scripts to incorrectly use the System-context Environment variables (such as TEMP, USERPROFILE)
  • Fixed an issue where the "show more" sidebar dropdown would collapse when selecting the notifications link
  • Scripts no longer appends unwanted prompt query param values to your new-OAuthConsent -ExtraQueryParams @
  • Fixed an issue with re-ran actions incorrectly failing due to missing required parameters when they were present in a deployment
  • Fixed an issue where msp non-admins could not view cross-tenant deployments
  • Fixed an issue where msp non-admins could see access request notifications when it should have been admin only
  • Fixed an issue with incorrect breadcrumbs showing on the schedules list page
  • "User Action Trigger" dropdown have been removed in the Script Editor

0.63.0

Released 04/02/24

Automatic Agent Update Changes

The preference to enable automatic agent upgrades has been added back.

We no longer rely on MSI installers to automatically update the immy agent. Instead, we copy the ephemeral agent binary into "C:\Program Files (x86)\ImmyBot" whenever we detect that the agent binary is on an older version. Logic has been put in place to protect agent installations from breaking due to failed upgrades. Overall, the automatic updates should be more resilient.

Notification Table Improvements

  • Severity is now the left-most column.
  • Added icons to the Severity column.
  • The Created column is now hidden by default.
  • The column chooser is now visible.
  • Table is ordered by updated date by default.

Improvements

  • Added filters to the dynamic integration types page to show "local/global" integration types and to show "developer/alpha/beta/production" release stages.
  • New Integration scripts come prepopulated with a working example
  • Changed the Resolved column in the notification table to an icon instead of a checkbox.
  • Added new notification for deployment migrations.
  • Release notes are now available to all users on the System Update page.
  • The deployment table can now be exported to excel!
  • Added an icon to integration cards on the integration list page to indicate it has a non-production release tag
  • Added a release tag badge to the integration details page
  • The Test-PendingReboot script used in maintenance sessions is now in global.
  • Added release tag selector to the provider link list page
  • Added missing datetime tooltips to computer timeline events and the session created date on the session list page
  • Added the year to all timestamps in the session logs view
  • Agents now get updated in the database when the integration reports a new manufacturer
  • Updated error message when navigating to a computer that does not exist to read: "Computer with id xxx was not found".
  • Updated error message when navigating to a computer that has been replaced by another computer to read: "Computer with id xxx has been replaced by computer with id xxx"
  • Updated error message when navigating to a computer that has been deleted to state: "Computer with id xxx has been deleted."
  • The tenant software page UI has been updated to contain new views for deployments, computers, and persons for each found software.

Bug Fixes

  • Fixed an issue in the script editor about The term 'Invoke-ScriptAnalyzer' is not recognized
  • Fixed an issue where some PSPipeHosts that failed to connect wouldn't provide as much useful data for diagnostics.
  • Forms with Password inputs no longer autofill and replace content in other fields
  • Integrations with no parameters (like the CW Manage Pod) no longer show “Please correct above errors” error message
  • Resolved an issue where some machines were experiencing ephemeral port exhaustion when Ephemeral agent was in a retry loop.
  • The Text on the deployments no longer includes the tenant name for cross-tenant deployments. This gave users the false impression that the deployment was tenant specific when it was not.
  • If an Immy tenant was linked to an Azure customer but accidentally set as Partner, then unlinking it from the Tenant Details Azure tab and linking it again from the Azure Customer Mapper should now correctly reset the tenant to Customer
  • Fixed a bug where tenant consented-at/consented-with details were not updating after consent until the page was refreshed
  • Fixed an issue where uploading global software failed
  • Fixed an error that occurred when targeting CW Automate groups on a deployment
  • Fixed some exceptions that were occurring during inventory
  • Fixes css inconsistencies on tenant software list, devextreme, and ImmyLink
  • Fixed an issue where bits transfer errors were not being shown in the session log output
  • Fixed an issue where the ISO option was now available in the immy agent download modal
  • Fixed a bug where some machines fail to return OS install date due to culture issues resulting in a failure to identify.
  • Removed the Default Hourly Inventory Task from the UI since we only support running inventory on a schedule once per day
  • Fixed an issue where agent integration syncs were unable to bring back agents that were deleted. Most commonly found from CW Control and CW Automate.
  • Fixed an issue where deleted agents were still showing up on the Integration -> Agents tab

0.62.6

Released 03/22/24

Bug Fixes

  • Fixed a performance issue with intellisense in the script editor that was causing high CPU
  • Fixed a common exception that was occurring during scheduled inventory jobs

0.62.5

Released 03/19/24

Bug Fixes

  • Fixed an exception that occurred when analyzing a package by url

0.62.4

Released 03/12/24

Bug Fixes

  • Fixed a bug where instance-updated emails were not getting sent after updating ImmyBot to the latest version
  • Fixed an issue with updating maintenance tasks where it sometimes complained about certain fields being required when it should not have
  • Fixed a bug where reboot pref would not update on schedule page

0.62.3

Released 03/12/24

Bug Fixes

  • Fixed an error that occurred when uploading a license
  • Fixed an error that occurred when creating a deployment for a CW Automate Group or CW Control Secondary Group

0.62.2

Released 03/07/24

Bug Fixes

  • Fixed an issue with N-Central where the dynamic version script would not run and prevented installs and updates

0.62.1

Released 03/06/24

Bug Fixes

  • Fixed an issue creating/updating tags with limited tenants specified
  • Fixed an issue creating/updating software licenses

0.62.0

Released 02/29/24

Bug Fixes

  • Fixed an issue where computers that failed to run inventory were incorrectly being classified as workstations/desktops by default. This was causing workstation deployments to incorrectly resolve to the computer.
  • Fixed an issue with application errors disappearing when clicking the "Show Details" link
  • Chocolatey packages no longer fail detection (Removed -lo from Choco command)
  • Fixed issue where even though an "Agent Integration" was specified with GetDynamicVersions implemented, Immy would not run GetDynamicVersions unless the "Use dynamic versions" checkbox was checked
  • Fixed a long standing issue where The Immy Agent/Ephemeral would drop & invoke an unsigned powershell script named Invoke-PSPipeHost.ps1. This would cause some AV & EDR to not like us.
  • Fixed an issue where some computers were stuck in the onboarding status after completion of an onboarding session
  • Fixed an issue where the stale link in preferences was not working
  • Fixed a minor issue in the Application Locks page that would show all active locks fetched as 'cancellable' when they may actually be 'terminal' when requested.
  • Fixed a bug where changing the slug from tenants list page for an MSP tenant would unset the tenant's MSP status
  • Fixed a null reference exception that could occur in the NCentral API client
  • Fixed several null reference exceptions that could occur when loading certain pages
  • Fixed a null reference exception that could occur when parsing a dynamic version result
  • Fixed some null reference exceptions that were occurring sending commands to CW Automate
  • Fixed a null reference exception that was occurring for immy agents attempting to execute scripts over the IoT Hub even when the hub has been removed
  • The detected computer software table now includes software that have SystemComponent set to 0 in the registry.

Improvements

  • Added a new reporting page called Computer Inventory Scripts that contains the latest results of all inventory scripts ran against computers
  • Added more details to exceptions coming from integrations to help diagnose issues
  • (Developer improvement) We have integrated new security testing into our code repository to help us detect potential vulnerabilities before they are released.
  • The version text in the download agent button on the sidebar has been removed to avoid confusion. The agent version is still displayed in the modal that shows after clicking the button.
  • We have exposed the immy.bot API under your-instance.immy.bot/swagger using the Swagger OpenAPI spec. https://swagger.io/specification/. Although officially this is not support, it may be useful if you are attempting to use our api in a 3rd party application.
  • Edit Software: Advanced items with overridden (non-default) values are visible without expanding Advanced
  • Edit Software: Selecting an Integration hides Version/Dynamic Versions UI to make it more obvious that the expectation is for the Integration to handle this logic.
  • If a software is linked to an integration type but the deployment is missing the IntegrationId, but only one integration of that type exists, Immy will fall back to using that single integration.
  • Updated ImmyBot references to immy.bot
  • Removed deprecated IoT Hub code and dependencies from the latest version of the ImmyBot Agent
  • Added a help button explaining global vs local on the Software and Tasks pages
  • Removed progress bar from System context scripts that don't specify PercentComplete. Only the most recent ProgressRecords show status
  • You can now create your own computer inventory tasks. In another release we will add the ability to represent them in the UI. For now, you can see results in the Computer Inventory Table and query them in filter/meta scripts.
  • Added more maintenance options to the computer batch actions. In addition to running full maintenance, you can now run inventory scripts, deployment resolution, and deployment detection.
  • On the computer details page toolbar, "Re-Inventory" was renamed to "Deployment Detection"

0.61.6

Released 02-21-24

Improvements

  • The session logs for verifying the installed software version now include the detected version
  • Inventory is now always performed for full maintenance sessions to ensure inventory data is as up to date as possible before resolving deployments

Bug Fixes

  • Fixed an issue with tags not immediately displaying in the tenant list
  • Fixed an issue with some checkbox values not updating after the first click

0.61.5

Released 02-15-24

Bug Fixes

  • Fixed an issue where users were unable to toggle Remote Control tenant preferences
  • Fixed an issue with non-MSP users unable to load the deployment list
  • Fixed an issue with the "Show dismissed recommended deployments" selector not working
  • Fixed an issue with manually identified agents always being associated with the MSP tenant instead of the selected tenant

0.61.4

Released 02-12-24

Bug Fixes

  • Fixed an issue with the script editor not showing output when loading a script for the first time.

0.61.3

Released 02-09-24

Bug Fixes

  • Fixed an issue where target assignments for an azure group were failing with "PostgresException: 42703: column i.deleted_at does not exist"
  • Fixed an issue with intellisense not starting when opening a script from a maintenance session

0.61.2

Released 02-08-24

Bug Fixes

  • Fixed an issue with not being able to update the value of licenses

0.61.1

Released 02-08-24

Bug Fixes

  • Fixed an issue in the ImmyAgent where it was attempting to connect over the IoT Hub even if the agent was never registered with the IoT Hub. This issue manifested in the agent never showing up in pending list.

Improvements

  • The latest version of the ImmyAgent removes references to the IoT Hub since it has been deprecated.
  • For agents that experienced the bug with the IoT Hub mentioned above, they will now be able to successfully connect to Immy and show up in the pending list. Some agents will automatically get associated to their existing computers while some may need to be manually identified to the correct tenant.

0.61.0

Released 02-05-24

Deployment Notes

Deployments can now have notes. After saving a deployment, notes can be added to it.

image

A notes column has been added on the deployment list page. If it is not visible by default, click the image icon to add it.

image

Computer Excel Export

Located under Reporting -> Computers or at the URL /reporting/computers.

A new report table has been added for "Computers" that can be used to generate an excel report of computers by clicking the xlsx button.

When the table is filtered, only the results in the filter will be exported.

Soft Delete Computers & Agents

Deletion of computers and agents are now performed using a soft-delete.

The current exceptions are:

  1. Deleting tenants: which will cascade delete all computers for the tenant
  2. Deleting integrations: which will cascade delete all agents for the integration

General Improvements

  • The system status page now refreshes automatically every 5 seconds
  • Updated the deployment list column visibility defaults to hide the software version and disabled columns and show the notes column
  • Most recent Write-Progress -Activity <value> now shown on activity detail and current activity overview
  • Added system preference to exclude Chocolatey software results from the deployment software search
  • Dymamic Integrations can implement required interface for running scripts on target
  • Notifications for agents requiring a manual decision are now automatically resolved if there are no more agents that require a manual decision
  • Added warning messages to the deployment screen when required scripts are missing
  • Improved performance by fixing possible memory leaks that could occur during maintenance sessions
  • You can now add a person selector as a dropdown parameter via New-PersonParameter
  • Newly generated Powershell install scripts for Immy Agents now point to an always-latest installer binary 🥳🎉
  • Computer Software report is now generated using excel instead of csv. Also, the export now only exports rows matching the current filter.
  • Added up to 3 retry attempts when attempting to set the unique identifier for a device during identification
  • Added logic to track computers that have been wiped and replaced by other computers. This isn't shown anywhere in the UI as of right now, but can be added in the future
  • Standardized order of Filter Script and Metascript between Cross Tenant and Single Tenant selections when creating deployments
  • Improved performance of saving maintenance session related data to the database
  • Removed word assignment from deployment page data column.
  • Added autocomplete="off" to dynamic form inputs to prevent browsers from injecting unwanted values on deployment and integration pages
  • The "New" software button on the software list page now links directly to the software upload page
  • ISupportsMaintenanceMode for dynamic integrations now disables maintenance mode at the end of sessions
  • Versions details page will automatically show overrides if any are present
  • Software details version table now displays when the version has overrides
  • Updated the software details detection method table to pull results from the detected computer software table used in reporting. This provides better performance and unifies the results between this feature and the reporting.
  • Added warning tooltips to computer overview page for unsupported OS and PowerShell versions
  • Added security exclusions confirmation on session support request page
  • Added hidden column to the detected computer software table that shows the potentially matched global software id
  • Added new report page for computers with the ability to export to excel
  • The "Show Identification Logs" button in the computer page / pending tab is now aligned to the top right instead of in the middle of the row, and renders above any potential errors
  • Application Locks (used for things such as Invoke-AtomicCommand, Invoke-CommandCached) are now visible & controlable via the new 'Application Locks' page under 'Show More'.

Bug Fixes

  • When viewing page on mobile, the sidebar is now hidden on navigation change
  • Fixed an issue where the filter on the tags list was not working as expected
  • Fixed an issue where adhoc maintenance sessions marked as pending connectivity were never being resumed
  • Agents Requiring Manual Decision Notification shows resolved text when no more agents require a manual decision
  • Fixed duplicate text under the Script Path application preference
  • Fixed an issue where checking if we are within business hours was not getting cached, causing additional unnecessary checks
  • Fixed an issue where the within business hours session log was not getting emitted
  • Fixed a deadlock issue that could occur when cancelling a session
  • Updated copyright date to be dynamically set
  • Fixed an issue where New-MediaParameter values were not being set to the path to the downloaded file
  • Fixed styling of access request notifications
  • Added missing border to the top of the Azure notification group header
  • Corrected inconsistent padding of Azure notification group header
  • Fixed issue with missing bottom padding between integrations on integration list page
  • Fixed an issue where some filter scripts were not specifying the cloud context
  • Integration Audit Entries no longer get hung and show no output when clicking details
  • Intellisense no longer stops working when you switch between script tabs
  • Status spinner no longer spins forever when in Stopped state
  • Fixed an issue where multiple ephemeral agents were possibly spinning up during identification of a device
  • Fixed a visual issue where loading a schedule would incorrectly show "Sunday" as the day to run when the value was not "Sunday"
  • Fixed an issue where a duplicate streaming button would show up when streaming agent identification logs
  • The primary user deployment is now hidden from the deployment list since it is a mandatory deployment
  • Updated uninstall help text to reflect existing behavior
  • Fixed an issue where brandings that didn't specify a logo or header image would sometimes still show a broken image
  • Fixed an issue where we were not checking if the port had been specified for an SMTP and resulted in an obscure exception for the end user if the port value was missing
  • Fixed an issue where the person dropdown parameter in onboarding tasks were not limited to persons in the computer's tenant.
  • Fixed an issue on the software upload page, where the validation message for the software version was not showing up.
  • Fixed an issue on the Tasks list page where filtering to Computer tasks were incorrectly including configuration tasks
  • Fixes incorrect PPKG text in download modal
  • Fixed an issue where scripts could fail with FileNotFound.
  • Fixed issue with detected computer software table where it would exclude registry entries that had duplicate display names, but different versions, or some being linked to global and not others
  • Added missing timestamps when hovering over "x days ago" text throughout the application
  • New software versions will now default to the Inherited upgrade strategy
  • Fixed an issue where some Win7 machines were failing to start Ephemeral agent.

0.60.0

Released 01-09-24

Automatic ImmyBot Version Upgrades

When a new version of ImmyBot is released, you can now specify if you want to automatically update to that release after a specified amount of time. This behavior is configurable in preferences.

image

Release Channel

The release channel determines what versions of ImmyBot are available to you. You can now choose which release channel you want to subscribe to.

The available channels are: Alpha, Beta, and General.

  • Alpha: This channel contains releases that have passed development but may still be unstable. Only use this channel if it's absolutely necessary for a critical fix or to test brand new features and provide feedback.
  • Beta: This channel is for early adopters and contains releases that are in the final rounds of testing. Use this channel to test new features and provide feedback.
  • General: This channel contains releases that have been tested and are ready for general use. This is the recommended channel for stability.

All instances will default to the General channel.

You can change your channel on the System Update Page.

image

ImmyBot is on .NET 8

The ImmyBot backend is now running .NET 8. While this doesn't introduce new features to end users, it does provide better performance and newer development features that benefit ImmyBot.

Cross-Tenant Deployment Change Requests

A new application preference has been introduced that when enabled will require MSP non-admin users to submit change requests when creating or updating cross-tenant deployments.

image

On a per user basis, you can additionally opt-out of requiring change requests by assigning the user the following capability from the edit user page:

image

Change requests are submitted from the deployment details page in the same area you would normally create and update a deployment.

image

Once submitted, the change request can be reviewed in a read-only format. MSP non-admins will have the option to edit the change request, while MSP admins will have the ability to approve or deny the change request.

MSP non-admins see

image

MSP admins see

image

All open change requests can be seen from the deployment list page.

image

Improvements

  • Added hidden column to the detected computer software table that shows the potentially matched global software id
  • The tenant software search tab on the tenant details page now renders as a filterable table with the ability to export
  • Automatic ImmyAgent updates are now enabled by default
  • When creating a new deployment, selecting Onboarding Only will now default to "Value from: deployment".
  • Changed notifications list page to hide resolved notifications by default
  • Deployments page will now default to grouping by tenant
  • IntelliSense can be restarted without refreshing the browser

Bug Fixes

  • Fixed issue with some property text in the audit table colliding with other property text
  • Fixed issue where unmatched software in the detected computer software table were not filterable
  • Fixed an issue where detection could fail with "Exception of type 'CwAutomateProvider.CwAutomateHttpException' was thrown." when checking for windows patching. It will now skip windows patching, provide a more useful message, and continue the session.
  • Fixed an issue where creating/updating deployments for integration group targets was not saving the selected tenant
  • Fixed an issue where starting ephemeral agent would cause an error on some older machines.
  • Fixed an issue where the getting started wizard was popping up even when a computer had already been added
  • Fixed an issue where the software repair custom script was not showing up under the Repair Strategy label on the software details page
  • Persistent Agent main connection will now more aggressively obey System Web proxy when attempting to connect.
  • Fixed an issue where Immy Agent EXE downloads would produce a corrupted binary.
  • Fixed an issue where upgrade code and product code were failing to match to global software during detection
  • Fixed issue where Azure Tenant Problem notifications were being created when there were not actually any problems

0.59.3

Released 12-20-23

Bug Fixes

  • Fixed a caching issue where adhoc deploying to multiple computers and then re-running a session would sometimes trigger the session for a different computer
  • Fixed an issue where msp admins would sometimes show up as MSP Tenants
  • Fixed an issue with the detected computer software table where it was not updating information after re-running inventory
  • Fixed an issue where configuration task actions would sometimes not showing the detect stage progress line

0.59.2

Released 12-19-23

Bug Fixes

  • Fixed issue with showing media on the media list page
  • Fixed issue on the tenant details page where the batch actions button on the computer table was not working
  • Fixed issue with calls to Get-ImmyComputer from metascripts where it was incorrectly excluding computers that were excluded from maintenance. This check is only supposed to happen when resolving computers for a deployment or a schedule.

0.59.1

Released 12-13-23

Bug Fixes

  • Fixed issue where Computers and Tenants were still being included in the preview for the Edit Deployment screen even though the tenant had the "Exclude from Cross Tenant Schedules and Deployments" preference set
  • Fixed a caching issue where scheduled maintenance sessions were not always picking the correct deployment

0.59.0

Released 12-12-23

Detected Computer Software Export

We added a page to view all computer detected software and a button to export it to a csv file.

You can access this page from /reporting/detected-computer-software. Values from this table are populated from inventory.

OAuth Parameters

Added the ability to create and select auto-refreshing OAuth tokens as script parameters




Added a button to the Azure Partner Settings page to pre-consent customers to the default or custom app registration via the Partner Center API

This removes the need to provide consent for each customer manually using an admin account from the customer


Added an OAuth Token Acquisition mechanism to allow Partner admins to give ImmyBot consent to use the Partner Center API


Automatic ImmyBot Agent Updates (Alpha)

When a computer attempts to run a script and we establish an ephemeral agent connection, we now also upgrade the ImmyBot Agent if it is outdated. This is currently in alpha and can be opted into from the Application Preferences page.

Improvements

  • You can use the new ScriptTimeout attribute to override the default execution time of 60 seconds in integration scripts (Supports up to 300 seconds)
  • Integrations supporting ISupportsHttpRequest now display the HttpRequest Uri
  • Added integration release stage badges to indicate whether an integration is in the Alpha, Beta, or Production stage.
  • Uninstalling software no longer enforces required parameters specified by the deployment.
  • [Alpha Opt-In] Write-Progress -Activity "Activity 1" -Status "Migrating" Calling Write-Progress with both Activity and Status parameters creates a new row on the action in the session. This helps visualize the progress of long running tasks.
  • Added BitLocker Status to the logical disk tab on the computer details page
  • Added TPM Version to the overview on the computer details page
  • Added disabled deploy button next to configuration tasks with a tooltip explaining that they cannot be deployed directly. The missing deploy button was causing confusion.
  • Added a docs link for agent identification failures under the computer page -> pending tab.
  • Updated help text of desired software state - Latest Version, to read "Will install/update the software to the latest version"
  • Added a link to the ordering page from the deployment list page
  • Updated the execution order help text to read "All tasks that are limited to onboarding computers will be executed at the beginning of the session in the onboarding stage, following the sequence in which they are listed. Once the onboarding process is complete, we will proceed to execute all other actions, also in the order they are listed."
  • Added 'Azure Tenant Problems Detected' notifications to indicate errors and other detected problems related to Azure tenants
  • Made notification creation more performant
  • Added User preference area and moved the theme toggle to it.
  • Improved some UI color settings
  • Creating, updating, and deleting schedules show up in the audit table.
  • Maintenance tasks can now specify an integration to link
  • Fixed an issue on startup that was causing some startup jobs to not run
  • The logic that ensures we have online agents before running a script on a computer no longer runs if we have an active ephemeral agent connection
  • Added AssignmentScope as a script parameter. Possible values are CrossTenant, SingleTenant, and Individual.
  • When ImmyBot restarts, we no longer cancel sessions due to them being considered "outdated". This was an old piece of code that was there to prevent accidental reboots during business hours. This check is no longer needed since we check for active hours and business hours during the maintenance session when deciding if the computer needs to reboot.
  • Important - ImmyBot agents that are installed with automatic onboarding will now ALWAYS automatically onboard. Before, we would optionally not perform onboarding if the agent resolved to an existing computer that had previously run at least one maintenance session.
  • Removed converted parameter values from parameter validation responses since it could possibility contain sensitive data and the value was not being used on the frontend
  • Invoke-CommandCached and Invoke-AtomicCommand cmdlets are now available for use inside Filter Scripts.
  • Action errors regarding missing/failed software prerequisites now show the software's name instead of the type and identifier.
  • Changes to software prerequisites now show up in the audit table
  • Added a link to the ImmyBot community forum to the navbar
  • Minimizing the script editor persists any ephemeral tabs you had open.
  • Extended the ephemeral agent disconnected text to say "This computer does not have an ephemeral agent. An ephemeral agent will connect when a script is run against this computer."
  • Several new Azure-related notifications have been added
  • Fixed an issue where multiple sidebars could be showing and overlapping at the same time
  • Parameter descriptions are now always visible. Before, they were only visible if you were overriding the default value.
  • Improved styling of default value key/value pair parameters on the deployment form
  • Improved serial execution of maintenance tasks by adding a more visible locking mechanism. You can now see who the currently executing computer / session is.
  • Added a check when creating or updating a deployment that warns you when a duplicate deployment is detected. You have the option to replace the existing deployment or fix the newer one such that it is no longer a duplicate.
  • Schedules and Adhoc Deployments now apply batching to create the maintenance sessions. We've seen about a 6x improvement in speed in creation.
  • Debounced script editor changes to prevent Intellisense crashes
  • You can now save scripts that have syntax errors by acknowledging the confirmation modal. Useful for saving unfinished scripts or scripts that may not actually have syntax errors when run on an endpoint
  • Improved ImmyAgent setup when deploying new instances that should result in fewer errors and faster instance setup
  • Improved performance of session cancellation by simplifying the database queries
  • Adding an invisible Formatter, so that information can be easily hidden. Using this to hide ParameterSetBinding messages.
  • In the Debugger section Parameters and Variables, the subsections are now open by default
  • In the Script Details section for the Type dropdown, the Software Auto Update element has been removed
  • Added integration capability ISupportsAgentDownload. Allowing integrations to provide their own "Download Installer" script.
  • Added integration capability ISupportsAuthenticatedDownload. Allowing integrations to provide authentication information without leaking sensitive information.
  • N-Central integration has finally graduated from Beta status, and can now be found in the Integrations page 🎉

Bug Fixes

  • Fixed an issue where some ImmyBot tenants linked to Azure customers were getting reset to Partner type within ImmyBot
    • For Customer tenants that are erroneously set to Partner in ImmyBot, you can fix these by finding the customer on the Azure Settings page, and unlinking/relinking it
  • Fixed an issue where full maintenance schedule sessions did not have the "Full Maintenance" tag in the sessions table Fixed an issue with N-Central integration failing to re-authenticate after ~24hrs of running.
  • Fixed an issue where starting ImmyBot remote control for an outdated agent was kicking off a session that contained actions other than the agent update.
  • Fixed an issue with license descriptions now showing on the deployment page
  • Fixed potential null reference exception on Deployment page when ValidateScript is used
  • Fixed an issue where wiped computers were not being treated as wiped if an existing computer was found. A wiped computer is one where the hostname and OS install date are different that the computer we already see inside of ImmyBot.
  • Fixed a divide by zero error that could occur while computing a software installer's download speed.
  • Set the audit user text to show the user's email address if the user does not have a first or last name specified
  • Fixed an issue where some ImmyAgent & Ephemeral Agent binaries included some unsigned assemblies, falsely triggering some security tooling like ThreatLocker.
  • Fixed an issue where Immy Starter plans were able to select the schedules nav item
  • Fixed an issue where resolving agent identification issues resulted in "404 - entity could not be found."
  • Fixed an issue where resolving agent identification issues with "Let Immy Try again" was not doing anything.
  • Fixed an issue where some ImmyBot agents were failing to connect to ImmyBot when it was re-installed
  • Fixed an issue where only the ImmyBot team could view global dynamic integration types
  • Fixed an issue with scheduling the user computer affinity job once a day
  • Removed some old migration code that was delaying startup and potentially causing issues
  • Fixed an issue where some Immy Agent upgrades would leave installs dead in the water due to a config parsing issue.
  • Fixed an issue where sometimes analyzing an installer package would cause an IOException.
  • Fixed an issue where a software prerequisite would not be installed if an "update if found" deployment for the prerequisite resulted in "no action" because it was not found on the endpoint. Now, an install action for the prerequisite will be created anyway.
  • Fixed an issue where selecting text on expanded script-runs would collapse the script
  • Fixed an issue with fetching CW Manage agreement products where the deployment would show "Server error. Please contact your Administrator." Occurred when CW Manage attempted to return several hundred agreement products.
  • Fixed an issue running invoke-immycommand from a cloud script against a computer that would throw an error during the preflight check, "Value cannot be null. (Parameter 'psComputers')".
  • Fixed issue removing previous pages breadcrumbs on the session list page
  • Fixed an issue on the onboarding form where mandatory parameters would not show the input by default if the parameter was dynamically discovered
  • Fixed several minor issues found with the agent installer download modal and the getting started wizard modal
  • Fixed a caching issue with inserting session logs into the database
  • Fixed a caching issue with detected software from a machine
  • Fixed an issue where database queries to get a list of sorted deployments during a maintenance session were not being cached
  • Fixed an issue where the Package Analyzer would throw a The process cannot access the file error
  • Fixed issue with our script analyzer rule for detecting missing $using: in Invoke-ImmyCommand
  • Fixed the N-Central issue that keeps appearing "InvalidLoginCredentialsException: New tab request failed!"
  • ParameterSetBinding should not emit output.

0.58.3

Released 11-1-23

Notifications

Notification Sidebar

We have updated how our notification system works.

The bell icon in the navbar will provide a number of the unacknowledged notifications you have.

image

The sidebar will show when clicking this icon.

image

Notification History

You can access all notifications from the primary sidebar under "Show More" -> "Notifications". By default, it will only show you unacknowledged notifications. You can click the "reset" link or change the filter on the "Acknowledgement" column to view acknowledged notifications.

image

Silencing notifications

From the notification sidebar, you can silence notifications by the notification type or for the specific object the notification was for.

image

You can then view all of your silenced notifications from the notification history page.

image

Notification Types

We have plenty of notification types in the pipeline. Here are the notification types currently implemented.

  1. Integration Unhealthy - a notification to let MSP users know that an integration has become unhealthy
  2. Access Requested - a notification to let MSP users know that someone is requesting access to their instance of ImmyBot
  3. Large Script Output - a notification to let MSP users know that a specific script has outputted a large amount of data. When scripts like this run during maintenance for hundreds of devices, it can easily cause high CPU and memory which leads to sluggish performance and potential crashes.
  4. Unacknowledged Recommended Deployments - a notification to let MSP users know that there are new recommended deployments that need to be allowed or denied.

Some notification types that will be coming soon include, but are not limited to:

  1. Agents Requires Manual Decision - a notification that lets MSP users know there are agents pending identification that could not be automatically resolved to a computer and require manual actions.
  2. ImmyBot Updated - a notification that lets MSP users know that ImmyBot has been updated to a newer version
  3. Cross-Tenant Deployment Requires Approval - a notification that lets MSP admin users know that a cross-tenant deployment was created or modified and needs approval from an MSP Admin. (Feature coming soon)
  4. Azure related notifications

Improvements

  • Updated variable alert on the license details page to be the same alert shown on the software details page -> license help alert
  • Added random jitter to the time we schedule some of our recurring jobs so that we reduce high database load due to all instances kicking off the jobs at the same time.
  • For maintenance sessions that target a specific item, a session log has been added at the beginning that provides the name of the maintenance item
  • Added auditing for static software versions and static maintenance task parameters
  • Schedules that target a specific maintenance item will now always create a maintenance session for every computer resolved in the schedule's target group. If the computer does not have a deployment for the specified maintenance item, then the session will complete instantly with no actions added.
  • Upgraded PowerShell Editor Services from 3.6 to 3.13
  • Batch actions sidebar now slides out underneath the navbar to not block actions
  • Batch actions sidebar background color was updated to provide more contrast
  • You can now restart Intellisense from the status bar.
    • image
  • Intellisense will restart automatically when changing script type.
  • Removed dependency on Ace.js that shaved off 366KB from the project
  • Made a slight performance change to schedule logic that should result in faster start times for schedules with many computers
  • Added a "Job Args" property to the session details page info panel that expands to show more data associated with the session.
  • ImmyBot no longer tries to run scripts against non-Pro N-Central agents
  • Added custom PSScriptAnalyzerRule with Code Action to detect and fix missing $using: scope modifier in Invoke-ImmyCommand
    • image

Bug Fixes

  • Fixed an issue with azure tenant data sync job not getting scheduled correctly
  • Fixed an issue with cloud deployments targeting tags where the session would error in a NotImplementedException
  • Fixed an issue where agent updates only maintenance sessions were not viewable by a non-msp admin even if the computer was under their tenant
  • Improve deadlock handling when integrations need to be created, removed, or re-initialized
  • Fixed an issue where users were unable to upload license files
  • Fixed an issue on instance startup where integrations were possibly initializing twice unnecessarily
  • Added a default timeout of 5 minutes to every API request made to Automate. We were not specifying a timeout before so the request could have been long-lived
  • Improved the initialization of the CW Automate integration by reducing the number of times we instantiate an API client to communicate with the Automate Server
  • Refactored the logic that handles enqueuing scripts to execute over CW Automate to prevent potential locking and add additional debug logging
  • Fixed an issue where the system status page was not showing metrics under CW Automate and CW Control when it should have
  • Fixed issue where Intellisense would be unrecoverable after selecting script type Software Auto Update
  • Fixed an issue where provider sync jobs could continually enqueue when only one should ever be enqueued at a time.
  • Fixed an issue where CWControl provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length
    • image
  • Fixed an issue where some actions would result in an error of "Invalid maintenance action type."
  • Fixed a potential issue with all providers remaining unhealthy upon server starting up
  • Improved the load time of the application on startup
  • Fixed an issue where some more known bad device ids were being used to uniquely identify a computer, e.g. ffffffff-ffff-ffff-ffff-ffffffffffff
  • Fixed an issue where ImmyAgent provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length.
    • image

0.58.2

Released 10-11-23

Audit Page

An audit page was added that MSP admins can use to view changes made to objects such as Target Assignments and Scripts. This also includes changes made to global objects. This is part one of an effort to provide more transparency around changes made to global data. This page is accessible under Show More -> Audit, or "your-instance.immy.bot/settings/audit".

Improvements

  • Get-ImmyComputer -IncludeTags from a filter script or a meta script now include the tags for the computer's tenant and primary user
  • Improved our resiliency for Redis reconnection for background jobs
  • Updated the Hangfire Service watcher to fix common issues that may occur when it restarts
  • Improved some internal logging that will help diagnose application crashes
  • Added some additional logging to detect performance issues related to CW Control connection events
  • Added support for putting an agent in maintenance mode at the beginning of a session
  • Sessions with reboot preference set to force now only force a reboot at the beginning and end of the session. Reboot checks after each action will only reboot if necessary.
  • Added the ability to toggle online status support for agents of an integration since some dynamic integrations don't support online status
  • The "Install Agent" button on the computer details page now kicks off a maintenance session instead of installing behind the scenes
  • Updated the version of our dependency on the Azure.Storage.Blobs package, which provides better performance.

Bug Fixes

  • Fixed some theme styling issues on some of the tables
  • Fixed an error in the web inspector console that was reporting BackendVersion was null
  • Fixed an issue where array parameters that used [ValidateSet] would not render the dropdown of valid values
  • Fixed an incorrect variable name in the license alert on the software details form. $LicenseFile should have been $LicenseFilePath
  • Fixed an issue where the session resume button would stay disabled if you clicked it but didn't confirm the action.
  • Fixed an issue where deployment parameters were not showing in the correct positions Fixed an issue with the Package Analyzer failing to download some software hosted behind CloudFront CDN.
  • Fixed an issue where Invoke-CommandCached would return objects slightly differently than expected, causing some unexpected behavior for scripts.
  • Fixed an issue where the "Show value view" on a parameter form would not actually show the parameter values
  • Fixed an issue with agent inventory identification where old agents tied to a computer were not getting replaced by the a newer agent
  • Fixed an issue where a phase could be considered successful if the agent went offline at just the right time
  • Fixed an issue where an agent going offline would fail a maintenance task action during the Download Installer phase
  • Fixed an issue where refreshing the computer's connected status would throw an error regarding some agents not supporting the ability to refresh an agent's online status
  • Fixed a potential null reference exception that was thrown when reloading integration types
  • Fixed an issue where dynamic integration agents were not syncing updated data, such as changed name, serial number, or osname
  • Fixed an issue with pending connectivity kicking off incorrectly for disabled/unhealthy links
  • Fixed an issue where the ImmyAgent provider would fail to initialize due to Azure changing the machine hostname, causing it to exceed maximum expected length.

0.58.1

Released 09-28-23

Improvements

  • Made errors that occur while interacting with the graph api show on the frontend to help guide the user on how to resolve common Azure configuration problems
  • Added the ability to specify a docs url for dynamic integrations that will be shown on the integration edit details page
  • Added the installer download url to the session log when attempting a BITS or basic download
  • ImmyBot now defaults to dark mode unless the browser preference is set to light
  • Moved immy support access preference to the top of the preferences page
  • Made Add-UriQueryParameter no longer require -Parameter when Uri is passed in via Pipeline
  • Added the ability to trigger an agent sync from an integration on the clients tab and agents tab
  • Added support for incoming http request inspection to integration audit logging
  • Added support for non-mandatory integration method parameters
  • Dynamic Integrations that support agents can now specify whether the agent supports an online/offline status. Some integrations were defaulting to always online which caused issues with the pending connectivity logic
  • Updated session log text about retrying to fetch PowerShell version
  • Added a better error message when a dynamic version script returns a newer version than what was detected previously in the session. The message is "The dynamic version script is returning a newer version than what was retrieved the last time the script was ran. If so, re-deploy this action. We will automatically handle this scenario in a future release."

Bug Fixes

  • Fixed an issue with onboarding and deployment parameters where the form would sometimes not render due to hidden errors. The errors are now visible in this case.
  • Fixed an issue on the onboarding form where values specified on the deployment form were not considered when resolving any errors
  • Fixed a bug where only the first 300 Azure customers of a partner tenant would show up in the Azure customer mapper
  • Fixed an issue where global software -> agent integration dropdown was showing local integrations
  • Fixed a bug where linking an az customer would incorrectly set the az tenant type as Standalone, preventing usage of the graph api for that customer
  • Fixed an issue where sessions would sometimes not show the computer name, and links to the computer would result in a 404
  • Fixed an issue where a license couldn't be deleted because it was used by a deployment that was no longer showing the license selector. The selector now shows and the license can be successfully removed from the deployment
  • Fixed a rare issue where agents would fail to be synced if the integration reported multiple agents with the same agent id
  • Fixed an issue where Immybot.Agent.Shared.dll from the ImmyBot agent MSI installer was not signed
  • Fixed an issue where linking a dynamic integration client was removing other agents incorrectly during the sync
  • Fixed a bug where tenant select boxes couldn't be searched on provider client link pages
  • Fixed an issue where custom app reg could not be changed without first toggling permission level
  • Fixed an issue where reloading integration types would result in a permission error
  • Fixed an issue where the unlinked msp client banner would show up even when the msp client was linked
  • Fixed an issue that was preventing the ImmyBot agent's .dlls to be signed
  • Removed extra "$" in front of version in the dynamic version response
  • Removed the agent's client name from the agent tab to prevent confusion
  • Fixed an issue where a pending agent "Let Immy Try Agent" action was not working as expected
  • Fixed an issue where a script dropdown would show incorrect results if it was toggled to only show global scripts or toggled to only show local scripts
  • Fixed a "downlaod" typo in "Action To Take"

0.58.0

Released 09-13-23

Bring Your Own Integrations

The goal of this feature is primarily for our own use to more rapidly implement integrations with other RMMs and PSA, but we have opened it up for you to create your own integrations as well.

https://docs.immy.bot/build-your-own-integration.html

New Parameter New-OAuthConsentParameter

This parameter creates a button that will perform the oauth code authorization flow and allow you to use the response in the script.

https://docs.immy.bot/scripts.html#parameters

Agent Tracking

The Computer -> Agents tab now includes all agents, not just ones used to run scripts. This is preparation for the upcoming computer/tenant offboarding feature. Which will allow us to not only uninstall the agents from the machine but de-provision them from their respective platforms.

Metascript WebHooks

You can now receive web requests from within Metascripts.

The webhook URL is {your-domain}.immy.bot/api/v1/webhooks/{web-hook-id}, and it accepts Post and Get requests. The webhook id can be retrieved from $Hook.Id

An example scenario is this can be used to map Toast buttons to actions in ImmyBot.

powershell
$Hook = New-ImmyWebHook
 $Hook.PublicUri | Add-UriQueryParameter @{
     MyParam = "MyVal"
 }
 $Hook.PublicUri.ToString()
 Write-Host "Waiting for Hook"
 $Hook | Wait-ImmyWebHook
-Write-Host "Got WebHook!"

Atomic and Cache Cmdlets

Added 3 new Cmdlets, Set-CacheKeyExpiration , Invoke-CommandCached, and Invoke-AtomicCommand

image

image

image

Other Improvements

  • Error text for deployment parameters now show as markdown
  • Added Completion for Attribute parameters
  • Immy-specific core types no longer tab complete to lowercase
  • Immy-specific Attributes like DropdownAttribute and OAuthConsentAttribute no longer tab-complete to include "Attribute"
  • Remote control can now automatically reconnect after logging off a Windows user or rebooting the computer.
  • Improved performance of loading maintenance sessions with hundreds of actions
  • Added a background service that periodically checks for online computers that have pending connectivity sessions and runs them
  • Get-Hash cmdlet now supports an additional AsHex switch to get a hexadecimal output.
  • Prevented recurring inventory jobs from retrying to connect an ephemeral agent more than once so we can quickly move on to the next computer needing inventory
  • You can now target provider client groups (e.g. CW Manage Agreement Products) with cloud tasks
  • Reduced memory footprint of some session related data
  • Added an Agents tab to the Integration Details Page if the integration supports listing agents.
  • Saving a script in the script editor now shows a loading icon in the tab and disables the buttons to prevent multiple requests
  • You can now link ImmyBot tenants to Azure tenants (including partner tenants) from the Tenant Edit page
  • You can now have multiple MSP tenants
  • ImmyBot tenants can be upgraded to MSP tenants from the Tenant Edit page
  • The software dropdown on the license details page is now limited to software that support licenses
  • Added text to the maintenance ordering page that explains that onboarding actions will always be executed at the beginning of the session in the order that they are listed.
  • Added a log interceptor that can be used for dynamic and built-in integrations to log method calls
  • Implemented ISupportsAgentUninstallToken and Get-IntegrationAgentUninstallToken (for SentinelOne) and removed the need for specifying the clientid

Bug Fixes

  • Fixed issue where Computers running ImmyAgent < 0.51.0 and no other agents failed to establish an Ephemeral connection.
  • Fixed an issue where a session would fail with "Uncaught exception running maintenance session. Computer does not have any enabled agents that support running scripts"
  • Fixed an issue where updating a schedule would bring you back to the computer list page
  • Added some additional logging around the Immy Agent when attempting to establish an ephemeral agent connection
  • Fixed possible errors that could occur after an IoT Hub has been removed
  • Fixed an issue where exporting to Excel from dashboard would fail if there are multiple maintenance items with the same name
  • Fixed a bug where GDAP Customer would incorrectly show up as a warning in certain circumstances, causing confusion consenting as GDAP Azure Customers
  • Fixed an issue where Automate patches were being performed on action reruns
  • Fixed an issue where Automate patches were not being performed during manual onboarding
  • Fixed an issue where there was one non-dismissible notification for a recommended deployment
  • Fixed an issue where the Provider Audit table would cause an IAsyncEnumerableReader error to be thrown.
  • Fixed a potential script deadlock issue when using Invoke-CommandCached
  • Fixed an issue where the ExtraData property from an IProvider was inaccessible.
  • Fixed an issue where some dynamic form bind errors were not showing in the script editor
  • Fixed an issue with persons selected to be notified on onboarding screen not showing up
  • Fixed an issue updating tenant slugs on the tenant list page
  • Fixed an issue where licenses were failing to be updated
  • Fixed an issue where versions listed on the software details page were not sorting by version correctly
  • Fixed an issue with ImmyAgent EXE installers being corrupted during download.
  • Fixed an issue where integrations would sometimes become unhealthy on startup with "The JSON value could not be converted to System.Boolean...`
  • The "More Actions" link on global software is now hidden for non-immybot-core users since no actions can be taken
  • Fixed an issue on the dashboard table where the company column was not sorting or filtering
  • Fixed an issue where users could update/delete the ImmyAgent integration which could potentially cause issues
  • Fixed an ordering issue on the deployment page where the cross-tenant tag target type was showing a lower priority than integration target types
  • Fixed a wrapping issue with the new integration page
  • Fixed an issue where non-msp users could not see their tenant's filter script deployments
  • Made Get-ImmyAzureAuthHeader cmdlet respect the app registration that the customer was consented with
  • Fixed an issue where computers show licensed even when they haven't had maint in the current usage period

0.57.6

Released 08-10-23

Improvements

  • Implemented new Get-CwControlFields cmdlet

    image

  • Added a new Get-OTP cmdlet, capable of creating TOTP & HOTP codes.

    image

  • The script that downloads and starts the ephemeral agent script now uses an absolute path for PowerShell. %systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe

  • Optimized the code responsible for syncing agents from integrations

Bug Fixes

  • Fixed an issue where array values specified in the script editor parameters pane were not getting passed to the script
  • Fixed an issue where reran actions may have contained incorrect information from another action
  • Fixed an issue where rerunning a session after rerunning an action would cause the new session to only perform the reran action
  • Fixed an issue where ImmyBot would show offline when you did not have access to login

0.57.5

Released 08-08-23

Bug Fixes

  • Fixed a bug introduced in 0.57.4 where the default value for CW Control's Custom Property Client Name and Secondary Index fields had the wrong values
  • Fixed an issue with new instances having a disabled / non-working ImmyBot integration

0.57.4

Released 08-07-23

Improvements

  • Started work on improving performance of computer and tenant deletions. More improvements to come.
  • In the global script editor, scripts with param blocks will now only have the parameters auto-binded when the script has been newly opened instead of when it was focused.
  • Fixed a bug where undefined would sometimes show up as an error in the global script editor output.
  • Eliminated 2-step Verify/Create on Integrations
  • Updated the error message you get when you attempt to create a deployment for software that does not have a version to deploy. "There are no available versions for this software. The software must have a static version, a dynamic version script, or be linked to software from an alternate provider such as Ninite or Chocolatey in order to be installed."
  • Made New-Parameter -Position nullable and not default to 0 to prevent parameter binding error "Cannot bind positional parameters because no names were given."
  • The ephemeral agent exe now has the correct version where before it would always have 0.0.1
  • Moved Remote Control feature to the top of the Preference Page for better visibility
  • Package Analyzer will fallback to use FileVersion if ProductVersion is missing on EXE installers.
  • Package Analyzer will now return relative path to installer nested multiple directories inside of a ZIP archive. For example, a package bundled like (MyInstallerPackage.zip) => [MyInstallerPackage] -> [InnerFolder] -> Setup.exe will return InnerFolder\Setup.exe as the FileName instead of Setup.exe
  • Package Analyzer will now fallback to a list of known-good DNS servers for downloading binary. This should help alleviate issues for a few customers where Azure's default DNS fails to resolve the address. Errors stemming from downloading issues will additionally contain a DNS Audit trail. Package Analyzer download speed has been improved by up to 50%, reducing time waiting for analysis.

Bug Fixes

  • Fixed a NullReferenceException when no response was received from InvokeCWARestMethod
  • Fixes an issue where the computer was not showing the active session tag for all computers that had one
  • Fixed an issue where Cloud Tasks were failing because pre-flight script were trying to run
  • Remote Control: Fixed an issue where some special characters would cause "Type Clipboard" function to fail.
  • Fixed a bug with Package Analyzer which caused it to fail to analyze some installers where the server inappropriately returned a quoted filename.
  • Fixed an issue with Package Analyzer failing to extrapolate filename (if one wasn't provided) from the download URL if the server didn't return a content-disposition header.

0.57.3

Released 07-14-23

Improvements

  • Optimized the load time of the Computer List page

Bug Fixes

  • Fixed an issue where an ephemeral agent would disconnect after attempting to run a user script without a logged-on user

0.57.2

Released 07-11-23

Bug Fixes

  • Limited Support Technician access to members of the Immense Entra ID with the Immy Support Technician role

0.57.1

Released 06-30-23

Fixed an issue for new instances deployed without an IoTHub being unable to install Immy Agents.

0.57.0

Released 06-29-23

Agent Delivery - Whitelist cdn.immy.bot

Make sure to whitelist cdn.immy.bot in your endpoint protection tools.

The ImmyBot Agent and the Ephemeral Agent are now served from a Cloudflare CDN at https://cdn.immy.bot

ImmyBot Remote Control (Remotely) - BETA

Initial support for remote control is here!

The newest version of the ImmyBot Agent will support the ability to establish remote control sessions.

Remote control can be established by clicking the "Open Remote Session" dropdown and then clicking the "ImmyBot Agent" option.

image

You can also select the initial Windows session within which to start remote control.

Task Deprecation & Supersedence

Old tasks can now be deprecated in favor of newer tasks.

You can deprecate a task by supply a "Superseded By" task on the task form. You can additionally supply a parameter migration script that will migrate the parameters specified by the deprecated deployment to the parameters of the superseding one.

image

Schedule using the computer's timezone and Active Hours

The schedule details page has been cleaned up and re-organized for easier understanding.

We are introducing two new ways to schedule execution against a computer.

  1. Use the computer's timezone for execution

    A common complaint is that it is hard to schedule maintenance for a group of computers that are all in different timezones. Another complaint is that scheduling maintenance against laptops for people who travel is difficult because they are constantly changing timezones.

    You now have the option to schedule maintenance at a particular time according to the timezone specified by the computer.

  2. Start execution after active hours if available

    For computers that are running Windows 10+, you can opt into using the Active Hours specified by the computer instead of executing at the specified time on the schedule.

    For now, if active hours are used, execution will be scheduled in the middle of non-active hours. e.g. If active hours ends at 1pm and starts again at 10pm, we will schedule execution at 5pm.

Active Hours as Business Hours

When active hours are used to schedule maintenance for a computer, checks against business hours will resolve to active hours. This is necessary because we don't want to accidentally reboot the computer when in use, when "Suppress Reboots During Business Hours" is checked on the schedule.

Both "Use computer's timezone for execution", and "Start execution after active hours if available" are available for use on the deployment details page as well.

Pending Ephemeral Agent Session Status

A new session status has been added called Pending Ephemeral Agent Session.

Anytime during a maintenance session, if we fail to establish an ephemeral agent, the session will go into Pending Ephemeral Agent Session. The action it was performing when the failure occurred will not be failed so that it can resume when the ephemeral agent is finally connected. A background service will continually attempt to establish an ephemeral agent on sessions that are marked with this status.

With this change, we were able to remove the Script Execution Circuit Breaker that has not proved to be very useful.

Terminating Exceptions

System scripts will now throw terminating exceptions if we fail to establish an ephemeral agent or an actual terminating exception was thrown in the script.

Metascripts will also now throw terminating exceptions when an ephemeral agent fails to establish when using Invoke-ImmyCommand. You must now explicitly use a try/catch in order to prevent the terminating exception from ending the script.

This behavior will prevent software and tasks from continuing script execution in the event of a terminating exception, which will prevent false-positive results and report better errors.

User Script Terminating Exceptions

When running Invoke-ImmyCommand -Context "User", an additional parameter will be available called TerminateFromNoLoggedOnUser. When set, the script with throw a terminating exception when there is no logged on user. By default, user scripts will not throw a terminating exception when there is no logged on user.

Made pending-connectivity session triggering more robust

  • Removed some event handling from pending connectivity service since the session finished event is not emitted in all circumstances
  • Reduced different entrypoints to starting a session to improve consistency and reliability
  • Added logic to check for and start the first pending connectivity session in the queue when any session finishes (both pass and fail) directly from the Immy Service Job

Session Preflight Scripts

A new script category has been added called "Preflight". Preflight scripts run after an ephemeral agent is established and before we attempt to run any other script against a computer. If the preflight scripts do not return any exceptions, then preflight is consider "passed" and scripts can be executed as normal. Otherwise, if any preflight script fails, script execution will not be allowed against a computer.

The major reason we added preflight scripts was to detect whether a computer is currently applying windows updates. Agents can report online and connected while windows updates are applying. However, it's possible that certain actions will not perform successfully while the computer is applying those updates. If we attempt to start or resume a session while windows updates are applying, we run the risk of rebooting the computer during an update and potentially bricking it.

The first global preflight script that has been added will check if the computer is currently applying windows updates and will throw an exception if it is, preventing script execution on the computer until windows updates are completed.

Pending Preflight Session Status

A new session status has been added called "Pending Preflight". When a preflight script fails during a session, the session will go into "Pending Preflight". The action that was actively being performed when the preflight script failed will not failed so that it can be resumed when the computer passes preflight. A background service will continually attempt to run preflight against a computer until it passes. Once preflight passes, the session will continue.

Built-In ImmyBot Agent Software

Before 0.57.0, we had hardcoded an action to perform the ImmyBot Agent update, which resulted in a lot of failures.

The built-in agent update now utilizes the ImmyBot Agent software located in the global repository.

Before

image

After

image

Prepared removal of Azure IotHub for the ImmyBot Agent

The 0.57.0 ImmyBot agent introduces a new method of establishing a connection to the backend using WebSockets.

With this approach, we will be able to remove dependency upon the Azure IoT Hub and provide a more reliable connection to devices.

Other Improvements

  • Added license icons on computers to indicate which ones are actively being counted towards the license count for the month.
  • For instances on Immy Standard, we added a checkbox on the computer list page that allows you to filter to only computers that are licensed
  • Added fallback for tls when using Download-FileToFolder
  • The .dlls extracted from the ImmyBot Agent and Ephemeral Agent executable are now signed, which should make whitelisting by our certificate in A/V tools easier.
  • Improved the readability of the billing page
  • Renamed Get-Hash to Get-KeyedHash as it only supported keyed hashes like HMACMD5, HMACSHA1, HMACSHA256, HMACSHA384, and HMACSHA512
  • Implemented Get-Hash for non-Keyed algorithms like MD5, SHA1, SHA256, SHA384, and SHA512
  • The "Update agent on device" button under the Agents Tab -> ImmyBot agent is clickable even when the computer is offline. It will put the session in pending connectivity and update when the computer comes back online.
  • For ImmyBot Agents version 0.57.0 and above, the version is now displayed on the Agents tab.
  • C:\Program Files (x86)\ImmyBot\Immybot.Agent.exe now contains the correct file version
  • ImmyBot Remote Control and Require Consent For External Session Provider tenant preferences now have a tri-state value. They can be enabled, disabled, or use the application default value.
  • Actions can now be sorted by the date/time execution started
  • ImmyAgent binaries now show correct version
  • Added a tenant preference to enable/disable the User Affinity Sync

Bug Fixes

  • Fixed an issue where commands and output from the computer terminal and the script editor were showing up in both
  • Fixed an issue where creating a new filter script or metascript from the deployment page was selecting the wrong execution context
  • Fixed another issue that was causing the azure user sync to sometimes fail
  • Fixed an issue with schedules not being able to update when they are using a deleted filter script
  • Fixed an issue where failing to refresh an agent's online status could cause detection to fail
  • Fixed a potential bug that could occur when script-output recovery would happen, that would cause a false Recovery is not possible error to be thrown.
  • Fixed issue where running a User-context script w/o a logged on user would cause throw $args[0]; # If you can see this, report it to the ImmyBot Dev Team. to be displayed in powershell output.
  • Fixed an issue with Update If Found deployments for software with a test script incorrectly running the test script even when the software was not found
  • Fixed some theme color issues with table column choosers and filters
  • Cleaned up action error messages when a test or get script failed.
  • Fixed an issue where the session would not go to pending connectivity when the AgentsOfflineException would be thrown but a provider agent is incorrectly reporting online still.
  • Fixed an exception that was occurring when duplicating some global maintenance tasks
  • Fixed an issue preventing the azure sync from running
  • Fixed an issue with PowerShell returning System.Type arrays causing out of memeory exceptions
  • Fixed instance of inventory json parsing exceptions causing sessions to fail hard
  • Fixed an issue with publishing the agent as a single file

0.56.5

Released 2023-05-11

Improvements

  • Made it more obvious when actions are skipped because reboots are suppressed and the action's software requires a reboot
  • Removed the hardcoded "Uninstall by Package Info" logic from software uninstall steps since it could cause unexpected reboots
  • Updated the description of the tenant Onboarding Patching preference to indicate that it currently only applies to CW Automate
  • Added PowerShell Version to computer overview tab

Bug Fixes

  • Added missing logs around reboot checks
  • Fixed a XSS vulnerability found in param block descriptions
  • Fixed an issue where GDAP customers that need consent would show up as consented when they had previously been synced as a non-GDAP customer
  • Fixed an issue with quick deploy where it would sometimes not kick off the session
  • Fixed an issue where dynamic form errors were not clearing upon refresh
  • Fixed issue where the url in a cloud session's support request was incorrect

0.56.4

Released 2023-05-08

Bug Fixes

  • Fixed an issue where duplicating a task would not copy over all data
  • Fixed an issue that sometimes prevented the onboarding task forms from loading
  • Fixed an issue where scripts with the category "Filter Script Deployment Target" and "Metascript Deployment Target" were not automatically selecting the correct execution context
  • Fixed an issue where some actions would have incorrect parameters or variables when multiple sessions executed the script at the same time

0.56.3

Released 2023-05-04

Improvements

  • Added a note to the ImmyBot Agent installer modal indicating that there's an issue on Windows 11 22h2 builds that prevent the PPKG from working and added notes on how to resolve it.

Bug Fixes

  • Added missed user auditing to certain software, task, and deployment operations
  • Fixed an issue with assigning tags while creating a new tenant
  • Fixed an issue where schedules targeting a specific maintenance item were picking up onboarding only deployments
  • Fixed an issue where some macOS agents were not being excluded
  • Fixed an issue where navigating to a computer that did not exist threw a non-404 unexpected error
  • Fixed an issue with schedules targeting CW Control groups not being limited to the specified tenant on the schedule
  • Fixed an issue with sessions failing when attempting to retrieve bulk software and the bulk software response contains text that is not representable as valid UTF-8

0.56.2

Released 2023-04-27

Improvements

  • Updated the alert on the schedule details page when targeting a specific item to state, "Metascript deployment targets are not supported when the schedule is limited to a specific maintenance item because it would require executing a script against every computer in the system."
  • Azure User Sync now excludes external users
  • Renamed the "All" tab to "Active" on the computer list page to avoid confusion. "All" implies it should contain "Pending" agents, which it does not.

Bug Fixes

  • Fixed an issue where new instances would not be able to use immy agent provider
  • Fixed an issue where some business hours were not being computed correctly and the session incorrectly reported that we were within business hours
  • Fixed an issue with the computer terminal not maintaining execution when toggling between tabs
  • Fixed bug where exceptions that occur while resolving Cw Control remote screen share URLs caused the maintenance session page to not load any data
  • Software Post Uninstall phase is now only shown when the software or version has a post uninstall script

0.56.1

Released 2023-04-24

Improvements

  • When an agent is identified to a computer that already exists in ImmyBot, we will now automatically select the "Wiped" option if the computer name and OS install date reported by the agent are different than what is reported by the existing computer.
  • The ephemeral agent no longer extracts to c:/windows/temp. This alleviates issues around A/V blocking .dlls coming from the temp directory, and also alleviates issues around windows randomly removing required .dlls for the ephemeral agent to run.
  • Updated the identification log text that explains why a manual decision is required
  • Added the manufacturer name and serial number of an agent in the agent identification logs when resolving a trusted manufacturer
  • Added ability to group by target on the deployment list

Bug Fixes

  • Fixed issue with tenant tags not resolving deployments
  • Fixed issue where cancelling sessions would sometimes cause session to retry some number of times
  • Fixed an issue causing new instances immy agent integration to not be properly initialized
  • Fixed a bug where alternate providers were not getting disabled when dynamic versions are selected
  • Fixed an internal issue where Immy Support Technicians were not allowed access due to existing expired access requests
  • Fixed an issue where a pending agent that has the same trusted manufacturer and serial number as an existing computer would sometimes require a manual decision instead of automatically replacing the existing agent

0.56.0

Released 2023-04-17

Tenant and Person tags

Support has been added for Person and Tenant tags.

A tag no longer has a "type". A tag can be assigned to any person, computer, or tenant.

Deploying a software or maintenance task with a tag target type now resolves computers for the following:

  1. computers that have the tag
  2. computers for tenants that have the tag
  3. primary computers for people who have the tag

Deploying a cloud task can now target tags assigned to tenants, as well as integrations that support client groups.

Now that tags can target tenants, you can create a schedule that targets tags to run a single schedule across multiple tenants.

Tags for tenants can be assigned on the tenant list and tenant details pages.

Tags for persons can be assigned on the person list and person details pages.

ImmyBot Session Support Requests

You can now request support from Immy technicians from maintenance sessions. When requesting support, you can:

  • Add details about the issue you are experiencing
  • Select whether an Immy technician should be allowed to access your instance
    • If selected, there is no need to approve an access request for the Immy tech to log into your instance
    • You can disable Immy technician access at any time from the Application Preferences page
  • Select whether the session's logs and computer timeline events should be available in the support ticket
    • The logs / timeline events are formatted as a text file and stored in your instance's blob storage account, and a link to download this file is added to the support ticket
    • You can also download this file before submitting the ticket

Global Script Editor

Below are some of the new features in the script editor!

  • General VS Code "vibe"
  • Open/Close multiple scripts(tabs)
  • Go To Definition support for function scripts
  • Script Search and Directory Views with result highlighting
  • Variable preview based on script execution context, category, and a selected target (computer, tenant, task, software).
  • Parameter Form for scripts with param blocks, selected software that have configuration tasks, and selected maintenance tasks that have parameters
  • Closing a script tab with unsaved changes alerts you
  • Function name/definition view that shows the results of Get-Help {functionName} -Detailed | Out-String
  • Basic hotkey support

image

image

image

image

You can access the script editor from the top navbar or in the sidebar under Library -> Script Editor

image

image

Parameter Value View

Sometimes deployment parameters result in an exception when performing the binding. This can happens when the parameter types have been updated but the values have not.

You can now toggle the parameter form to a value view that provides you the ability to remove/reset values that may be causing issues.

image

Tenant Software

The Tenant Details Page now has a Software tab that displays a grid of software that was detected on endpoint machines and could be matched to software in the global database. The result set is grouped by global software name/ID and sorted descending by total installs (i.e. number of devices that have it installed). Each group has a Deploy button, which will open a new deployment for the software that targets all computers under that tenant.

image

Other Improvements

  • On the Deployment List Page, tenants with missing or deleted tenants will show Tenant no-longer exists under tenant column and the entire row will be highlighted red.
  • The current ImmyBot agent version is now shown on the frontend in the installer modal and in the sidebar's ImmyBot Agent Download box.
  • Added the ImmyBot version in a session log at the start of a session. This will be useful when debugging session-related issues since we can correlate the problems to the version ImmyBot was on when the session ran.
  • You can now install the ImmyBot Script Editor as a progressive web app.
  • Cleaned up some of the error messages returned by integrations
  • Fixed issues with tag deployments not getting applied during an onboarding session
  • System scripts that use param blocks will now through an error letting users known that param blocks are only available in metascript and cloudscript contexts.
  • Maintenance tasks can now specify function scripts
  • Added a session log when attempting to apply a windows patch since there are currently none
  • Added a check for whether the computer is online before attempting to apply windows patches
  • Get-Hash now supports HMACMD5, HMACSHA256, HMACSHA384, and HMACSHA512
  • Added back session list "Completed" count and filter and removed "All"
  • Added internal auditing tables for scripts, software, tasks, and deployments. The future plan is to expose an audit trail for these objects so you can see who made changes and when they were made, with the ability to revert changes.
  • Moved the tenant tag selector to the edit tab. The tags now show inline next to the tenant's name
  • Made session log database handler more efficient by breaking large updates into smaller queries
  • Reduced likelihood of CW Control Integration failing to sync devices.
  • The deployment page no longer hangs when attempting to preview/deploy to a large number of computers
  • Improved Package Analyzer to handle improper/malformed content-disposition header returned from some file servers, which resulted in a failure to analyze a package.
  • Expired users can now be un-expired from the edit user form
  • Wait-ImmyComputer (and therefor Restart-ComputerAndWait) has been improved with a new RebootWithPollingFallback option that should help alleviate issues with ImmyBot not detecting when a machine has been rebooted and now back online. This option will periodically poll providers/integrations about machine connectivity status if they haven't reported target machine as online after an expected WaitForEventTimeout period.
  • You can now define multiple functions in a Module script and import them into other scripts using Import-Module
  • Maintenance task get/test can now create child actions during detection using the new cmdlet Add-ImmyMaintenanceActionChild

Bug Fixes

  • Fixed an exception in the Sync Azure Users Job that was preventing some person entities from being deleted
  • Fixed a bug where integrations would all become unhealthy until ImmyBot restarts when one provider failed to initialize in a timely fashion
  • Fixed an issue where a specific unrecoverable ephemeral agent exception was being suppressed
  • Fixed an issue with postpone button from scheduled maintenance emails not actually postponing the session in some circumstances
  • Fixed unnecessary logging of an exception when an Ephemeral Agent Session was disposed correctly
  • Fixed an internal exception with ephemeral agent sessions where we were failing to dispose of the connection timeout callback
  • Fixed issue with instances that have large session logs tables having poor database performance and dropping session logs
  • Fixed issue with logs displayed on maintenance sessions occasionally showing up unsorted-by-timestamp
  • Fixed an issue that was allowing a device to sleep when the ephemeral is connected
  • Potentially fixed an issue where sessions would get stuck in the running status after the backend restarted
  • Fixed an issue where tasks marked to be ignored would show as compliant instead of ignored on the maintenance session's action list
  • Resolve potential bug with ImmyAgent causing IoTHub issues
  • Fixed browser warnings about using variable names starting with $ or _ in setup()
  • Restart-ComputerAndWait now will show agent timeline events in correct order
  • Fixed issue with gdap customers not showing up when azure permission level is reset from custom to default and custom didn't have correct permissions
  • Fixed an issue with media missing the base url
  • Fixed an issue where software deployments don't report download failures correctly and will continue on.
  • Fixed an issue where quick deploying software would not also deploy the configuration task if it had one
  • Fixed $using variables on single line scripts
  • Fixed an issue where the cross tenant deployment grooup was not sorted at the top of the deployment list page
  • Delete existing UserAffinities when new user is set to prevent reverting to old user

0.55.13

Released 2023-04-03

Bug Fixes

  • Fixed a regression in 0.55.12 where some business hours checks would report within business hours but the computer would still be rebooted

0.55.12

Released 2023-03-31

Improvements

  • Added timespan parameter -AgentConnectionWaitTimeout to Invoke-ImmyCommand so you can override the default 5 minute wait time.

Bug Fixes

  • Fixed an issue where some session logs were failing to save due to issues sanitizing a script's param block
  • Fixed an issue where deployments targeting an Azure Group were not applying when the computer's primary user was set during the onboarding stage
  • Fixed an issue where executing quick deployments against computers needing onboarding would incorrectly trigger the onboarding stage
  • Fixed an issue with the onboarding form's assignment links not bringing users to the specified assignment
  • Fixed an issue where reboots were occurring during business hours than spanned over to the following day. e.g 9am - 4am
  • Fixed an issue where the Primary User task was running after Set Computer Name and Domain Join. This was causing computers to not get the correct name when the computer is named after the primary user.
  • Fixed a long-standing issue where Immy PPKGs wouldn't reliably disable sleep/hibernation when the option was checked on some computers. This has been improved.

0.55.11

Released 2023-03-22

Bug Fixes

  • Fixed issues with the websocket connection randomly disconnecting when adhoc deploying to a large number of computers
  • Fixed an issue with PowerShell Editor Services continually starting and stopping

0.55.10

Released 2023-03-21

Bug Fixes

  • Fixed an issue where adhoc deployed sessions would go over the session limit and cause performance issues
  • Fixed an issue in the ImmyBot Agent that would cause devices to rapidly send connected messages to the IoTHub, depleting the quota and preventing new devices from registering

0.55.9

Released 2023-03-16

Improvements

  • Using the [Person()] attribute on param block parameters now takes into account the selected tenant on the deployment form and only shows people belonging to the selected tenant.
  • The computer list page now supports the following query parameters: filter and includeDisconnected. This can be used to filter the computer list e.g demo.immy.bot/computers?filter=desktop-R2D2&includeDisconnected=true

Bug Fixes

  • Fixed an issue with hashtable parameter values not working when provided from the deployment
  • Fixed an issue with the CW Control device sync

0.55.8

Released 2023-03-15

Improvements

  • Improved performance of syncing devices from all integrations. Automate in particular was failing to sync device updates (online/offline statuses).

Bug Fixes

  • Fixed a WebSocket exception where we were attempting to close the WebSocket after it was already closed

0.55.7

Released 2023-03-14

Improvements

  • Parameters for "Not Present" deployments now show up on the deployment edit page.
  • Removed 100 and 1000 page sizes from all tables for performance reasons

Bug Fixes

  • Fixed an issue in the azure sync users job that was causing it to fail
  • Fixed more issues with the ephemeral agent getting locked up
  • Fixed an issue where agent disconnect events would show duplicated in the timeline events table
  • Fixed an issue where computers would be moved to needs-onboarding after a new agent connects for an existing online computer
  • Fixed issue where newly-installed immy agents would not result in new computers in ImmyBot under some circumstances

0.55.6

Released 2023-03-08

Improvements

  • Improved performance of searching the main computer list
  • Added a button near maintenance task parameters to copy the parameters as a script param block string. Useful in converting a task to use a script param block

Bug Fixes

  • Fixed an issue where identification logs would sometimes not be sorted by date.
  • Fixed an issue where we were not considering case-insensitive serial numbers for trusted manufacturers
  • Made non-admins able to delete their tenant's computers
  • Made non-admins able to add and remove tags from their tenant's computers
  • Fixed an exception that was occurring where the azure sync was trying to delete people who existed as an Immy user.
  • Fix issue with PowerShell formatting of System.Version

0.55.5

Released 2023-02-28

Improvements

  • Improved performance of session counts on session list page

Bug Fixes

  • Fixed an exception that was occurring frequently when the ephemeral agent established a websocket connection
  • Fixed an internal error that occurred when we add function scripts to the PowerShell InitialSessionState

0.55.4

Released 2023-02-24

Improvements

  • A new application preference has been added: "Allow Non-Admins and Non-MSP Users to Use Terminal and Edit Scripts"
    • Default: disabled (by default, only MSP Admins will be able to use terminals or edit scripts)
  • Added ephemeral agent details under the Computer Details Page -> Agents tab with the ability to kill the active ephemeral agent

Bug Fixes

  • The ImmyStarter plan no longer allows maintenance to be run against computers that were added into Immy over 7 days ago.
  • Added "Tags" to the default display set returned from Get-ImmyComputer

0.55.3

Released 2023-02-21

Improvements

  • Syncing azure users now deletes people in Immy that no longer exist in Azure (if the person in Immy has the Azure Object Id set).
  • You can now upload .msp, .appx, .appxbundle, .msix, and .msixbundle installer files!

Bug Fixes

  • Fixed an issue related to N-Central providers executing scripts on machines

0.55.2

Released 2023-02-14

Improvements

  • Increased the font-weight of heading text in the light theme for better contrast
  • Fixed an issue where some global software and tasks were incorrectly failing due to permission issues.
  • Updated dynamic version scripts to show logs even when it is already cached
  • Removed maintenance task parameter description from onboarding form unless the parameter is being specified
  • Made onboarding task/assignment title bar visible when scrolling down on dynamic parameter panels
  • Added ability to manually refresh dynamic parameters on onboarding form

Bug Fixes

  • Fixed an issue with loading deployments that targeted people where the deployment wouldn't allow saving
  • Fixed an issue where rerunning a session that contained reran actions would fail unexpectedly
  • Fixed an issue with binding malformed uri parameters

0.55.1

Released 2023-02-09

Improvements

  • Added batch action to maintenance session list to cancel all incomplete sessions.
    • image
  • Improved the performance of the integration client's table. Instances with thousands of clients and tenants should now be able to use this page without running into performance issues.
  • Updated the ImmyBot backend from .net 6 to .net 7

Bug Fixes

  • Fixed an issue that prevented the maintenance email's reboot now button from rebooting the computer
  • Fixed an issue where some assignments using tags would not be resolved to a computer due to using data from a stale cache
  • Fixed an issue CW Control integration where it was not forcing https:// on the url

0.55.0

Released 2023-02-07

Stale Computers

A new "Stale" tab has been added to the Computers List page showing devices that have not had a recent agent connection event. By default, the staleness threshold is 30 days. This value can be configured from the System Preferences page.

image

This feature can be used to cleanup old computers when you are coming close to the maximum limit for computers.

Dynamic Maintenance Task Parameters (PowerShell Param Blocks)

Maintenance task parameters can now be defined dynamically using a script's param() and dynamicparam{} block.

image

PowerShell has a robust parameter definition and validation engine. By leveraging it, we give ourselves features like:

  • Parameter Sets
  • Regex Validation
  • Conditional/Dynamic Parameters
  • Dynamic Values
  • Type enforcement

When deploying Onboarding tasks, you can define which parameters should be visible to the technician, while hiding others or setting their defaults in the Deployment. image

GDAP Support

"GDAP Customer Syncing" option has been added to the Azure settings page. Enabling this option does the following:

  • Adds the DelegatedAdminRelationship.Read.All permission to ImmyBot's default app registration, to allow retrieval of your GDAP customers
  • Enables ImmyBot to offer a consent link for each GDAP customer to be synced by ImmyBot

Please see the GDAP Customer Syncing documentation for usage details.

Important! If you are using a custom app registration (also known as the CSP App Registration), your app registration must have a Web redirect URI of https://<your-domain>.immy.bot/consent-callback, replacing <your-domain> appropriately. Please see the updated custom app registration docs for details on how to add the redirect URI

Other Improvements

  • Onboarding only maintenance tasks now have an option to "Ignore during automatic onboarding". This is useful if you have an installer set to automatically onboard the computer and the task requires data that wasn't able to be provided.
  • Improved code around establishing Ephemeral Agent connection & eliminated possible race condition.
  • Prepend an "[ImmyBot User]" tag for the username that displays for remote session started from a supported provider. This makes it clear at a glance who is connected to a machine initiated from an ImmyBot user.
  • Removed the need for executing suspicious-looking encoded powershell for N-Central integration which would trigger some AV alerts while also moderately decreasing latency to start ephemeral agent.
  • When the Immy Agent fails to update during a maintenance session, it will now retry up to 3 times in case it failed due to a transient error
  • You can now assign tags to a computer from its Onboarding form
    • image
  • When we run a script and to establish an ephemeral agent and detect that there are no online agents, we only wait 5 minutes instead of 30 minutes. For integrations like Automate and N-Central and don't support connectivity changed events, a machine would potentially restart so fast the RMM was unaware, therefore we would wait 30 minutes before realizing the machine was actually online.
  • Removed execute and verify progress bars when action is a task monitor, and changed the "detect" progress text to "monitor".
  • Added the ability to change a computer's primary user from the overview page.
  • Improved performance of computer list page when sorting by Date Created
  • Added -IncludeTags switch parameter to Get-ImmyComputer that includes an array of tags containing the tag id and the tag name
  • Added a date input to the dashboard page to optionally return actions that were executed on or after the specified date
  • Added basic health check functionality to all integrations that were missing health checks
  • Added a test suite for the NCentral integration to run in our build pipeline to help reduce bugs
  • Made the main scripts table use server-side pagination to decrease the amount of data initially transferred to the page. Global scripts are now showing over 3MB combined.
  • Added better error messages when we fail to sync users due to permissions issues
  • Improved and simplified some internal logic related to permissions in our Metascript cmdlets

Bug Fixes

  • Fixed an issue with tag acccess levels not saving the limited tenants selected
  • Fixed an issue with metacript exception handling where any error with the category OperationStopped was being treated as terminating exception
  • Fixed an issue with Uri parameter values being inserted into scripts with type string instead of type Uri
  • Fixed an issue where the software upload analysis result description had the wrong color making it impossible to read
  • Fixed issue on the computer list -> pending tab where massive exceptions were not limited to a reasonable height
  • Fixed issues with SQL queries timing out early than intended Fixed a bug that would prevent users from actually using the N-Central integration with servers that are hosted on a non-standard port.
  • Fixed an issue where the tenant link on a computer's overview page had a bunch of whitespace that could be accidentally clicked.

0.54.8

Released 2023-01-17

Bug Fixes

  • Fixed a potential deadlock that could cause the ephemeral agent to never connect. Potentially isolated to just devices using CW Automate
  • Fixed a potential deadlock in the N-Central integration that could cause Immy to hang up
  • Fixed some frontend issues where a maintenance action's status and reason would not show correctly for certain values
  • Fixed an issue where a terminating exception in a custom download script would get swallowed and allow the install to continue anyway

Releases in 2022

Go to 2022 releases

- +Write-Host "Got WebHook!"

Atomic and Cache Cmdlets

Added 3 new Cmdlets, Set-CacheKeyExpiration , Invoke-CommandCached, and Invoke-AtomicCommand

image

image

image

Other Improvements

  • Error text for deployment parameters now show as markdown
  • Added Completion for Attribute parameters
  • Immy-specific core types no longer tab complete to lowercase
  • Immy-specific Attributes like DropdownAttribute and OAuthConsentAttribute no longer tab-complete to include "Attribute"
  • Remote control can now automatically reconnect after logging off a Windows user or rebooting the computer.
  • Improved performance of loading maintenance sessions with hundreds of actions
  • Added a background service that periodically checks for online computers that have pending connectivity sessions and runs them
  • Get-Hash cmdlet now supports an additional AsHex switch to get a hexadecimal output.
  • Prevented recurring inventory jobs from retrying to connect an ephemeral agent more than once so we can quickly move on to the next computer needing inventory
  • You can now target provider client groups (e.g. CW Manage Agreement Products) with cloud tasks
  • Reduced memory footprint of some session related data
  • Added an Agents tab to the Integration Details Page if the integration supports listing agents.
  • Saving a script in the script editor now shows a loading icon in the tab and disables the buttons to prevent multiple requests
  • You can now link ImmyBot tenants to Azure tenants (including partner tenants) from the Tenant Edit page
  • You can now have multiple MSP tenants
  • ImmyBot tenants can be upgraded to MSP tenants from the Tenant Edit page
  • The software dropdown on the license details page is now limited to software that support licenses
  • Added text to the maintenance ordering page that explains that onboarding actions will always be executed at the beginning of the session in the order that they are listed.
  • Added a log interceptor that can be used for dynamic and built-in integrations to log method calls
  • Implemented ISupportsAgentUninstallToken and Get-IntegrationAgentUninstallToken (for SentinelOne) and removed the need for specifying the clientid

Bug Fixes

  • Fixed issue where Computers running ImmyAgent < 0.51.0 and no other agents failed to establish an Ephemeral connection.
  • Fixed an issue where a session would fail with "Uncaught exception running maintenance session. Computer does not have any enabled agents that support running scripts"
  • Fixed an issue where updating a schedule would bring you back to the computer list page
  • Added some additional logging around the Immy Agent when attempting to establish an ephemeral agent connection
  • Fixed possible errors that could occur after an IoT Hub has been removed
  • Fixed an issue where exporting to Excel from dashboard would fail if there are multiple maintenance items with the same name
  • Fixed a bug where GDAP Customer would incorrectly show up as a warning in certain circumstances, causing confusion consenting as GDAP Azure Customers
  • Fixed an issue where Automate patches were being performed on action reruns
  • Fixed an issue where Automate patches were not being performed during manual onboarding
  • Fixed an issue where there was one non-dismissible notification for a recommended deployment
  • Fixed an issue where the Provider Audit table would cause an IAsyncEnumerableReader error to be thrown.
  • Fixed a potential script deadlock issue when using Invoke-CommandCached
  • Fixed an issue where the ExtraData property from an IProvider was inaccessible.
  • Fixed an issue where some dynamic form bind errors were not showing in the script editor
  • Fixed an issue with persons selected to be notified on onboarding screen not showing up
  • Fixed an issue updating tenant slugs on the tenant list page
  • Fixed an issue where licenses were failing to be updated
  • Fixed an issue where versions listed on the software details page were not sorting by version correctly
  • Fixed an issue with ImmyAgent EXE installers being corrupted during download.
  • Fixed an issue where integrations would sometimes become unhealthy on startup with "The JSON value could not be converted to System.Boolean...`
  • The "More Actions" link on global software is now hidden for non-immybot-core users since no actions can be taken
  • Fixed an issue on the dashboard table where the company column was not sorting or filtering
  • Fixed an issue where users could update/delete the ImmyAgent integration which could potentially cause issues
  • Fixed an ordering issue on the deployment page where the cross-tenant tag target type was showing a lower priority than integration target types
  • Fixed a wrapping issue with the new integration page
  • Fixed an issue where non-msp users could not see their tenant's filter script deployments
  • Made Get-ImmyAzureAuthHeader cmdlet respect the app registration that the customer was consented with
  • Fixed an issue where computers show licensed even when they haven't had maint in the current usage period

0.57.6

Released 08-10-23

Improvements

  • Implemented new Get-CwControlFields cmdlet

    image

  • Added a new Get-OTP cmdlet, capable of creating TOTP & HOTP codes.

    image

  • The script that downloads and starts the ephemeral agent script now uses an absolute path for PowerShell. %systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe

  • Optimized the code responsible for syncing agents from integrations

Bug Fixes

  • Fixed an issue where array values specified in the script editor parameters pane were not getting passed to the script
  • Fixed an issue where reran actions may have contained incorrect information from another action
  • Fixed an issue where rerunning a session after rerunning an action would cause the new session to only perform the reran action
  • Fixed an issue where ImmyBot would show offline when you did not have access to login

0.57.5

Released 08-08-23

Bug Fixes

  • Fixed a bug introduced in 0.57.4 where the default value for CW Control's Custom Property Client Name and Secondary Index fields had the wrong values
  • Fixed an issue with new instances having a disabled / non-working ImmyBot integration

0.57.4

Released 08-07-23

Improvements

  • Started work on improving performance of computer and tenant deletions. More improvements to come.
  • In the global script editor, scripts with param blocks will now only have the parameters auto-binded when the script has been newly opened instead of when it was focused.
  • Fixed a bug where undefined would sometimes show up as an error in the global script editor output.
  • Eliminated 2-step Verify/Create on Integrations
  • Updated the error message you get when you attempt to create a deployment for software that does not have a version to deploy. "There are no available versions for this software. The software must have a static version, a dynamic version script, or be linked to software from an alternate provider such as Ninite or Chocolatey in order to be installed."
  • Made New-Parameter -Position nullable and not default to 0 to prevent parameter binding error "Cannot bind positional parameters because no names were given."
  • The ephemeral agent exe now has the correct version where before it would always have 0.0.1
  • Moved Remote Control feature to the top of the Preference Page for better visibility
  • Package Analyzer will fallback to use FileVersion if ProductVersion is missing on EXE installers.
  • Package Analyzer will now return relative path to installer nested multiple directories inside of a ZIP archive. For example, a package bundled like (MyInstallerPackage.zip) => [MyInstallerPackage] -> [InnerFolder] -> Setup.exe will return InnerFolder\Setup.exe as the FileName instead of Setup.exe
  • Package Analyzer will now fallback to a list of known-good DNS servers for downloading binary. This should help alleviate issues for a few customers where Azure's default DNS fails to resolve the address. Errors stemming from downloading issues will additionally contain a DNS Audit trail. Package Analyzer download speed has been improved by up to 50%, reducing time waiting for analysis.

Bug Fixes

  • Fixed a NullReferenceException when no response was received from InvokeCWARestMethod
  • Fixes an issue where the computer was not showing the active session tag for all computers that had one
  • Fixed an issue where Cloud Tasks were failing because pre-flight script were trying to run
  • Remote Control: Fixed an issue where some special characters would cause "Type Clipboard" function to fail.
  • Fixed a bug with Package Analyzer which caused it to fail to analyze some installers where the server inappropriately returned a quoted filename.
  • Fixed an issue with Package Analyzer failing to extrapolate filename (if one wasn't provided) from the download URL if the server didn't return a content-disposition header.

0.57.3

Released 07-14-23

Improvements

  • Optimized the load time of the Computer List page

Bug Fixes

  • Fixed an issue where an ephemeral agent would disconnect after attempting to run a user script without a logged-on user

0.57.2

Released 07-11-23

Bug Fixes

  • Limited Support Technician access to members of the Immense Entra ID with the Immy Support Technician role

0.57.1

Released 06-30-23

Fixed an issue for new instances deployed without an IoTHub being unable to install Immy Agents.

0.57.0

Released 06-29-23

Agent Delivery - Whitelist cdn.immy.bot

Make sure to whitelist cdn.immy.bot in your endpoint protection tools.

The ImmyBot Agent and the Ephemeral Agent are now served from a Cloudflare CDN at https://cdn.immy.bot

ImmyBot Remote Control (Remotely) - BETA

Initial support for remote control is here!

The newest version of the ImmyBot Agent will support the ability to establish remote control sessions.

Remote control can be established by clicking the "Open Remote Session" dropdown and then clicking the "ImmyBot Agent" option.

image

You can also select the initial Windows session within which to start remote control.

Task Deprecation & Supersedence

Old tasks can now be deprecated in favor of newer tasks.

You can deprecate a task by supply a "Superseded By" task on the task form. You can additionally supply a parameter migration script that will migrate the parameters specified by the deprecated deployment to the parameters of the superseding one.

image

Schedule using the computer's timezone and Active Hours

The schedule details page has been cleaned up and re-organized for easier understanding.

We are introducing two new ways to schedule execution against a computer.

  1. Use the computer's timezone for execution

    A common complaint is that it is hard to schedule maintenance for a group of computers that are all in different timezones. Another complaint is that scheduling maintenance against laptops for people who travel is difficult because they are constantly changing timezones.

    You now have the option to schedule maintenance at a particular time according to the timezone specified by the computer.

  2. Start execution after active hours if available

    For computers that are running Windows 10+, you can opt into using the Active Hours specified by the computer instead of executing at the specified time on the schedule.

    For now, if active hours are used, execution will be scheduled in the middle of non-active hours. e.g. If active hours ends at 1pm and starts again at 10pm, we will schedule execution at 5pm.

Active Hours as Business Hours

When active hours are used to schedule maintenance for a computer, checks against business hours will resolve to active hours. This is necessary because we don't want to accidentally reboot the computer when in use, when "Suppress Reboots During Business Hours" is checked on the schedule.

Both "Use computer's timezone for execution", and "Start execution after active hours if available" are available for use on the deployment details page as well.

Pending Ephemeral Agent Session Status

A new session status has been added called Pending Ephemeral Agent Session.

Anytime during a maintenance session, if we fail to establish an ephemeral agent, the session will go into Pending Ephemeral Agent Session. The action it was performing when the failure occurred will not be failed so that it can resume when the ephemeral agent is finally connected. A background service will continually attempt to establish an ephemeral agent on sessions that are marked with this status.

With this change, we were able to remove the Script Execution Circuit Breaker that has not proved to be very useful.

Terminating Exceptions

System scripts will now throw terminating exceptions if we fail to establish an ephemeral agent or an actual terminating exception was thrown in the script.

Metascripts will also now throw terminating exceptions when an ephemeral agent fails to establish when using Invoke-ImmyCommand. You must now explicitly use a try/catch in order to prevent the terminating exception from ending the script.

This behavior will prevent software and tasks from continuing script execution in the event of a terminating exception, which will prevent false-positive results and report better errors.

User Script Terminating Exceptions

When running Invoke-ImmyCommand -Context "User", an additional parameter will be available called TerminateFromNoLoggedOnUser. When set, the script with throw a terminating exception when there is no logged on user. By default, user scripts will not throw a terminating exception when there is no logged on user.

Made pending-connectivity session triggering more robust

  • Removed some event handling from pending connectivity service since the session finished event is not emitted in all circumstances
  • Reduced different entrypoints to starting a session to improve consistency and reliability
  • Added logic to check for and start the first pending connectivity session in the queue when any session finishes (both pass and fail) directly from the Immy Service Job

Session Preflight Scripts

A new script category has been added called "Preflight". Preflight scripts run after an ephemeral agent is established and before we attempt to run any other script against a computer. If the preflight scripts do not return any exceptions, then preflight is consider "passed" and scripts can be executed as normal. Otherwise, if any preflight script fails, script execution will not be allowed against a computer.

The major reason we added preflight scripts was to detect whether a computer is currently applying windows updates. Agents can report online and connected while windows updates are applying. However, it's possible that certain actions will not perform successfully while the computer is applying those updates. If we attempt to start or resume a session while windows updates are applying, we run the risk of rebooting the computer during an update and potentially bricking it.

The first global preflight script that has been added will check if the computer is currently applying windows updates and will throw an exception if it is, preventing script execution on the computer until windows updates are completed.

Pending Preflight Session Status

A new session status has been added called "Pending Preflight". When a preflight script fails during a session, the session will go into "Pending Preflight". The action that was actively being performed when the preflight script failed will not failed so that it can be resumed when the computer passes preflight. A background service will continually attempt to run preflight against a computer until it passes. Once preflight passes, the session will continue.

Built-In ImmyBot Agent Software

Before 0.57.0, we had hardcoded an action to perform the ImmyBot Agent update, which resulted in a lot of failures.

The built-in agent update now utilizes the ImmyBot Agent software located in the global repository.

Before

image

After

image

Prepared removal of Azure IotHub for the ImmyBot Agent

The 0.57.0 ImmyBot agent introduces a new method of establishing a connection to the backend using WebSockets.

With this approach, we will be able to remove dependency upon the Azure IoT Hub and provide a more reliable connection to devices.

Other Improvements

  • Added license icons on computers to indicate which ones are actively being counted towards the license count for the month.
  • For instances on Immy Standard, we added a checkbox on the computer list page that allows you to filter to only computers that are licensed
  • Added fallback for tls when using Download-FileToFolder
  • The .dlls extracted from the ImmyBot Agent and Ephemeral Agent executable are now signed, which should make whitelisting by our certificate in A/V tools easier.
  • Improved the readability of the billing page
  • Renamed Get-Hash to Get-KeyedHash as it only supported keyed hashes like HMACMD5, HMACSHA1, HMACSHA256, HMACSHA384, and HMACSHA512
  • Implemented Get-Hash for non-Keyed algorithms like MD5, SHA1, SHA256, SHA384, and SHA512
  • The "Update agent on device" button under the Agents Tab -> ImmyBot agent is clickable even when the computer is offline. It will put the session in pending connectivity and update when the computer comes back online.
  • For ImmyBot Agents version 0.57.0 and above, the version is now displayed on the Agents tab.
  • C:\Program Files (x86)\ImmyBot\Immybot.Agent.exe now contains the correct file version
  • ImmyBot Remote Control and Require Consent For External Session Provider tenant preferences now have a tri-state value. They can be enabled, disabled, or use the application default value.
  • Actions can now be sorted by the date/time execution started
  • ImmyAgent binaries now show correct version
  • Added a tenant preference to enable/disable the User Affinity Sync

Bug Fixes

  • Fixed an issue where commands and output from the computer terminal and the script editor were showing up in both
  • Fixed an issue where creating a new filter script or metascript from the deployment page was selecting the wrong execution context
  • Fixed another issue that was causing the azure user sync to sometimes fail
  • Fixed an issue with schedules not being able to update when they are using a deleted filter script
  • Fixed an issue where failing to refresh an agent's online status could cause detection to fail
  • Fixed a potential bug that could occur when script-output recovery would happen, that would cause a false Recovery is not possible error to be thrown.
  • Fixed issue where running a User-context script w/o a logged on user would cause throw $args[0]; # If you can see this, report it to the ImmyBot Dev Team. to be displayed in powershell output.
  • Fixed an issue with Update If Found deployments for software with a test script incorrectly running the test script even when the software was not found
  • Fixed some theme color issues with table column choosers and filters
  • Cleaned up action error messages when a test or get script failed.
  • Fixed an issue where the session would not go to pending connectivity when the AgentsOfflineException would be thrown but a provider agent is incorrectly reporting online still.
  • Fixed an exception that was occurring when duplicating some global maintenance tasks
  • Fixed an issue preventing the azure sync from running
  • Fixed an issue with PowerShell returning System.Type arrays causing out of memeory exceptions
  • Fixed instance of inventory json parsing exceptions causing sessions to fail hard
  • Fixed an issue with publishing the agent as a single file

0.56.5

Released 2023-05-11

Improvements

  • Made it more obvious when actions are skipped because reboots are suppressed and the action's software requires a reboot
  • Removed the hardcoded "Uninstall by Package Info" logic from software uninstall steps since it could cause unexpected reboots
  • Updated the description of the tenant Onboarding Patching preference to indicate that it currently only applies to CW Automate
  • Added PowerShell Version to computer overview tab

Bug Fixes

  • Added missing logs around reboot checks
  • Fixed a XSS vulnerability found in param block descriptions
  • Fixed an issue where GDAP customers that need consent would show up as consented when they had previously been synced as a non-GDAP customer
  • Fixed an issue with quick deploy where it would sometimes not kick off the session
  • Fixed an issue where dynamic form errors were not clearing upon refresh
  • Fixed issue where the url in a cloud session's support request was incorrect

0.56.4

Released 2023-05-08

Bug Fixes

  • Fixed an issue where duplicating a task would not copy over all data
  • Fixed an issue that sometimes prevented the onboarding task forms from loading
  • Fixed an issue where scripts with the category "Filter Script Deployment Target" and "Metascript Deployment Target" were not automatically selecting the correct execution context
  • Fixed an issue where some actions would have incorrect parameters or variables when multiple sessions executed the script at the same time

0.56.3

Released 2023-05-04

Improvements

  • Added a note to the ImmyBot Agent installer modal indicating that there's an issue on Windows 11 22h2 builds that prevent the PPKG from working and added notes on how to resolve it.

Bug Fixes

  • Added missed user auditing to certain software, task, and deployment operations
  • Fixed an issue with assigning tags while creating a new tenant
  • Fixed an issue where schedules targeting a specific maintenance item were picking up onboarding only deployments
  • Fixed an issue where some macOS agents were not being excluded
  • Fixed an issue where navigating to a computer that did not exist threw a non-404 unexpected error
  • Fixed an issue with schedules targeting CW Control groups not being limited to the specified tenant on the schedule
  • Fixed an issue with sessions failing when attempting to retrieve bulk software and the bulk software response contains text that is not representable as valid UTF-8

0.56.2

Released 2023-04-27

Improvements

  • Updated the alert on the schedule details page when targeting a specific item to state, "Metascript deployment targets are not supported when the schedule is limited to a specific maintenance item because it would require executing a script against every computer in the system."
  • Azure User Sync now excludes external users
  • Renamed the "All" tab to "Active" on the computer list page to avoid confusion. "All" implies it should contain "Pending" agents, which it does not.

Bug Fixes

  • Fixed an issue where new instances would not be able to use immy agent provider
  • Fixed an issue where some business hours were not being computed correctly and the session incorrectly reported that we were within business hours
  • Fixed an issue with the computer terminal not maintaining execution when toggling between tabs
  • Fixed bug where exceptions that occur while resolving Cw Control remote screen share URLs caused the maintenance session page to not load any data
  • Software Post Uninstall phase is now only shown when the software or version has a post uninstall script

0.56.1

Released 2023-04-24

Improvements

  • When an agent is identified to a computer that already exists in ImmyBot, we will now automatically select the "Wiped" option if the computer name and OS install date reported by the agent are different than what is reported by the existing computer.
  • The ephemeral agent no longer extracts to c:/windows/temp. This alleviates issues around A/V blocking .dlls coming from the temp directory, and also alleviates issues around windows randomly removing required .dlls for the ephemeral agent to run.
  • Updated the identification log text that explains why a manual decision is required
  • Added the manufacturer name and serial number of an agent in the agent identification logs when resolving a trusted manufacturer
  • Added ability to group by target on the deployment list

Bug Fixes

  • Fixed issue with tenant tags not resolving deployments
  • Fixed issue where cancelling sessions would sometimes cause session to retry some number of times
  • Fixed an issue causing new instances immy agent integration to not be properly initialized
  • Fixed a bug where alternate providers were not getting disabled when dynamic versions are selected
  • Fixed an internal issue where Immy Support Technicians were not allowed access due to existing expired access requests
  • Fixed an issue where a pending agent that has the same trusted manufacturer and serial number as an existing computer would sometimes require a manual decision instead of automatically replacing the existing agent

0.56.0

Released 2023-04-17

Tenant and Person tags

Support has been added for Person and Tenant tags.

A tag no longer has a "type". A tag can be assigned to any person, computer, or tenant.

Deploying a software or maintenance task with a tag target type now resolves computers for the following:

  1. computers that have the tag
  2. computers for tenants that have the tag
  3. primary computers for people who have the tag

Deploying a cloud task can now target tags assigned to tenants, as well as integrations that support client groups.

Now that tags can target tenants, you can create a schedule that targets tags to run a single schedule across multiple tenants.

Tags for tenants can be assigned on the tenant list and tenant details pages.

Tags for persons can be assigned on the person list and person details pages.

ImmyBot Session Support Requests

You can now request support from Immy technicians from maintenance sessions. When requesting support, you can:

  • Add details about the issue you are experiencing
  • Select whether an Immy technician should be allowed to access your instance
    • If selected, there is no need to approve an access request for the Immy tech to log into your instance
    • You can disable Immy technician access at any time from the Application Preferences page
  • Select whether the session's logs and computer timeline events should be available in the support ticket
    • The logs / timeline events are formatted as a text file and stored in your instance's blob storage account, and a link to download this file is added to the support ticket
    • You can also download this file before submitting the ticket

Global Script Editor

Below are some of the new features in the script editor!

  • General VS Code "vibe"
  • Open/Close multiple scripts(tabs)
  • Go To Definition support for function scripts
  • Script Search and Directory Views with result highlighting
  • Variable preview based on script execution context, category, and a selected target (computer, tenant, task, software).
  • Parameter Form for scripts with param blocks, selected software that have configuration tasks, and selected maintenance tasks that have parameters
  • Closing a script tab with unsaved changes alerts you
  • Function name/definition view that shows the results of Get-Help {functionName} -Detailed | Out-String
  • Basic hotkey support

image

image

image

image

You can access the script editor from the top navbar or in the sidebar under Library -> Script Editor

image

image

Parameter Value View

Sometimes deployment parameters result in an exception when performing the binding. This can happens when the parameter types have been updated but the values have not.

You can now toggle the parameter form to a value view that provides you the ability to remove/reset values that may be causing issues.

image

Tenant Software

The Tenant Details Page now has a Software tab that displays a grid of software that was detected on endpoint machines and could be matched to software in the global database. The result set is grouped by global software name/ID and sorted descending by total installs (i.e. number of devices that have it installed). Each group has a Deploy button, which will open a new deployment for the software that targets all computers under that tenant.

image

Other Improvements

  • On the Deployment List Page, tenants with missing or deleted tenants will show Tenant no-longer exists under tenant column and the entire row will be highlighted red.
  • The current ImmyBot agent version is now shown on the frontend in the installer modal and in the sidebar's ImmyBot Agent Download box.
  • Added the ImmyBot version in a session log at the start of a session. This will be useful when debugging session-related issues since we can correlate the problems to the version ImmyBot was on when the session ran.
  • You can now install the ImmyBot Script Editor as a progressive web app.
  • Cleaned up some of the error messages returned by integrations
  • Fixed issues with tag deployments not getting applied during an onboarding session
  • System scripts that use param blocks will now through an error letting users known that param blocks are only available in metascript and cloudscript contexts.
  • Maintenance tasks can now specify function scripts
  • Added a session log when attempting to apply a windows patch since there are currently none
  • Added a check for whether the computer is online before attempting to apply windows patches
  • Get-Hash now supports HMACMD5, HMACSHA256, HMACSHA384, and HMACSHA512
  • Added back session list "Completed" count and filter and removed "All"
  • Added internal auditing tables for scripts, software, tasks, and deployments. The future plan is to expose an audit trail for these objects so you can see who made changes and when they were made, with the ability to revert changes.
  • Moved the tenant tag selector to the edit tab. The tags now show inline next to the tenant's name
  • Made session log database handler more efficient by breaking large updates into smaller queries
  • Reduced likelihood of CW Control Integration failing to sync devices.
  • The deployment page no longer hangs when attempting to preview/deploy to a large number of computers
  • Improved Package Analyzer to handle improper/malformed content-disposition header returned from some file servers, which resulted in a failure to analyze a package.
  • Expired users can now be un-expired from the edit user form
  • Wait-ImmyComputer (and therefor Restart-ComputerAndWait) has been improved with a new RebootWithPollingFallback option that should help alleviate issues with ImmyBot not detecting when a machine has been rebooted and now back online. This option will periodically poll providers/integrations about machine connectivity status if they haven't reported target machine as online after an expected WaitForEventTimeout period.
  • You can now define multiple functions in a Module script and import them into other scripts using Import-Module
  • Maintenance task get/test can now create child actions during detection using the new cmdlet Add-ImmyMaintenanceActionChild

Bug Fixes

  • Fixed an exception in the Sync Azure Users Job that was preventing some person entities from being deleted
  • Fixed a bug where integrations would all become unhealthy until ImmyBot restarts when one provider failed to initialize in a timely fashion
  • Fixed an issue where a specific unrecoverable ephemeral agent exception was being suppressed
  • Fixed an issue with postpone button from scheduled maintenance emails not actually postponing the session in some circumstances
  • Fixed unnecessary logging of an exception when an Ephemeral Agent Session was disposed correctly
  • Fixed an internal exception with ephemeral agent sessions where we were failing to dispose of the connection timeout callback
  • Fixed issue with instances that have large session logs tables having poor database performance and dropping session logs
  • Fixed issue with logs displayed on maintenance sessions occasionally showing up unsorted-by-timestamp
  • Fixed an issue that was allowing a device to sleep when the ephemeral is connected
  • Potentially fixed an issue where sessions would get stuck in the running status after the backend restarted
  • Fixed an issue where tasks marked to be ignored would show as compliant instead of ignored on the maintenance session's action list
  • Resolve potential bug with ImmyAgent causing IoTHub issues
  • Fixed browser warnings about using variable names starting with $ or _ in setup()
  • Restart-ComputerAndWait now will show agent timeline events in correct order
  • Fixed issue with gdap customers not showing up when azure permission level is reset from custom to default and custom didn't have correct permissions
  • Fixed an issue with media missing the base url
  • Fixed an issue where software deployments don't report download failures correctly and will continue on.
  • Fixed an issue where quick deploying software would not also deploy the configuration task if it had one
  • Fixed $using variables on single line scripts
  • Fixed an issue where the cross tenant deployment grooup was not sorted at the top of the deployment list page
  • Delete existing UserAffinities when new user is set to prevent reverting to old user

0.55.13

Released 2023-04-03

Bug Fixes

  • Fixed a regression in 0.55.12 where some business hours checks would report within business hours but the computer would still be rebooted

0.55.12

Released 2023-03-31

Improvements

  • Added timespan parameter -AgentConnectionWaitTimeout to Invoke-ImmyCommand so you can override the default 5 minute wait time.

Bug Fixes

  • Fixed an issue where some session logs were failing to save due to issues sanitizing a script's param block
  • Fixed an issue where deployments targeting an Azure Group were not applying when the computer's primary user was set during the onboarding stage
  • Fixed an issue where executing quick deployments against computers needing onboarding would incorrectly trigger the onboarding stage
  • Fixed an issue with the onboarding form's assignment links not bringing users to the specified assignment
  • Fixed an issue where reboots were occurring during business hours than spanned over to the following day. e.g 9am - 4am
  • Fixed an issue where the Primary User task was running after Set Computer Name and Domain Join. This was causing computers to not get the correct name when the computer is named after the primary user.
  • Fixed a long-standing issue where Immy PPKGs wouldn't reliably disable sleep/hibernation when the option was checked on some computers. This has been improved.

0.55.11

Released 2023-03-22

Bug Fixes

  • Fixed issues with the websocket connection randomly disconnecting when adhoc deploying to a large number of computers
  • Fixed an issue with PowerShell Editor Services continually starting and stopping

0.55.10

Released 2023-03-21

Bug Fixes

  • Fixed an issue where adhoc deployed sessions would go over the session limit and cause performance issues
  • Fixed an issue in the ImmyBot Agent that would cause devices to rapidly send connected messages to the IoTHub, depleting the quota and preventing new devices from registering

0.55.9

Released 2023-03-16

Improvements

  • Using the [Person()] attribute on param block parameters now takes into account the selected tenant on the deployment form and only shows people belonging to the selected tenant.
  • The computer list page now supports the following query parameters: filter and includeDisconnected. This can be used to filter the computer list e.g demo.immy.bot/computers?filter=desktop-R2D2&includeDisconnected=true

Bug Fixes

  • Fixed an issue with hashtable parameter values not working when provided from the deployment
  • Fixed an issue with the CW Control device sync

0.55.8

Released 2023-03-15

Improvements

  • Improved performance of syncing devices from all integrations. Automate in particular was failing to sync device updates (online/offline statuses).

Bug Fixes

  • Fixed a WebSocket exception where we were attempting to close the WebSocket after it was already closed

0.55.7

Released 2023-03-14

Improvements

  • Parameters for "Not Present" deployments now show up on the deployment edit page.
  • Removed 100 and 1000 page sizes from all tables for performance reasons

Bug Fixes

  • Fixed an issue in the azure sync users job that was causing it to fail
  • Fixed more issues with the ephemeral agent getting locked up
  • Fixed an issue where agent disconnect events would show duplicated in the timeline events table
  • Fixed an issue where computers would be moved to needs-onboarding after a new agent connects for an existing online computer
  • Fixed issue where newly-installed immy agents would not result in new computers in ImmyBot under some circumstances

0.55.6

Released 2023-03-08

Improvements

  • Improved performance of searching the main computer list
  • Added a button near maintenance task parameters to copy the parameters as a script param block string. Useful in converting a task to use a script param block

Bug Fixes

  • Fixed an issue where identification logs would sometimes not be sorted by date.
  • Fixed an issue where we were not considering case-insensitive serial numbers for trusted manufacturers
  • Made non-admins able to delete their tenant's computers
  • Made non-admins able to add and remove tags from their tenant's computers
  • Fixed an exception that was occurring where the azure sync was trying to delete people who existed as an Immy user.
  • Fix issue with PowerShell formatting of System.Version

0.55.5

Released 2023-02-28

Improvements

  • Improved performance of session counts on session list page

Bug Fixes

  • Fixed an exception that was occurring frequently when the ephemeral agent established a websocket connection
  • Fixed an internal error that occurred when we add function scripts to the PowerShell InitialSessionState

0.55.4

Released 2023-02-24

Improvements

  • A new application preference has been added: "Allow Non-Admins and Non-MSP Users to Use Terminal and Edit Scripts"
    • Default: disabled (by default, only MSP Admins will be able to use terminals or edit scripts)
  • Added ephemeral agent details under the Computer Details Page -> Agents tab with the ability to kill the active ephemeral agent

Bug Fixes

  • The ImmyStarter plan no longer allows maintenance to be run against computers that were added into Immy over 7 days ago.
  • Added "Tags" to the default display set returned from Get-ImmyComputer

0.55.3

Released 2023-02-21

Improvements

  • Syncing azure users now deletes people in Immy that no longer exist in Azure (if the person in Immy has the Azure Object Id set).
  • You can now upload .msp, .appx, .appxbundle, .msix, and .msixbundle installer files!

Bug Fixes

  • Fixed an issue related to N-Central providers executing scripts on machines

0.55.2

Released 2023-02-14

Improvements

  • Increased the font-weight of heading text in the light theme for better contrast
  • Fixed an issue where some global software and tasks were incorrectly failing due to permission issues.
  • Updated dynamic version scripts to show logs even when it is already cached
  • Removed maintenance task parameter description from onboarding form unless the parameter is being specified
  • Made onboarding task/assignment title bar visible when scrolling down on dynamic parameter panels
  • Added ability to manually refresh dynamic parameters on onboarding form

Bug Fixes

  • Fixed an issue with loading deployments that targeted people where the deployment wouldn't allow saving
  • Fixed an issue where rerunning a session that contained reran actions would fail unexpectedly
  • Fixed an issue with binding malformed uri parameters

0.55.1

Released 2023-02-09

Improvements

  • Added batch action to maintenance session list to cancel all incomplete sessions.
    • image
  • Improved the performance of the integration client's table. Instances with thousands of clients and tenants should now be able to use this page without running into performance issues.
  • Updated the ImmyBot backend from .net 6 to .net 7

Bug Fixes

  • Fixed an issue that prevented the maintenance email's reboot now button from rebooting the computer
  • Fixed an issue where some assignments using tags would not be resolved to a computer due to using data from a stale cache
  • Fixed an issue CW Control integration where it was not forcing https:// on the url

0.55.0

Released 2023-02-07

Stale Computers

A new "Stale" tab has been added to the Computers List page showing devices that have not had a recent agent connection event. By default, the staleness threshold is 30 days. This value can be configured from the System Preferences page.

image

This feature can be used to cleanup old computers when you are coming close to the maximum limit for computers.

Dynamic Maintenance Task Parameters (PowerShell Param Blocks)

Maintenance task parameters can now be defined dynamically using a script's param() and dynamicparam{} block.

image

PowerShell has a robust parameter definition and validation engine. By leveraging it, we give ourselves features like:

  • Parameter Sets
  • Regex Validation
  • Conditional/Dynamic Parameters
  • Dynamic Values
  • Type enforcement

When deploying Onboarding tasks, you can define which parameters should be visible to the technician, while hiding others or setting their defaults in the Deployment. image

GDAP Support

"GDAP Customer Syncing" option has been added to the Azure settings page. Enabling this option does the following:

  • Adds the DelegatedAdminRelationship.Read.All permission to ImmyBot's default app registration, to allow retrieval of your GDAP customers
  • Enables ImmyBot to offer a consent link for each GDAP customer to be synced by ImmyBot

Please see the GDAP Customer Syncing documentation for usage details.

Important! If you are using a custom app registration (also known as the CSP App Registration), your app registration must have a Web redirect URI of https://<your-domain>.immy.bot/consent-callback, replacing <your-domain> appropriately. Please see the updated custom app registration docs for details on how to add the redirect URI

Other Improvements

  • Onboarding only maintenance tasks now have an option to "Ignore during automatic onboarding". This is useful if you have an installer set to automatically onboard the computer and the task requires data that wasn't able to be provided.
  • Improved code around establishing Ephemeral Agent connection & eliminated possible race condition.
  • Prepend an "[ImmyBot User]" tag for the username that displays for remote session started from a supported provider. This makes it clear at a glance who is connected to a machine initiated from an ImmyBot user.
  • Removed the need for executing suspicious-looking encoded powershell for N-Central integration which would trigger some AV alerts while also moderately decreasing latency to start ephemeral agent.
  • When the Immy Agent fails to update during a maintenance session, it will now retry up to 3 times in case it failed due to a transient error
  • You can now assign tags to a computer from its Onboarding form
    • image
  • When we run a script and to establish an ephemeral agent and detect that there are no online agents, we only wait 5 minutes instead of 30 minutes. For integrations like Automate and N-Central and don't support connectivity changed events, a machine would potentially restart so fast the RMM was unaware, therefore we would wait 30 minutes before realizing the machine was actually online.
  • Removed execute and verify progress bars when action is a task monitor, and changed the "detect" progress text to "monitor".
  • Added the ability to change a computer's primary user from the overview page.
  • Improved performance of computer list page when sorting by Date Created
  • Added -IncludeTags switch parameter to Get-ImmyComputer that includes an array of tags containing the tag id and the tag name
  • Added a date input to the dashboard page to optionally return actions that were executed on or after the specified date
  • Added basic health check functionality to all integrations that were missing health checks
  • Added a test suite for the NCentral integration to run in our build pipeline to help reduce bugs
  • Made the main scripts table use server-side pagination to decrease the amount of data initially transferred to the page. Global scripts are now showing over 3MB combined.
  • Added better error messages when we fail to sync users due to permissions issues
  • Improved and simplified some internal logic related to permissions in our Metascript cmdlets

Bug Fixes

  • Fixed an issue with tag acccess levels not saving the limited tenants selected
  • Fixed an issue with metacript exception handling where any error with the category OperationStopped was being treated as terminating exception
  • Fixed an issue with Uri parameter values being inserted into scripts with type string instead of type Uri
  • Fixed an issue where the software upload analysis result description had the wrong color making it impossible to read
  • Fixed issue on the computer list -> pending tab where massive exceptions were not limited to a reasonable height
  • Fixed issues with SQL queries timing out early than intended Fixed a bug that would prevent users from actually using the N-Central integration with servers that are hosted on a non-standard port.
  • Fixed an issue where the tenant link on a computer's overview page had a bunch of whitespace that could be accidentally clicked.

0.54.8

Released 2023-01-17

Bug Fixes

  • Fixed a potential deadlock that could cause the ephemeral agent to never connect. Potentially isolated to just devices using CW Automate
  • Fixed a potential deadlock in the N-Central integration that could cause Immy to hang up
  • Fixed some frontend issues where a maintenance action's status and reason would not show correctly for certain values
  • Fixed an issue where a terminating exception in a custom download script would get swallowed and allow the install to continue anyway

Releases in 2022

Go to 2022 releases

+ \ No newline at end of file diff --git a/scripts.html b/scripts.html index b0696430..e40b4994 100644 --- a/scripts.html +++ b/scripts.html @@ -61,7 +61,7 @@ extraQueryParameters = $null)] $OAuthInfo ) - + \ No newline at end of file diff --git a/terminology.html b/terminology.html index 5607f831..3b36288b 100644 --- a/terminology.html +++ b/terminology.html @@ -20,7 +20,7 @@
Skip to content

Terminology

Tenants

These are your Customers. We recommend syncing Tenants from CW Automate or Azure.

User Computer Affinity

ImmyBot periodically runs whoami /upn on all computers and keeps a rolling list of the last 10 UPNs. It assigns the Primary User of the computer to the "Person" (Synced from Azure) with the matching UPN.

For environments without AzureAD, ImmyBot will lookup the UPN of the Person from a Domain Controller in the computer's Tenant

Deployment

Deployments were originally called "Assignments" and are still called Assignments under the hood.

Note: You won't see the word "Assignment" in the user interface anywhere, but we plan to re-rename "Deployment" back to "Assignment" it in a future release.

A deployment is a rule that assigns Software or Tasks (Collectively known as "Maintenance Items") to a Target.

Deployments are conceptually similar to Group Policies in that they assign settings to a group of users or computers.

DO NOT BE AFRAID TO SAVE YOUR DEPLOYMENTS. THEY DO NOT APPLY AUTOMATICALLY.

If you DO want your Deployments to be applied automatically, you need to create a Schedule.

Deployment Resolution

Also known as

  • Creating Exceptions
  • "Winning" Deployments
  • Dealing with Snowflakes

Like Group Policies have a "Winning Policy", ImmyBot must have a "Winning Deployment" for a given Maintenance Item on a computer.

Let's say you have a customer "Contoso" that uses Adobe Acrobat instead of Adobe Reader, and you would like that to be installed instead.

First, create a Deployment that sets the desired state of Adobe Reader to Uninstalled for Contoso

Then, create a Deployment that Installs Adobe Acrobat for their computers

Target

A "Target" is a grouping of computers (or Tenants in the case of "Cloud Tasks")

ImmyBot's ability to resolve Targets to a group of computers is perhaps its most powerful feature.

For example, you can select a Group of users from AzureAD (which includes on-prem synced groups, and Teams) and ImmyBot will automatically resolve that to the list of computers in use by the people in that group.

If you enable PSA integration, a Target could be all computers covered under a certain type of Agreement, or computers covered by an Agreement that includes a certain product.

This is particularly useful for security software, help desk portals, or anything else in your stack that you may only want to be installed for customers that are paying you for it.

Offboarding

Conversely, you could create Deployments that remove your stack for customers you are offboarding.

  • Create an "Offboarding" product in your PSA
  • Create a deployment for each of the pieces of software you would like removed setting the desired state to Uninstalled
  • Target all customers with the "Offboarding" product on their agreement

Note: ImmyBot even honors the date range on additions, making scheduled offboarding easier if say the customer wants your software removed on the last day of the month.

Maintenance Session

A Maintenance Session is conceptually similar to running gpupdate /force

In other systems, different types of maintenance happen on their own schedule. Windows Updates may run on Tuesday night, but Third Party updates may run on Wednesday night, and auto-fix tasks may run whenever an alert is fired for a failed monitor, which has its own polling interval.

By forcing all automation to happen in a sequential set of actions we call a Maintenance Session, we can deliver predictability not only as to what changes will be made, but also when.

This also provides a cohesive mechanism for setting up a new computer. At best in traditional RMMs you can assign Monitors that detect the absence of required software and run Install scripts when they are missing, but this doesn't scale as pre-requisites and exclusions are required.

Imagine if Group Policy could reliably deploy any type of software, and gpupdate /force worked reliably off-net, and when you ran it, it gave you real-time feedback about exactly what it was doing. Also imagine that it could optionally notify the end user before and after with a branded email telling them exactly what is being done, that optionally lets them cancel.

That's a Maintenance Session.

You can view Maintenance Sessions for all computers under Computers->Sessions

Or, you can view Maintenance Sessions for a specific Computer under the Sessions tab for that Computer

Maintenance Session Stages

Detection Stage

During the Detection Stage, ImmyBot "Detects" which Maintenance Actions are necessary to bring the computer into compliance. These Actions are added to the Maintenance Session.

This is a read-only process, and typically done while the user is active. This is so ImmyBot can notify the user of changes that will occur later during the Execution Stage. By doing this during the day, and scheduling Execution for later, we are giving the end user the best possible chance to be aware of the upcoming maintenance, Postponing if you allow. The Postpone feature is very popular among engineers that do may need to leave renderings and analysis tasks running overnight.

Execution Stage

Maintenance Action

A Maintenance Session has one or more Maintenance Actions. A Maintenance Action could be to install software, apply a Windows Update, or run a Task.

The image below depicts a typical Maintenance Session with many Maintenance Actions

Software

Software, in the context of ImmyBot refers to Software objects in My Software or Global Software.

My Software - Initially empty. When you upload your own software to ImmyBot, it goes into My Software

Global Software - Read-Only, managed by the ImmyBot team.

At the bare minimum, Software requires a Detection Method. Software can have many Software Versions.

Pre-Requisities

This is a VERY powerful, and critically underrated feature in ImmyBot. ImmyBot resolves dependencies recursively, with built-in circular reference detection.

Common uses for Pre-Requisites include

  • Ensuring a piece of software is installed before installing another
    • C++ Redistributables before 3CX Client
    • Office is installed before an Outlook Add-in
  • Ensuring a piece of software is uninstalled before install another
    • Removing Adobe Acrobat Reader before installing Adobe Acrobat Professional

Install required dependencies

Ordering Maintenance Actions

Detection Method

A Detection Method is required in order to know whether or not a piece of Software is installed on a machine.

For Software, the detection method must returns the version of the software installed on the machine, if any.

For Tasks, the Detection Method is the "test" mechanism, which must return true or false to indicate whether or not the machine is in compliance.

Software Version

Task

A Task (aka Mainenance Task) is a catch-all for anything that isn't software.

or

Task Modes

Enforce

Runs the "test" script, if the test returns false, runs "set", then runs "test" again to verify.

Audit

Runs the "test" script which should return true or false. It can output whatever it wants, but the last output should be boolean.

Monitor

Runs the "get" script, which can return anything. Useful for collecting data like Bitlocker Keys, Quickbooks Licenses, or any other piece of information you are interested in.

Scripts

From the above diagrams, you can see that scripts are the building blocks for higher level objects like Software and Tasks.

Execution Context

System

Run as a service on the machine

User

Will attempt to run as the logged on user

Metascript

Runs in the ImmyBot backend, and can spawn code on the system by using Invoke-ImmyCommand

Cloud Script

Runs in the ImmyBot backend, but intended to be run against a Tenant (perhaps for the purpose of getting or setting some setting in 365/Azure or some other system with an API). These are used exclusively in Tasks targetting "Tenants".

Schedules

Used to run maintenance periodically on machines. Can optionally be limited to a single Maintenance Item.

NOTE You must also have a Deployment for the Maintenance Item to set the desired state. Imagine a scenario where you need to ensure a single piece of software is up-to-date on all computers except for a CNC machine. Create 2 deployments, the first setting the desired state to Installed->Latest for all computers, then a second stating that the desired state is Ignored for the CNC machine. When you create the schedule, the software will be ignored for the CNC machine.

Integrations

To ImmyBot, an RMM is a system that provides a list of computers, and a mechanism to run PowerShell scripts on them.

To avoid having to deploy the ImmyAgent to existing machines, ImmyBot optionally integrates with RMMs like ConnectWise Automate and ConnectWise Control and uses their agents instead. These systems are not as performant as the ImmyAgent, but can suppliment ImmyBot functionality.

For example, if you add an RMM Link for ConnectWise Control, you can open a remote session to the computer directly within ImmyBot:

If you add an RMM integration for ConnectWise Automate, Scheduled Maintenance Sessions will apply all Approved Windows Updates using the ConnectWise Automate API based on your Approval Policies in Automate Patch Manager.

You can even add multiple RMMs of the same type, which is often useful in merger and acquisition scenarios. You may choose to use ImmyBot as your single pane of glass to manage both, or simply let ImmyBot be a neutral third party for facilitating the consolidation of RMM agents to the parent company's RMM.

Identification

Because the same computer often exists in multiple RMMs (Like how CW Automate typically installs CW Control Automatically), ImmyBot prevents duplicates by identifying the computer by a unique id. We DO NOT use MAC Address! This unique id persists even if you wipe and reload the machine.

When a new machine is detected, it first goes to New Computers->Actively Identifying

It uses the following script to collect the UUID from the machine:

gwmi Win32_ComputerSystemProduct | select -expand UUID

This value is static even if you wipe and reload the machine, although we have VERY rarely seen this value change following a BIOS upgrade or due to a mainboard fault. We chose this value instead of Mac Address or Hard Drive serial number because of issues other systems have with USB Ethernet cables and hard drive replacement. We did not use serialnumber because we learned that many computers do not have serial numbers.

In practice, this value works almost too well. Machines you just wiped and expect to find in New Computers, are often associated to their pre-wiped computer objects. To find them, you often have to search for the serial number of the computer in the Computer List. In 0.40.1 we began using the Windows OfflineInstallationID value to identify when an existing computer has been wiped so we can set its status to "Needs Onboarding" which causes it to show up under New Computers as expected.

If it is a machine ImmyBot has seen before, it will be associated to the existing Computer, and you will find a new entry under the Computer's Agents tab. Under the hood we call these entries "RmmComputers".

Computers can have one or more RmmComputers(Agents). You can think of these as logical "pathways" to the computer. We only need one to be online to function.

- + \ No newline at end of file diff --git a/troubleshooting.html b/troubleshooting.html index b26385af..d6abeead 100644 --- a/troubleshooting.html +++ b/troubleshooting.html @@ -50,7 +50,7 @@ 2022-09-21 12:24:50.171 -04:00 [ERR] Application shutting down (App lifetime token cancelled) System.IO.IOException: Cannot access a closed stream. at System.Net.Http.HttpConnection.RawConnectionStream.WriteAsync(ReadOnlyMemory`1 buffer, CancellationToken cancellationToken)

To correct it, you need to bypass SSL Inspection for your instances hostnames/IPs, which are found under Show more > integrations > Fetch IP Address and Hostnames

SentinelOne

Sentinel requires BOTH your instance's Script path and the ImmyBot Agent process excluded. With only the script path excluded, devices will regularly have issues running the ImmyBot Agent to download the ephemeral agent. This is apparent in two cases:

  1. Importing devices - The new agent can't download the ephemeral agent to start running inventory.
  2. Updating ImmyBot Agents - The new agent can't download the corresponding new ephemeral agent when attempting to run deployments or scripts.

You can also set your Exclusion Mode to "Interoperability - Extended".

DNSFilter

There have been reports indicating that DNSFilter, along with potentially other DNS filtering tools, is not directly blocking subdomain.immy.bot but has failed to resolve some DNS queries.

Specifically, in the case of DNSFilter, it was confirmed that ImmyBot was not being blocked. However, the failure in DNS resolution meant that connection attempts to the backend were unsuccessful.

Explicitly allowing the DNS for subdomain.immy.bot (replacing "subdomain" with your specific ImmyBot instance subdomain) was verified to resolve the issue of failed DNS resolutions.

For guidance on managing allow and block lists, please refer to: https://help.dnsfilter.com/hc/en-us/articles/1500008111381-Allow-and-Block-Lists

Group Policy Objects

Computer Configuration | Policies | Administrative Templates | Windows Components | Windows PowerShell | Turn on Script Execution (Enabled)

User Configuration | Policies | Administrative Templates | Windows Components | Windows PowerShell | Turn on Script Execution (Enabled)

These GPOs have been known to cause issues with running scripts.

- + \ No newline at end of file diff --git a/user-roles.html b/user-roles.html index af8326fa..6abd2183 100644 --- a/user-roles.html +++ b/user-roles.html @@ -20,7 +20,7 @@
Skip to content

User Roles

MSP Admin

  • Full Access, no restrictions

MSP Non-Admin

  • Cannot create/edit/delete Schedules
  • Cannot create/edit/delete Users
  • Cannot create/edit/delete Cross Tenant Deployments
  • Can create/edit/delete Single-Tenant and Individual Deployments
    • NOTE: You can disable this in Settings->Preferences with the "Allow Non-Admin Users to Manage Deployments" setting
  • Can access terminal on all machines and edit scripts
    • NOTE: You can disable this in Settings->Preferences with the "Allow Non-Admins and Non-MSP Users to Use Terminal and Edit Scripts"
      • Disabling this prevents these users from being able to run arbitrary code on devices

Customer (Tenant) Admin

  • Can view/edit Computers, Licenses and Deployments for their Tenant
  • Can create users in their tenant
  • Software they upload is owned by their tenant and are not visible to other tenants
  • Licenses they create are owned by their tenant and are not visible to other tenants

Customer (Tenant) Non-Admin

  • Cannot create Schedules
  • Cannot create Cross Tenant Deployments
  • Cannot create Users
  • Can create Deployments scoped to individual Computers and People
- + \ No newline at end of file diff --git a/windows-sandbox.html b/windows-sandbox.html index d44652f2..95ab65ed 100644 --- a/windows-sandbox.html +++ b/windows-sandbox.html @@ -20,7 +20,7 @@
Skip to content

Testing with Windows Sandbox

Windows Sandbox is a fast loading disposable container in Windows that loses all settings when shutdown or restarted. It is very convenient for testing software deployments. It should be noted that not all software is compatible with Windows Sandbox, particular software that installs drivers or requires restarts.

If you haven't used Windows Sandbox before, you can enable it by opening Windows PowerShell as Admin and running the following command:

powershell
Enable-WindowsOptionalFeature -FeatureName "Containers-DisposableClientVM" -All -Online -NoRestart

Download Windows Sandbox file (.wsb)

Wait for ImmyBot Agent to install

Onboard the Sandbox

This will create an "Onboarding" Session (sessions are like running gpupdate) that will apply all applicable Deployments (deployments are like Group Policies)

- + \ No newline at end of file