Where I've used that second option to get an IP address, I've noticed that if the client has more than one IP address, it can return different ones different times, and I'm not sure how it determines which one.

You can send texts through SMTP if you know the SMS gateway for the service provider. Several of these should be preconfigured on your instance of Cache or IRIS under System Administration, Security, Mobile Phone. You use the phone number @ that server as the email address to send to. For instance, if the phone number was 999-999-9999 and it was on AT&T, you'd send the email to 9999999999@txt.att.net.

So that's one way to do it, but I'm sure there are better ones.

The last couple of times I tied this, it told me it couldn't find the jar file to download. I got it from the dev directory on my IRIS server and configured it manually. 

Make sure your user account has an appropriate role (like %Developer or %All) and also make sure you aren't using all of your licensing.

We're still using a combination of Crystal Reports and ZEN reports, but also looking into Intersystems reports. I don't have much to say yet, other than that I'm also interested in this topic.

A parameter is a shared, constant value that's available to all instances of a class. It can be calculated when the class is compiled, but it generally can't be altered at runtime.

A property is a variable that each instance of a class stores it's own value for, and it can be set changed at runtime.

Are you sure that's where your problem is? If I do:

select MONTH(dateadd(mm,-1,GETDATE()))

I get 12. If I create a query with a where clause similar to yours on my data, it works as expected.

I'm not sure you can do that, but is there any reason you can't define it as two web applications, one with the dispatch class and one without?