Sample Application: Services Manager
Every following chapter in this book contributes to the construction of a sample application called Services Manager. Services Manager is designed for businesses that bill for their employees' time. These businesses need accurate accounting of when and where employees are staffed, numbers of hours worked, skills of the employees, project expenses, amounts billed to customers, and so forth. This section describes these features in preparation for later discussions of their design and code.
The goal is not to build a fully functional application for operating a professional services business, but to provide a logically related set of working code samples to accompany the technical concepts covered in this book.
Imagine you own a professional services business. The services your company provides could be architecture, graphic design, software, law, or anything with the following characteristics:
- High cost, highly skilled employees
- Complex projects lasting a week or more
- Customers billed at an hourly rate and invoiced monthly
- High cost of acquiring new customers
Your profit comes from the difference between the billing rate and the internal cost of resources. This is typically small, so your process must be streamlined, repeatable, and scalable. To increase profit you must hire more resources and win more customer projects.
The users of the Services Manager application span many roles in the organization. The roles are covered in the following subsections, with a summary of their responsibilities and how they use Services Manager.
Services Sales Representative
Sales reps work with customers to identify project needs and manage the relationship with the customer. Reps use the Sales Force Automation (SFA) product from Salesforce to manage their sales process. In general, they do not use Services Manager directly, but start the process by winning the contract.
Staffing coordinators manage and schedule resources for projects. When the opportunity is closed, they are notified via email. They then create a project using Services Manager and staff it by matching the availability and skills of resources against the scheduling and skill requirements of the project.
Project managers are responsible for success of projects on a daily basis. They direct and prioritize project activities. They use Services Manager to manage the detailed weekly schedules of their consultants and monitor the health and progress of their projects.
The consultant is engaged directly with the customer and is responsible for the project deliverables. In Service Manager, he or she logs time spent on the project, indicates the completion of project milestones, and submits expenses.
Accounts receivable is responsible for invoicing and collecting customers based on work that has been delivered. At the end of each billing cycle, they use Services Manager to generate invoices for customers.
Services Vice President
The VP is responsible for the services P&L and success of the team. Services Manager provides the VP with reports on utilization and other metrics for assessing the team's overall performance.
The Services Manager sample application is developed incrementally throughout this book, each chapter building on the previous. Every chapter covers a set of technical concepts followed by the relevant Services Manager requirements, design, and implementation. The goal is to expose you to the abstract technology and then make it practical by getting your hands dirty on the sample application.
The following list names the remaining chapters in this book, with brief descriptions of the features of Services Manager to be covered.
- Chapter 2, "Database Essentials": Design and create the database and import data.
- Chapter 3, "Database Security": Define users, roles, and profiles. Configure sharing rules.
- Chapter 4, "Additional Database Features": Define fields for reporting and make a subset of data accessible offline.
- Chapter 5, "Business Logic": Build triggers to validate data and unit test them.
- Chapter 6, "Advanced Business Logic": Write services to generate email notifications based on user activity.
- Chapter 7, "User Interfaces": Construct a custom user interface for tracking the skills of consultants.
- Chapter 8, "Advanced User Interfaces": Enhance the skills user interface with Ajax.
- Chapter 9, "Integration": Calculate and transmit corporate performance metrics to a fictional industry benchmarking organization.
- Chapter 10, "Advanced Integration": Develop a Java program to update Force.com with information from a human resources database.
- Chapter 11, "Additional Platform Features": Build a custom dashboard component to visualize the geographic distribution of consultants on projects.