Hi,
We've been using JIRA for some time now, and find that to achieve certain results we (ab)use some functionalities in ways that might be up for improvement. I would like to layout our process using JIRA and hope for your advice. Thanks for taking the time to read my small novel below. 
Questions:
I'll ask my questions in advance, and provide information later, so you know if you think you'll be able and willing to advise me:
- Would you recommend using the "Project = Client" approach, or would you advice on setting up a new project for bigger changes, and use f.e. a Maintenance project per client?
- Can you think of a better way to tackle filtering billable issues, without manual 1 by 1 checking issues/calculating, and/or losing epic's functionality?
Background:
We have multiple clients, of which always about 40 active at a certain time. New/bigger projects usually span about 2-6 months. Each client may report bugs, or small-mid changes (half a day work to a week work), up onto starting a bigger 3-6 month projects on average.
We usually assign a dynamic team of a frontend developer, backend developer and project manager to the project. It can vary slightly.
We bill mostly by the hour, manually. Sometimes we have fixed price sales or non-billable bugfixes.
This kind of approach dictated some specific setup;
Current JIRA setup:
At the moment we create a JIRA project per client. Customer communication comes via an external service desk, of which we create JIRA issues. This can be bugs, changes, new features, etc.
To check which issues need to be invoiced we've setup a filter to check workratio > 100% and for a custom field with a "bill by hour" value. We set the Original Estimate value to hours already billed (and fille remaining estimate with what should be original estimate). This way we have an overview of issues that need invoicings, at the cost of correctly using the Original Estimate field the way it was intended. This is a setup for individual small changes.
Now for bundled changes, or projects, we do not want to bill for each individuel issue, so we create an epic which represents a project/combination of small changes. We create issues inside that epic with a custom field "bill by hour epic", and a numeric value of the hours already billed.
Each projectmanager checks manually each week the sum of logged hours on issues in the epic, to be able to bill the possible extra hours. This is at the cost of proper epic usage (I think), because we can not use multiple epics in a project, and we can not use a filter that shows all epics that need billing. We need to manually check every active epic to calculate hours.
I would really appreciate your advice and would be happy to provide additional information. Thanks!