Veeam to AWS VTL (Virtual Tape Library) – Guide


You may or may not know that there is quite a cheap way to archive your backup jobs to tape, without actually having a tape drive.

While I was looking at options to store my backup jobs off-site, I researched a number of things:

  • Buying a tape library
  • Buying another enterprise NAS (Network Attached Storage)
  • Using a JBOD (Just a bunch of disks) system like Microsoft Storage Spaces

All of these are expensive. All of these require some sort of hardware plus additional network and configuration. All of these are a pain in the ass.

Continue reading Veeam to AWS VTL (Virtual Tape Library) – Guide

User Device Registration Event ID 304 307

With Server 2016, we’ve been getting a lot of these errors in the event log

This is caused by a task called Automatic-Device-Join which runs as a scheduled task whenever someone logs into a server (terminal server). This can cause a lot of events on the system.

Disable this task. This is used for Azure AD device joins. No idea why this is enabled by default.

The provided manifest file is invalid VMWare OVA

Recently while trying to import the AWS Virtual Tape gateway, I found the OVF template for VMWare was failing to install.

After getting pretty frustrated, I decided to open the OVA file in 7zip and extract the MF file.

What I found was the file contained a lot of whitespaces.

If you remove this whitespace and add this file back to the OVA archive, the OVA will deploy.

Happy days.

OfficeBackgroundTaskHandlerRegistration Flashes a black CMD window every hour

This is an annoying issue I’ve been trying to find the answer to for a couple of days.

I get a quick flash on my screen with a black box which looks like a command window. I finally had this happen on a slow enough computer where I could see where it was running from. See below.

To fix this issue, do the following:

  1. Open task scheduler from the start menu
  2. Find Microsoft Office under tasks
  3. Disable OfficeBackgroundTaskHandlerRegistration

A fix from Microsoft on this issue is underway.

Accessing VMWare CLI via Lenovo IMM2 (KVM)

I’ve just recently run in to a problem trying to access ESXi’s CLI from the console using IMM2 (Integrated Management Module). The KVM seems to be intercepting commands incorrectly. This seems to be the case for a number of KVM tools.

The normal command for accessing the CLI once enabled, is to press ALT+F1. This won’t work. You will need to hold down ALT+Space, release Space and press F1 while keeping ALT held down.

ALT+Space release space ALT+F1

VMWare: Set IP Hash policy via CLI

I recently lost a host at one of my sites which have a failover policy set of IP Hash. No problem, connect a new host remotely and add it back to the network. Problem is, I cannot access this host from vCenter because of this policy. After posting on Reddit, someone gave me the following command to enter via CLI

You will need to enable the CLI from the console -> troubleshooting options.

esxcli network vswitch standard portgroup policy failover set -p "Management Network" -l iphash

Once this is set, you should now be able to see your host from vCenter.

Veeam cannot see ReFS 3.1 volumes in backup (Server 2012 R2)

We had a problem recent where Veeam 9.5 which was installed on Windows 2012 R2 trying to restore from Exchange 2016 on Server 2016 with ReFS datastores.

It turns out, Server 2012 R2 cannot recognise ReFS 3.1 which is on Server 2016. From the screenshot below, this backup is missing two drives which are ReFS:

When logging in to the Exchange server, you will see the correct drives

To fix this you really only have one option: Install Veeam B&R on Server 2016, or at the bare minimum, the mount points on Server 2016.

Once you have a Server 2016 mount point, you will be able to see the ReFS drives.

Method ‘Upgrade’ in type ‘Microsoft.SharePoint.WorkflowServices.WorkflowServiceApplicationProxy’ Sharepoint 2013 pre SP1

We have an old install of Sharepoint 2013 which has the March 2013 PU installed. A bunch of security updates slipped through which patched Sharepoint. You will get the following error:

Method 'Upgrade' in type 'Microsoft.SharePoint.WorkflowServices.WorkflowServiceApplicationProxy' from assembly 'Microsoft.SharePoint.WorkflowServices, Version=, Culture=neutral, PublicKeyToken=71e9bce111e9429c' does not have an implementation.

This is apparently caused by newer security updates shipping with Sharepoint 2013 SP1 dll files. In order to fix this issue, download and install KB2880963. The install may take some time.

Installing 3CX v15 on Azure with Debian

I spent hours trying to sort out how to install 3CX on Microsoft’s Azure platform. Even though Microsoft Azure has a Debian 8.0 Jessie image, things do not quite go to plan. Also be aware, this isn’t officially supported, and as this post will show, we know why.

Here we go.

    1. Create a new Debain 8 instance in Azure. Configure this however you like.
    2. Once installed, SSH to your new instance.
    3. Once logged in, run the following commands:
      wget -O- | apt-key add -
      echo "deb /" | tee /etc/apt/sources.list.d/3cxpbx.list
      apt-get update
      apt-get install 3cxpbx

      Install all the things.

    4. Once installed, you will see the following. I suggest the web method
    5. You will also need to open this port on Azure
    6. Now we are in business. BUT YOU ARE GOING TO RUN IN TO A BIG ISSUE. This is to do with the default template with the postgres database. If you don’t fix it, you will get the following error (text included for Google searches
      System.Exception: Error in CreatingCloudServerManagementDatabase.sql: 22023: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) ---> Npgsql.PostgresException: 22023: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII) at Npgsql.NpgsqlConnector.DoReadMessage(DataRowLoadingMode dataRowLoadingMode, Boolean isPrependedMessage) at Npgsql.NpgsqlConnector.ReadMessageWithPrepended(DataRowLoadingMode dataRowLoadingMode) at Npgsql.NpgsqlDataReader.NextResultInternal() at Npgsql.NpgsqlDataReader.NextResult() at Npgsql.NpgsqlCommand.Execute(CommandBehavior behavior) at Npgsql.NpgsqlCommand.ExecuteScalarInternal() at PostInstall.DBConnection.ExecuteScriptInternal(NpgsqlConnection connection, String sqlQuery, IDictionary`2 parameters) at PostInstall.DBConnection.ExecuteScript(String sqlQuery, IDictionary`2 parameters) at _3CXCloudDBManager.DbConnectionExtensions.ExecuteScript(IDBConnection connection, Object configurationStructure, String scriptText, Boolean asResourceName) --- End of inner exception stack trace --- at _3CXCloudDBManager.DbConnectionExtensions.ExecuteScript(IDBConnection connection, Object configurationStructure, String scriptText, Boolean asResourceName) at _3CXCloudDBManager.CloudDBManager.CreateCloudServerManagementDatabase(IDBConnection superuser, CloudServerManagementDatabaseConfiguration configuration) at PostInstall.SetupExecutor.CreateDatabase(Action`1 stateChanged) at PostInstall.SetupExecutor.ExecuteSetup(SetupSettings setupSettings, Action`1 stateChanged) at PbxWebConfigTool.PbxSetupService.CreatePbxInternal(SetupSettings settings)


    7. Let’s fix this. Trying to login to psql is going to give you an error. So you need to type the following:
      sudo su - postgres
    8. Type psql and enter the followin
       UPDATE pg_database SET datistemplate = FALSE WHERE datname = 'template1';
      DROP DATABASE template1;
      UPDATE pg_database SET datistemplate = TRUE WHERE datname = 'template1';
      \c template1


    9. Now run through the web setup on http://yourip:5015 and you will no longer get the error

If this saved you a huge amount of pain, please leave a comment 🙂