I fixed formatting in your post a little bit just to look it more clear and prettier.

But noticed WHERE% VID instead of  WHERE %VID, and AND% VID instead of AND %VID . And decided that it was an formatter error, which I used, but looks like it was in original SQL as well. 

So, can you add error message? For me, the first query should work, while next one will not work, because %VID will not exist.

CSP on, can be used either in Directory or Location directive. But you should remember the difference between them. Directory point to the physical path, while Location works with URL. As well as also possible to use DirectoryMatch and LocationMatch, which supports regex.

But with CSP on, all requests will be sent directly to CSPgateway and then to Caché. And if something not working you should check CSPGateway, sometimes it needs to be restarted, usually all parts (depends on configuration, and plus CSPnsd), after some changes in list of CSP Applications

Why do you think that it may help you? Do you know how much data in your database?

As 5.0 is so old I even not remember how to check the actual size of data in the Database. But I think you can do the integrity check, and in this report, you will have this information in last rows.

And then if you will have less than 10-20% of free space, I think it will not be needed for you. And with this report, you can see how big all globals in this database, and if some useless globals may be unexpectedly exists or have unexpected size. If so, you should check your code, why it could happen and remove it, so you can increase free space, which can be used then for grown useful globals.

If you will have so much free space, which you want to free, you can use ^GBLOCKCOPY, to copy all or only useful globals to the new database.

As far as I know .abf file format, it is just backup for MSSQL Databases. So, It is not possible and will not possible in any way. And all this conversion will not be such easy. And you should understand that Cubes, that not about data before you should migrate all the data, and create new cubes in Caché with knowledge about, how it was in MS SQL.

When WebSocket initialize connection from the client side, the server should create a process, which will do any work for this client/s. But this connection should stay alive, that's needed by the standard. And Async, in this case, means, that any side of this connection, client or server can send a message at any time, when it needed. While another side should be ready to get this message and send or not some response. But this response, not the same as it could be in plain HTTP, it should be as any other messages if it was initiated by own.