fyr.io

Migrate Sims.Net Server

Posted on

Sims.Net is a very common and, in my opinion, a very badly written Management Information System used in the UK's lower education sector - primary and secondary schools. It's commonly used not because it's good, but because it was one of the few options many years ago and a huge number of schools just haven't bothered to move to something else. And I don't blame them, it's got a lot of history and data going back decades in that database. It's not an easy thing to migrate off of.

ESS, the (current) caretakers of Sims.Net, have recently changed their licensing model to seemingly prevent third parties from hosting Sims.Net data on behalf of a school. I admit, I don't know the details, but that's the message as I understand it.

It looks like due to this, and the EOL of Server 2012R2, many school techs and sysadmins across the UK will be scrambling to get Sims.Net installed on an on-prem server.

Unfortunately, documentation is sparse. It's a shame, but it costs a whole lot of cash to pay for third parties to do this for you. Right?

In the spirit of publishing guides for stuff organisations seemingly don't want guides published for I've written up a guide on installing or migrating Sims.Net (and the horrible, horrible SOLUS3) server/database, because I struggled to find any well written and up to date guides and had to figure it out myself recently.

So if you're looking to install or migrate Sims.Net, hop in and come for a ride. It's easier than you think! Until you get to SOLUS3. We won't be migrating that. But I'll go through how to install it fresh!

This is a fairly rough stream-of-consciousness guide based on internal documentation I use to migrate Sims - suggestions, advice and corrections are welcome. I will continue to refine this over time, noting any significant changes at the bottom of the article.

Ingredients

You will need the following software to proceed, as per the SIMS Minimum Hardware and Technical Roadmap documentation:

Note: This guide was written and tested on 7.210, the 2023 spring release, however I can't imagine it's any different for any other Sims.Net 7 release.

Installing Windows Server 2019

Set up a fresh Windows Server 2019, ideally in a VM, to be dedicated to the task of hosting Sims.Net. Given the common configuration of networks in schools I am assuming you're also joining this server to a Windows domain.

You will need to use the GUI, for SOLUS3, unfortunately. If anyone has got this working without the GUI, let me know.

Why 2019? Well, officially, it's the latest version of Windows Server that Sims.Net officially supports. Whilst I'm certain it'll run perfectly well on 2022, if you try it and need ESS help, the first thing they may say is “wrong OS, bye!” so we're playing it safe here.

Try to keep Sims.Net and SOLUS on a server dedicated to the task and not sharing roles with other stuff, except the very few sims data extractors that absolutely must be installed on the same server as the Sims database. (Many of these data extractors are bullshitting when they tell you they require this, by the way, but that's a tale for another post.)

You'll need a good amount of storage and RAM available, but requirements vary depending on workload.

According to Teh Intarwebs, the general recommendation is to use a fixed amount of RAM with MS SQL. You should allocate RAM by getting the database size, plus ram for the OS, plus growth. So if your Database is 20GB and you expect it to grow by, say, 4GB over the next few years, throw 32GB of ram in there. That'll give you 20GB for the database, plus 4GB for DB growth, plus 8GB for the OS and any work it, or applications on it, has to do. If you're doing this in a VM you can, of course, raise this much more easily later if and when needed.

Now... this may be overkill, but... create at least two but ideally five storage drives. If you can only create two, keep the OS and docstorage on one and the database stuff on the second. This guide will go through the creation of five of these drives as and when they're needed.

I will be using the following throughout this guide:

Installing Microsoft SQL

Disclaimer: I am not a Database Admin, it's a form of advanced magic that my brain is not capable of retaining! So, if I haven't followed best practices here let me know and I'll research and correct.

  1. Download SQL Server 2016 SP3. The latest version of Sims that this guide was built with (Spring 2023, 7.210) only officially supports up to 2016 SP3 EDIT 2023-10: Turns out this isn't accurate, the document I was using was out of date. SQL Server 2019 is supported (as per latest guidance, PDF warning) and in fact I recommend it as it will allow you to encrypt the SQL connections the Sims.Net client makes by default. SQL 2022 is still not supported, however it will be from the Spring/Autumn 2024 release. Whether you use Express (free) or Standard (which you need to pay for) depends on your usage requirements. Primarily for our use case, the major decider is how big the database will be. Typically (but verify this by checking your existing system requirements yourselves):
    1. Primaries: Download SQL 2019 Express: https://www.microsoft.com/en-gb/download/confirmation.aspx?id=101064
    2. Secondaries: You may be able to get away with Express if your database is below - and not expected to exceed - 10GB in size. Otherwise, buy and download SQL Server 2019 Standard Edition
  2. Run the Express installer, or if using Standard, mount the .iso and run setup.exe
    1. Express (verified with 2019):
      1. On the popup, select Custom
      2. Select Install to download and run the installer files
    1. Select Installation > New SQL Server stand-alone installation...
    2. If you are using the Standard installer but only need express, with its associated limits (good enough for a primary in most cases) select the Express edition in the Specify a free edition dropdown, however if you need Standard or Enterprise, select the Enter the product key radio button and, if it's not auto-populated, enter the product key then Click Next >
    3. Accept the product terms and click Next >
    4. On Standard, it is strongly recommended that you select the Use Microsoft Update to check for updates checkbox, then click Next > to begin checking for, downloading and extracting any updates
    5. On the Install Rules section, get everything to not fail and click Next >
    6. On the Feature Selection window, select Database Engine Services and if it's selected automatically, untick Machine Learning Services and Language Extensions - you can leave these features on the %SystemDrive% - then click Next >
    7. Set a Named Instance name to Sims or something else descriptive for easy management later, then click Next >
    8. In Server Configuration:
      1. Accounts: it's generally recommended to create basic domain accounts for the SQL Server Agent and SQL Server Database Engine services, leaving SQL Server Browser as NT Authority\Local Service, however the defaults do work fine in our use case.
        1. Grant Perform Volume Maintenance Task should be unticked for a server hosting only Sims. It makes database creation faster but can result in data disclosure.
        2. Collation: Leave as default
          1. The default is Latin1_General_CI_AS. The ci bit indicating case-insensitiveness. I haven't dug into this but I'm wondering if this is this why Sims.Net passwords aren't case sensitive. I suspect they don't hash the passwords, perhaps they encrypt them? I'm interested in trying this without the ci to see if Sims breaks and passwords become case-sensitive. Or perhaps they just LOWER() or UPPER() them or something. If you know, let me know!
        3. Click Next > once you've configured this section.
    9. Database Engine Configuration:
      1. Server configuration: Select Mixed Mode and insert a strong password
        1. Don't use a space in the password. SOLUS3 will happily use a password with a space... until you come to migrate the database and all of a sudden it won't like it any more in the password field in Settings > SOLUS3 > SOLUS. Also, don't use more than 25 characters because some (but not all!) password fields you need later will only accept a max of 25 characters. And they don't tell you this. Yeah, welcome to SOLUS3.
      2. Add any windows groups/accounts that you wish to be able to perform admin tasks on the database
      3. Data Directories: Although you can if you have no choice, you should not store any data on the %SystemDrive% (C:\ generally), you should instead store data on separate drives if possible. If you're using a VM like most of us are for this, create two new .vhdx files with a 64KB allocation size and put the Data root directory and Backup Directory on one (D:\ in my case, labelled Data and about 120GB in size), moving the User database log directory off onto another (E:\ in my case, labelled Logs, 50GB in size) - if you are lucky enough to have the capacity you can store these extra .vhdx files on different physical disks, or if you're not using a VM for the Sims server you could allocate separate drives.
      4. TempDB:
        1. There is no general consensus on whether to store these files on separate disks, with data or with logs, as each situation is unique, but in the interest of squeezing out as much performance from the horribly slow Sims.Net as possible I'm opting to store them on what is now my fourth .vhdx - a 50GB w/ 64KB allocation drive I can shrink (or grow? Yikes) later as required, labelled TempDB. Whilst it's early days, I've yet to see this grow much. Currently sitting at about 10GB.
        2. Data Files:
          1. Number of files: Same as your number of logical/virtual processors, up to 8 max
          2. Initial Size & Autogrowth: This depends on the workload, but generally you want to increase these numbers from the defaults - each time the file has to grow it introduces some overhead so you don't want it to be too small, and at the same time you don't want to use up loads of space on disk that isn't being used. I'm using 1024MB for the initial size and 512MB autogrowth.
          3. Store these on a new drive (G:\ in my case) as mentioned above, not the %systemdrive% and not the data or logs drive.
        3. Log Files:
          1. Initial size & Autogrowth: 512MB/256MB
          2. Storage: Same as the Data Files - G:\
      5. Click Next > and if all the tests pass you should be able to review the install - if you're happy with the provided summary, click Install
  3. Once install is complete, install the SQL Server Management Tools which you can do from the Installation section of the SQL Server Installation Center installer you probably still have open, or you can download the up to date version here: https://aka.ms/ssmsfullsetup
  4. Reboot

Sims Migration & Installation

It's worth taking some time before the planned migration to audit any and all data extractor tools that pull data from Sims and sync it with another provider or database. These will all need to be touched or outright migrated, too. 9/10 times the support for the provider will do this for you, but they're generally pretty easy to move in my experience - Some, however, are not. A guide for another time, perhaps.

The migration process quickly takes Sims offline for everyone so schedule some downtime before you proceed to step 5 below. You can get up to that point beforehand however.

  1. Create a folder in the Storage drive called Sims Shared Files and share it (Sims$), sharing with the appropriate ACL groups in place - whilst most staff probably won't need access, some will (cover, attendance, data manager, etc)
    1. I suggest making three groups in AD, ACL_Sims_Read, ACL_Sims_Write, ACL_Sims_Full and giving these read, modify and full access as appropriate to the share and the folder. You can then easily give people the relevant access (read or write - Full should be reserved for sysadmins) later without making changes to the folder and files directly
  2. Create a folder on the C:\ drive somewhere, like the desktop - it can all be deleted once we're done
  3. Copy the installer files into this folder: SIMSApplicationSetup.exe & SIMSSQLApplicationSetup.exe
    1. If you don't have these, you can extract them from SOLUS3:
      1. Open SOLUS3 on the old server
      2. Upgrades > Update Library
      3. Select the latest Full Release that matches what's running on the server and click Extract
      4. Select a location to drop the files, then copy them to the new server
  4. Run SIMSSQLApplicationSetup.exe on the new server
    1. Click Next >
    2. Select Browse to change the install location to the new SQL Server Binn folder, e.g. C:\Program Files\Microsoft SQL Server\MSSQL151.SIMS\MSSQL\Binn and click Next > then Next > again
  5. On the old server, run DBAttach as admin
    1. Server Name: <current sims server hostname>\<instance name>
    2. Username: sa
    3. Password: <sa password>
    4. Click Connect
    5. In the Detach a Database section, select the relevant Sims database... Don't click Detach, just hold there for a moment... I've had issues with things using the database which prevents DBAttach from working - whilst I haven't figured out a nice way to work around this, I do have a dirty way of resolving it - take the database offline, then bring it online again. If you try to detach the database here and nothing happens for 10 minutes+, here's how to encourage it in a way that will probably make DBAs shudder:
      1. Open Microsoft SQL Server Management Studio
      2. Log in
      3. Right click the relevant Sims database and select Properties
      4. Click Files and copy the location of the database file. It'll be something like:
        D:\Administration\Server Applications\MS SQL Server 2012\MSSQL11.SIMS2012\MSSQL\DATA Keep this for later (check that the .ldf file and the .mdf file are in the same folder, if they are different take note of both locations)
      5. Close the properties, then right click the relevant Sims database and select Tasks > Take Offline - might take a while.
        1. If this doesn't work within 5 minutes, you'll likely need to stop any sync tools running on the server/database. You can execute EXEC sp_who2 on the database via Microsoft SQL Server Management Studio to see what's actively querying it
      6. Right click the same database again once it's offline, and select bring online
      7. When this has finished, quickly go back to DBAttach and click Detach - this again can take a while.
  6. Open the data directory you grabbed earlier containing the now-detached sims database
  7. Copy both the sims.mdf and sims.ldf files to the new server, feel free to put them in the root of the data drive or something, these copies will be deleted later
  8. Run DBAttach on the new server as admin
    1. Server Name: <new server hostname>\sims
    2. Username: sa
    3. Password: <sa password>
    4. Click Connect
    5. Under Attach a Detached Database, add Sims as the database name
    6. Select the ... button and locate the database file you've copied over from the old server
    7. Click Attach
      1. If you get an error here about missing files, odds are your database files are named differently (for example, sims.mdf & sims_log.ldf) - just rename them so they're both the same, the only difference being the file extension (.mdf and .ldf)
    8. Once this is done, check the DB .mdf and .ldf files exist in the right directories, then you can go ahead and delete the copies you brought over from the old server
  9. Edit the SIMS.ini file in c:\windows and add SIMSSetupsDirectory=S:\Setups to it
  10. Run SIMSApplicationSetup.exe to install the Sims client
    1. Install with the defaults
  11. Create connect.ini in C:\Program Files (x86)\SIMS\SIMS .net and add:
    [SIMSConnection]
    ServerName=.\sims
    DatabaseName=sims
    1. Optionally, if you log in to Sims with windows accounts instead of Sims/SQL ones, which I advise, add ConnectionType=Trusted to the bottom of the file, too.

The Sims.Net client should now log in, on the server at least! Test it and make sure accounts and data exist as expected. If, however, you find that you cannot log in via Sims.Net itself (sometimes the database import/export goes a bit wrong, or you've not been given any account details from the previous provider) you can easily reset the built in sysman account by following this guide.

ESS recommend setting the database Compatibility level to SQL Server 2012 (110). I haven't tested the difference in much depth, but a cursory anecdotal glance at this resulted in no discernable difference in performance We have noticed a significant slowdown on reports involving leavers, and database locks on reports involving future students that disappears when the database compatibility level is set to SQL Server 2012 (110) so I now strongly recommend that you do this. To make this change:

  1. On the new server, open SQL Management Studio
  2. Expand Databases in the Object Explorer
  3. Right click on the Sims database and select Properties
  4. Select the Options page
  5. Change the Compatibility level dropdown to SQL Server 2012 (110)
  6. Click OK

DocStorage

  1. On the new server, .NET 3.5 is required
    1. Mount the OS .iso
    2. Open cmd/Powershell as admin
    3. Run dism /online /enable-feature /featurename:NetFx3 /all /source:d:\sources\sxs (changing the /source argument to reflect the location of the install media)
  2. Copy SIMSDocumentServerInstaller.exe from the old server (likely in .\sims\setups\ to the new server - the version you have will likely be old, but as far as I can tell it's been the same version since at least 2009?! Version 1.580.12.0 is the newest I've seen - if you know different, let me know. the newest I have seen is 1.580.99.1.
  3. Open cmd/powershell as admin
  4. cd to the location of the installer
  5. Run .\SIMSDocumentServerInstaller.exe /INSTALL (this is case sensitive)
  6. Click Next >
  7. Select an appropriate install location - installing to the c:\ drive is fine as this is just the application not the actual storage location - then click Next >
  8. Select a document store and a backup location - This should be on a separate DOCSTORAGE drive you've created (F:\, default allocation size, labelled DocStorage), or on the C:\ drive if preferred
    1. The backup folder can live inside the docstorage directory
  9. Communication Protocol: HTTP
  10. Port: 8080
  11. Click Next > and Next > again
  12. Once installed, log in to Sims as an admin
  13. Go to Tools > Setups > Document Management Server
  14. Remove any existing Document servers and click Add
  15. Enter a description and the FQDN of the Document Server
  16. Test the connection
  17. If you see a popup saying Server OK!, click OK then click Save
  18. Navigate to the DOCSTORAGE location on the filesystem
  19. Add a new folder, name it the hostname of the Document Server
  20. Add a new folder inside that folder, name it the SQL Instance name (Sims if you followed the setup guide here exactly)
  21. On the old server, navigate to the original DOCSTORAGE folder and go through the following directories: <hostname> > <SQL instance name>
  22. Copy the SIMS Directory from the old server to the new server, placing it inside the <SQL instance name> folder
    1. This might take a while - you can proceed with the SOLUS3 migration below if you wish, just try to not interrupt network or reboot prior to the data transfer completing
      Here's a robocopy command you can run to move the data a bit faster than explorer can manage it. Google the parameters used to make sure you're happy with them, and adjust source/destinations as required:
      robocopy "\\oldSimsServer.fqdn\e$\sims shared drive\docstorage\oldserver\oldinstance" "\\newserver\e$\sims shared drive\docstorage\newserver\newinstance" /mt:16 /MIR /copy:DT /ZB /FFT /R:10 /W:5 /dcopy:D
  23. Test from the Sims client on the server

Sims.Net Clients

Getting the client to work on network devices is generally fairly easy, but sometimes you can hit errors when you try logging in from a client workstation. The most common error I've come across is SIMS Connection failed for Login <username>, reason: 0 which is incredibly vague but essentially means “I can't see the database!” - why, that depends, but typically it's some kind of network or connectivity issue.

Check the following on the server to increase your chances of clients working right away. Note that sometimes you won't need to do all of these and some may be already set up.

  1. Log on to the new Sims server
  2. Open SQL Server 2019 Configuration Manager
  3. Select SQL Server Services on the left
  4. Find the SQL Server Browser service
  5. If the Start Mode is Disabled or the service is not running, right click it and go to Properties
  6. Set the Startup type to Automatic
  7. Start the service by right clicking SQL Server Browser and selecting Start
  8. Expand SQL Server Network Configuration > Protocols for <InstanceName> on the left
  9. Double-click on TCP/IP
  10. In the Protocol tab, change Enabled to Yes
  11. Apply & OK
  12. Select SQL Server Services on the left
  13. Restart the SQL Server (<InstanceName>) service by right clicking on it and selecting Restart
  14. Expand SQL Server Network Configuration > Protocols for <InstanceName> on the left
  15. Double-click on TCP/IP
  16. In the IP Addresses tab, scroll down the bottom and make a note of the TCP Dynamic Ports value then close this window
  17. Allow the port you've obtained from the SQL Server 2019 Configuration Manager step in the server firewall - don't forget to open any other required SQL ports (like 1433/tcp)

To point your clients at the new database location, you just need to update the connect.ini file the clients use. I opt to store the required configuration in the connect.ini file located in the Sims.Net install directory on the local machine instead of redirecting to a connect.ini file on a network location.

The important lines to update are the ServerName value, which should be the server name FQDN followed by the instance name (eg: SIMS-SERVER.internal.school.county.sch.uk\Sims), and if needed update the DatabaseName value to match the name of the database itself (eg: sims).

The official recommendation is to use SOLUS3 to deploy these files as well as client updates. However, as we all know, SOLUS3 sucks. So let's not bother using it (for clients). I instead set up a group policy object that writes both the connect.ini file and the sims.ini file to the applicable user devices. Just update the connect.ini file centrally, then force a gpupdate across your devices that have Sims.Net installed already. I also deploy these files as part of the PDQ Deploy deployment, which we'll cover later.

Hopefully Sims.Net is working for your users now. You can rest for a moment, weary traveller. The maintenance period can be over now. People can start using Sims again. Aside from a few things you should get to fairly quickly, outlined in the next section, SOLUS3 server will be needed, and you need to think about deploying updates, but these can wait at least a little while. Unless you have an update you need to roll out right away, of course.

Post-Install setups

Despite working now, some areas of Sims will eventually crop up with new errors, especially in secondaries.

Sims keeps some references to the server within the application itself rather than centrally on the database (why?!) which will need to be updated manually. You'll also note that as part of this migration, we haven't copied any of the files from the old Sims shared drive. There's a good reason for this - every Sims shared drive I've seen has either been completely unused, or full of stuff that, it turns out, isn't actually needed. I've only ever seen it mapped to all staff as a network drive write all staff having write access and as a result is used as a bit of a dumping ground.

There are also some directories that some of your users are probably used to using that may no longer exist in the new shared drive. This guide should get you 98% of the way to a fully functional Sims migration without expensive third party contractors... but it's these little obscure use cases that will catch you out! If you identify any additional areas where things are hardcoded or directories are needed, let me know and I'll get them added to this section.

Here are the ones I know about:

Sims Examination Organiser

  1. Open Examination Organiser
  2. Set the new folder structure if it complains it can't find the right folders (ideally use the shared Sims$ drive)
  3. Go to Tools > School Setup > School Details and set the EDI directories to reflect the new setup if required

Cover

If you publish your cover timetable to HTML, you'll need to update the destination that these files save to if they used to save to the old Sims server.

You can do this through: Tools > Cover > Global Settings - section 3.

Sims Attendance Letters

If these are suddenly missing for your attendance team they will need to be located on the old server and copied across to the new one. Typically, these are found in:

S:\Sims\Attend

Running Sims on a workstation after an update and it keeps trying to install a bunch of stuff!

Odds are you have installer files in the location indicated by the SIMSSetupsDirectory= line in C:\Windows\Sims.ini. You don't need any of them. Delete them, move them, keep them elsewhere.

The only additional file you might want to install alongside SimsApplicationInstaller.exe is SimsManualInstaller.exe, which just extracts the manuals (the .pdf file user guides) to the workstation. But I haven't bothered with it!

SOLUS3 - unfortunately, it does make some stuff easier

Yes, we hate it, but it is convenient to have for getting update files and updating the server itself. At least, in order to do it more smoothly than a manual upgrade. If you're not lucky enough to have an application deployment tool like PDQ Deploy you will have a better time installing SOLUS3 in order to keep your clients up to date, too.

Whilst it is in theory possible to migrate SOLUS3 from an old server to a new one, I have only been able to successfully do this once. Each of the failed attempts failed for a different reason which often defied logic. So I just don't bother and install it fresh.

Install SOLUS3

  1. Download the installer from dl.sims.co.uk (the password for 3.12.72, the version linked to, is currently YhgH7Y2TCvtcdG53 - they publish this password publicly (with the right Google-Fu) so I assume I can too?)
  2. Extract all files
  3. Run SOLUS3DeploymentServerDatabase.exe
    1. Install the required prerequisites
    2. Input the SQL Server and sa account details (SQL server = <hostname>.<FQDN>/sims) - click Test Connection to verify the details are accurate
    3. The next window offers to set up a new SQL account just for Solus - this is a good idea, so generate a new account here. Record the details in your password manager.
    4. Install
  4. Run SOLUS3DeploymentService.exe
    1. Install any prerequisites
    2. Input the SQL Server and sa account details, NOT the solus3 user created previously (SQL server = <hostname>.<FQDN>/sims) - click Test Connection to verify the details are accurate
    3. Leave deployment port as the default (52965)
    4. If you extracted all files at the start of this SOLUS3 installation process, the Setup File Path for .NET Framework should be accurate. If not, hit Select... to change it to the location of the required installer file
    5. The install location can be the default or change it to the storage drive if preferred
    6. Install!
  5. Run SOLUS3DeploymentServerUI.exe
    1. Install any prerequisites
    2. Input the SQL Server and sa account details, This CAN be the solus3 database user created previously but I have experienced some flakiness with this on occasion and now have reverted to just using the sa account here (SQL server = <hostname>.<FQDN>/sims) - click Test Connection to verify the details are accurate
    3. Specify if you want any icons to be generated on the desktop/etc for the application
    4. The install location can be the default or change it to the storage drive if preferred - ideally put it in the same place as the previous install if you're also installing it on the same machine
    5. Install!

SOLUS3 Configuration

  1. Run SOLUS 3 Deployment Server UI from the start menu or the desktop
    1. Enter the Establishment Number and Postcode of the school, then click Verify
    2. Once the school Address is populated, click Register
    3. You'll be asked for a Registration Password - This would have been set on the previous install so you may need to get this from your current support provider or ESS directly if you don't have it
  2. Once registered you'll be taken to the Settings > SOLUS3 page to complete the SOLUS config:
    1. Service host: click the dots and move the server into the right column
    2. Update repository (I create a directory, 'Solus3Setups' in the shared sims$ folder for this and share it as 'Solus3Setups$' - You will need to give 'SYSTEM' write access to the share) and click Validate
    3. Click save
    4. Next, go to Environment > Targets > Servers and click Add
      1. Server name: Find and select the new server
      2. Instance name: SQL instance name here (sims if you followed this guide)
      3. Binn folder: paste the location of the Sims Binn folder here (C:\Program Files\Microsoft SQL Server\MSSQL15.SIMS\MSSQL\Binn if you followed this guide)
      4. Click save and enter admin credentials to save the config
    5. Do the same but for the Databases tab and the Services tab, adding the Sims File Server, pointing at the local location of the Sims shared directory (E:\Sims for example)
      1. You might want to do the DMS (DocumentManagementServer) too, in which case you should make a new Sims account with Returns Manager and System Manager permissions
    6. Navigate to Settings > SOLUS3 > SOLUS and define any missing fields
    7. Navigate to Upgrades > Update Library to see all your updates
    8. Try downloading the version of Sims that matches the one running on clients
    9. Navigate to Environment > Configure Workstations, then along the bottom select sims.ini
      1. In the shared directory, create a new folder (ini files for example) and then create a new sims.ini file.
      2. Copy the config from the old sims.ini file on the old server to this new file, checking that the data in it is still accurate
      3. Select this file in SOLUS, leaving the two installation options as use default
    10. In the same Configure Workstations window, select the connect.ini tab along the bottom
      1. In the shared directory, create a new connect.ini file
      2. Populate this file with the relevant data - if you have working clients, just grab a copy from one of them
      3. Select this file in SOLUS, ensuring that you overwrite and that the other options are accurate. I like to set the ConnectionType to Trusted because by default, SQL authentication isn't as secure as Windows and this gives clients the option of logging in with their Windows session instead of relying on remembering/recording separate Sims credentials
        1. To set up an account to log in with the Windows credentials instead of needing to supply a username password combo, just change the username in System Manager to be <domain>\<username> (eg: internal.school\jsmith) and the interface will update
    11. Turn on Solus by clicking the 'Off' toggle in the top right into the 'On' position. Add a couple test endpoints to begin deploying SOLUS agent and the current version of Sims

If at this point it works, you should be golden. If you need to deploy the SOLUS3 agent out to your workstations, do this now, however if you want to avoid the slowness of SOLUS3 and deploy the Sims.Net client via PDQ Deploy...

Deploy Sims.Net Client via PDQ Deploy

Say “No!” to SOLUS3 for client updates and use PDQ Deploy instead. I use this, and it cuts down our large-school-wide Sims upgrades from 3+ hours (with inevitable client issues) to being complete in less than 30 minutes.

I am using a licensed version of PDQ Deploy which makes this easier (multiple steps in a deployment! Retry queue! Yay!) but you could replicate it with the free version easily - just cut down on the steps to one job for deploying the file (which you do ahead of time) and a second to actually execute the powershell that runs the upgrade. You might need to get creative with how you do this on the free version. Once I can get at a license-free copy of PDQ I'll figure out the best path to achieving this.

There are some odd looking steps here - as we go I'll explain the reasoning for each.

Setting up the PDQ Package

  1. Open PDQ Deploy
  2. Create a new deployment and name it appropriately
  3. Step 1: Copying SIMSApplicationSetup.exe to the target
    Yeah, but why? Due to the way we need to execute this file to initiate the install, we copy it to the target first.
    1. Pull the SIMSApplicationSetup.exe file from the extracted files from SOLUS and place it in the PDQ repository
    2. Create a File Copy step in the Package
    3. Single File selected
    4. Source: Select the SIMSApplicationSetup.exe file in the PDQ Repository
    5. Target Folder: Anywhere, I will use C:\Temp\
    6. Overwrite Existing Files: Tick
    7. Ignore Overwrite Errors: Untick
  4. Step 2: Copy connect.ini
    Yeah, but why? SOLUS3 deploys this usually, but we're not using that! You can also deploy the connect.ini file via Group Policy but this covers the “new device build” use case
    1. Pull the connect.ini file from the server or one of your working clients and copy it into the the PDQ repository
    2. Create a File Copy step in the Package
    3. Single File selected
    4. Source: Select the connect.ini file in the PDQ Repository
    5. Target Folder: C:\Program Files (x86)\Sims\Sims .net\
    6. Overwrite Existing Files: Ticked
    7. Ignore Overwrite Errors: Ticked
  5. Step 3: Copy SIMS.ini
    Yeah, but why? Same reason as the previous step!
    1. Pull the SIMS.ini file from the server or one of your working clients and copy it into the the PDQ repository
    2. Create a File Copy step in the Package
    3. Single File selected
    4. Source: Select the SIMS.ini file in the PDQ Repository
    5. Target Folder: C:\Windows\
    6. Overwrite Existing Files: Ticked
    7. Ignore Overwrite Errors: Ticked
  6. Step 4: Kill pulsar.exe
    Yeah, but why? If a target is running pulsar.exe - the main sims executable - sims will think it has updated but some files will be locked, so we kill it just before executing the upgrade. I see lots of people try and log in, see the Invalid Database error, and just leave it. If we don't kill pulsar.exe the upgrade will report as successful but will never truly succeed for that target. You may want to add additional .exe's here as you find them (please tell me about that) but for 99% of cases, shooting pulsar.exe in the head is enough.
    1. Create a Command step in the package
    2. Paste the following into the Details tab text box:
      tasklist | find /i "pulsar.exe" && taskkill /im pulsar.exe /F
      Yeah, but why? We don't just run taskkill /im puslar.exe /f on its own because if pulsar.exe isn't running when we try to taskkill it is considered a failure and will set errorlevel to 1, which PDQ will interpret as a fail. By executing the command in this way - passing piped output from tasklist - we never hit errorlevel 1 whether the task exists to be killed or not, because tasklist doesn't set an exit code, so PDQ is happy either way and will just continue on its merry way with the next step!
  7. Step 5: execute SIMSApplicationSetup.exe via powershell
    Yeah, but why? When I execute the install directly via the PDQ agent, about 15-20% of installs fail - no data gets written to the drive at all. I have no idea why this happens right now, but making powershell execute the same command results in 100% success rate (so far). It also has another advantage - typically PDQ will wait for a step to complete before moving on. If you launch the installer via powershell, the step according to PDQ is “run this powershell command” - once it's done that, PDQ will proceed to the next step, even though the installer has only just launched and probably hasn't started actually upgrading any files. The result of this small change is that you power through your PDQ Deploy queue way faster than if you had to wait for the installer to finish each time. Clients get their update faster and can get back to their jobs with way less friction and waiting around.
    1. Create a Powershell step in the package
    2. Paste the following into the Details tab text box onto a single line - note the ampersand (&) at the start:
      & "C:\Temp\SIMSApplicationSetup.exe" /S {QuietMode} [SIMSDirectory]="\\<server FQDN>\Sims$" [SIMSDotNetDirectory]="C:\Program Files (x86)\SIMS\Sims .net\"
      • Make sure you change <server FQDN> in the above command to the hostname and domain of the server (eg: sims-server.internal.school.county.sch.uk)
  8. Step 6: Display install notification
    Yeah, but why? This simply informs the user that the install is happening so they hopefully don't open the Sims application and break the upgrade. Staff may see Sims close (as part of a previous step) and try to re-open it, breaking the upgrade. You could display this message before executing the installer file rather than after if you prefer.
    1. Create a Message step in the package
    2. Type in a suitable message to display to users, something like:
      Sims.Net is currently being upgraded. Please don't click OK on this message, or open Sims.Net, until this message disappears.
    3. Show for: 240 seconds
      Yeah, but why? The install will (should?) never take this long, but I'm accounting for edge cases and older hardware. A fresh install of Sims will take longer than an upgrade, as an upgrade only writes changed files and skips files that are the same.
    4. Wait for user to click OK: Unticked

Deploy this to a client or two and verify that it works.

When it comes to rolling out a version upgrade, you just need to extract the files from SOLUS3 and overwrite the SIMSApplicationSetup.exe file in the PDQ repository, then push out the update to all your client devices. Easy.

Patches are a bit different - they are typically just self extracting executables which replace a few files in the Sims directory. These can be easily deployed with the File Copy package step in PDQ. Just throw together another package or add it as a step to the existing upgrade package as required.

Hope this helps speed your deployments up!