CMMS/Asset Managment



  • Hey All,

    Hoping to start a lively discussion maybe.

    I've been tasked with sorting out a replacement to our existing software.

    Background: I work for the UK branch of a global company. I work in the support/service department. We deal with all software support and machine repairs and servicing for a range of machines dating back at least 25 years. We are currently using a sales system, bodged to work as a service tracking system. Instead of customer names, we use timestamps to create 'tickets', and then update the history with a series of word documents. This makes it hard to see the complete history of a machine, and the additional work required when inputting data means it takes a while to update the system. Consequentially, sometimes we don't bother updating logs, which leads to confusion later on.

    What we need: A system which stores company details ('Accounts'). Each Account may have one or more locations ('Customers'). Each Customer may have one or more Machines and one or more versions of Software. Machines have accessories. Software has Levels and Options and Customisations. Software is installed on a computer (dur!), but it would be useful to have this information stored.

    Accounts have Contacts. Customers have Contacts. These contacts may be the same people.

    If a customer has a fault, the machine may come back to us or we may send an engineer onsite. We then have the concept of temporary repairs, repair quotes, repair reports (ie, machine is repaired, now awaiting payment etc).

    A repair may need parts we don't have in stock, so we need a system of tracking parts orders (99% of the time from our head office, rather than many suppliers).

    On top of all of this (and I've missed out many other considerations), we need to be able to prioritise the jobs and have this done semi-automatically, so that if parts are on order, when they arrived, the priority list may change.

    Yes, I've essentially just specced a database. I did this last year and have spent bits and pieces of my limited time trying to create an application to do it, but it's getting difficult. I probably made bad design decisions at the beginning.

    The company is not willing to assign any money for this, so it needs to be free, opensource, customisable or written by myself.

    I can't find a piece of software that does everything I need, and some of the ones I've tried to test have required installing local webservers and strange libraries. Generally I gave up trying to get them all to talk to each other.

    We do have a Windows server that could be repurposed. The half baked version I have been working on has been using an sqllite database file, which means I haven't been using this server.

    Having relooked at the requirements recently, I think the design of my database is probably the biggest stumbling block, and also my weakest area of expertise. I have considered though that this sort of application would benefit from a modular, tree/hierarchical data structure (ie, create some sort of template node and have a parent/child system, where Accounts have Customers have Machines have Tickets have Repair information).

    Can any one recommend either an existing application, a framework/library, or information on a better data structure?

    I should also add that I am a scripter, not a programmer, so PHP or TCL rather than .NET or Java.

    Any hints or tips?

    Thanks guys,

    Ben


  • sekret PM club

    @Ben_Warre said in CMMS/Asset Managment:

    The company is not willing to assign any money for this

    Yer fukked.

    Seriously, there's a reason that the big-name providers of these charge asinine amounts of money for enterprise-level versions of this (ServiceNow, Siebel, Remedy, etc.). You're essentially asking "What's a good, free, combo ticket system-hardware management-order tracking-megasystem".


  • FoxDev

    @e4tmyl33t said in CMMS/Asset Managment:

    @Ben_Warre said in CMMS/Asset Managment:

    The company is not willing to assign any money for this

    Yer fukked.

    Seriously, there's a reason that the big-name providers of these charge asinine amounts of money for enterprise-level versions of this (ServiceNow, Siebel, Remedy, etc.). You're essentially asking "What's a good, free, combo ticket system-hardware management-order tracking-megasystem".

    agreed.

    we could find you a decent ticketing system that's free and a system for free or next to nothing that's an okay hardware managemnetr system, there are some good options for free or dirt cheap order tracking systems..... but one system to rule them all? for free?

    not gonna happen.

    you can deliver:

    • A good mega system that is expensive now, but will pay for itself over time in efficiencies

    XOR

    • A end user usable megasystem that's cheap, but will be exorbitantly expensive to maintain and expand over time

    XOR

    • A functional megasystem that is cheap, maintainable, and your end users will hate to the point that they will consider physical violence against the maintainers of the system

    XOR

    • A great set of separate applications that have the minimum required crosstalk that users will enjoy working in (except for having to switch between systems) and will be maintainable.

    XOR

    • You get the picture this is basically a variation of the old "Good, Fast, Cheap. Pick two and i can deliver what you want at the expense of the third."

  • Discourse touched me in a no-no place

    @Ben_Warre said in CMMS/Asset Managment:

    I am a scripter, not a programmer,

    FWIW, the distinction between those two categories is very loose, and is mostly in your head. Speaking as someone who's done a lot of programming with several of the languages you mention and more besides. ;)

    In any case, the DB design is a really great thing to run past other people, as that's genuinely difficult to get right and has horrible consequences if you get it wrong. By and large, a relational DB is what you should be looking at for this sort of application area; the design is therefore about understanding what the relations are in the application area. You have the advantage here in many ways; you've already put much time into thinking about what is going on. (By contrast, I've had the 10 minutes since I started reading your post. :p )

    It doesn't sound too hard to write queries that return the prioritised list given the constraints on things like parts availability. Might take some tuning, but I'd not worry about that too much until there's an actual problem.

    I probably made bad design decisions at the beginning.

    Here's a long-term programmer's trick: don't be afraid to go back and fix bad decisions. The right time to fix things is (almost always) now: they don't become magically right by themselves.


    OTOH, the biggest red flag is that the company isn't willing to put in any money. Irrespective of whether the software is open source or commercial, they should understand that if it is an important part of their business, valuing the (information/software) infrastructure to support them at zero is deeply ill-advised. While they think they can get something for absolutely nothing, they'll continue to nickel-and-dime over every stupid thing and will never really settle down to think about what they really need. Either that or they'll just expect you to not do this at all and instead keep on working with the current shonky bodge. There's a world of pain ahead.



  • Pretty much the response I expected.

    Thanks @dkf for your comments about design.

    Main issue is time. If I have to do it myself I have to fit it around my workload. They will pay overtime if I do it outside working hours but I have two young kids and a house to maintain so that doesn't happen often.

    The half finished version I have needs to be scrapped. I've been mixing gui code with logic code, even reading foreign keys from widgets to do sql queries. Like I said, poor design.

    Is there a database wrapper or framework that may help with this sort of thing?

    I've just installed exist-db which looks interesting. It uses xml...



  • @Ben_Warre said in CMMS/Asset Managment:

    The company is not willing to assign any money for this, so it needs to be free, opensource, customisable impossible because they have to spend money to install and support it or written by myself de facto impossible because assigning you is assigning money to the project..



  • @JazzyJosh said in CMMS/Asset Managment:

    @Ben_Warre said in CMMS/Asset Managment:

    The company is not willing to assign any money for this, so it needs to be free, opensource, customisable impossible because they have to spend money to install and support it or written by myself de facto impossible because assigning you is assigning money to the project..

    Ah, except I'm already being paid to be there.



  • @Ben_Warre doesn't matter from a budgeting standpoint.


Log in to reply