Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I work for a small software company (about 200 people building 8-10 applications) and I was hoping to get some advice on products that might be out there to manage the information of which clients are using which versions of our products?

The most fundamental relationship would be that a "product" has "versions" and a given "version" is used by a "client." Uses would be:

  • Determine which clients use which products
  • Determine which clients are on which versions of a product
  • Determine which clients are exposed to which vulnerabilities because of the version they use
  • Determine which clients cannot move to a new version because of a vulnerability in the new version that they may hit
  • Determine which clients should be approached for an upgrade

Any thoughts or product reviews would be greatly appreciated!

Thanks in advance.

share|improve this question

closed as off topic by Doc Brown, Matthieu, Mark Trapp, Walter, Jim G. Sep 4 '12 at 18:47

Questions on Programmers Stack Exchange are expected to relate to software development within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

Excel sounds like a reasonable choice, as long as someone else is doing the data entry. A warm-up project for a summer intern would be my second alternative. – dasblinkenlight Jun 26 '12 at 14:08
So what is your question? How to manage that kind of information, or how to gather that information from your clients? And - roughly - how many clients do you have? 100? 1000? 100000? – Doc Brown Jun 26 '12 at 14:27
i think the question is as posted -- i'm looking for suggestions for products to use. excel (with a bunch of vlookup()s) is something we've entertained, yes, but i'd be surprised if there isn't something of more professional grade out there? probably ~150 clients with a total of ~250 client-version relationships (some clients run multiple versions of the same product) – Matt Felzani Jun 26 '12 at 14:59
A simple Microsoft Access application should suffice, assuming you know someone with RDBMS experience. – Robert Harvey Jun 26 '12 at 18:36
interesting responses. judging by the suggestions of excel/msaccess i'm led to believe that there are no products that exist in this space. – Matt Felzani Jun 26 '12 at 19:43
up vote 1 down vote accepted

There are lots of products for keeping software inventories (google for "software inventory"), but those are mostly aimed at gathering the complete software stack inside a company`s network. Your case seems to be simple and small enough that someone could maintain that information more or less manually in an Excel sheet or an Access DB - nothing for which a full-blown product will pay off, I guess. That it is probably the reason why you have problems to find a ready-made solution for your case - it can be too easily solved with MS Office tools.

How to gather the information and transport it from your client to you is a completely different question. There are lots of real-world examples how online updaters could be designed to convince a user that he should allow a program to check for available updates and download those automatically (I don't think I have to list you any examples, I am sure you know them). Part of that update process may be transferring the version information together with the information who is downloading the update to you.

share|improve this answer
thanks! as i mentioned to @Dr. House we really don't have the ability to "receive" the info from the clients because of how some of our clients use our application. the task at hand is to find the best way from a purely administrative position to maintain the data. – Matt Felzani Jun 27 '12 at 17:44
@MattFelzani: when your clients don't want your updates, you cannot force them to download and install them, and it does not matter. If they want updates, you can most probably force them to reveal their identity, so at least you know who downloaded the latest version (if they actually install it is a different thing, but perhaps it is enough for you to assume this). This works no matter if your application "phones home", or if your clients have to get those updates manually. – Doc Brown Jun 27 '12 at 20:41
first off, i appreciate all the thought you are putting into the comments @Doc Brown. after that, i think it's a small case of over-thinking the problem. we basically sell our clients our product ... they bring us in and we build it out for them, so we know exactly who they are and the version they're getting. however, once they take the build they're free to do with it as they please. as i've mentioned it's not a matter of programatically solving the problem as it is of administratively solving it. – Matt Felzani Jun 28 '12 at 12:08

I would just make the program "call home" every time it's started and/or everyday (in case they never shut it down). The call home would be to a server in your company.

The product version is easy to take, and the client, well, just ask them to enter those details to keep using the product.

You can make this in very few lines of code. The server would just have an app running and listening to some port, and when a client connect to this port just wait and receive the info the client will send (version number and client ID), and store it in a database or at least a log file.

share|improve this answer
very good suggestion, but once we deliver the implementation a lot of the time we lose control of its ability to "call us back." also, i'm looking at the task from more of an administrative standpoint as opposed to software standpoint. – Matt Felzani Jun 26 '12 at 15:01
+1 dial home will save a lot of time. Have seen it done a simply calling a web server URL with the license # and version # as parameters. – james Jun 28 '12 at 2:18
Maybe too late, but I'll post it. I would use SQLite or MySQL. SQLyte is simpler, but does not support encryption. It really just takes a few lines of code to have a QLite database running. Acces or Excel are options too, but I wouln'd rely on them. Plus, the database file would be way larger (might be a problem if you have lots of data to index). – Dr. House Jun 28 '12 at 16:39

Not the answer you're looking for? Browse other questions tagged or ask your own question.