The invention relates generally to a software system and method.
Software systems are well known. One example of a software system is a customer relationship management (CRM) system and solution. For example, typical known CRM systems include Microsoft® CRM, SalesForce, a CRM product provided by SalesForce.com, Netsuite CRM, and SAP Business One CRM. However, conventional CRM systems have significant limitations that include a lack of flexibility, high costs, and a closed-source structure which is embedded into the traditional product offerings. These systems also do not have metadata driven user interface capabilities. These limitations have led to a failure rate of over 70% with traditional CRM implementations. Thus, it is desirable to provide a metadata driven user interface system and method.
The system is particularly applicable to an open source-based customer relationship management software system and it is in this context that the system will be described. It will be appreciated, however, that the system and method has greater utility since it may be used with any software system or any implementation and is not limited to the implementation described below. For purposes of illustration, however, the described system is an implementation in a customer relationship management (CRM) and groupware system. In the example, the CRM and groupware system is SugarCRM Inc.'s Sugar Enterprise 5.0.
The system may be implemented in a preferred embodiment using a base class known as SugarBean, and a data retrieval API. The base class has methods for building list queries, saving, and retrieving individual items. Each specific type of data creates a subclass of this base class. In a preferred embodiment of the invention, the base class is called SugarBean. There is at least one subclass of SugarBean for each module. SugarBeans also are used for creating database tables, cleaning out database tables, loading records, loading lists, saving records, and maintaining relationships. One example of a SugarBean subclass is Contact. Contact is a simple object that fills in some member variables on the SugarBean and leverages SugarBean for much of its logic. Security for instance, is automatically created for Contact. Another example of a SugarBean subclass is Users which is a module that is security related and should not have row level security applied to them. For this reason these modules have the bypass flag set to skip adding the right join for verifying security. The SugarCRM Sugar Professional system is a web based system with many concurrent users. Since this program contains critical data to the users, it is imperative that they have quick access to the system and their data. The most frequent activity in the program is to look at existing data.
The contacts module is accessed by a contacts tab 128 and allows the user to view a paginated contact list, or search for a contact. The user can click on a specific contact to zoom in on the detailed contact record and, from a specific contact record, the user may link to the related account, or leads, opportunities, cases, or direct reports (related contacts). Within the system, contacts are the people with whom the organization does business. As with accounts, the system allows the user to track a variety of contact information such as title, email address, and other data. Contacts are usually linked to an Account, although this is not required. The accounts module may be accessed using an accounts tab 130 and the user may view a paginated account list, or search for an account. The user can click on a specific account to zoom in on the detailed account record and, from a specific account record, the user may link to related contacts, activities, leads, opportunities, cases, or member organizations. Accounts are the companies with which the organization does business and the system allows the user to track a variety of information about an account including website, main address, number of employees and other data. Business subsidiaries can be linked to parent businesses in order to show relationships between accounts.
The leads module may be accessed by a leads tab 132 that permits the user to view a paginated list of leads, or search for a specific lead. The user can click on an individual lead to zoom in on the lead information record and, from that detailed lead record, the user can link to all related activities, and see the activity history for the lead. Leads are the people or companies with whom the organization might do business in the future. Designed to track that first point of interaction with a potential customer, leads are usually the hand off between the marketing department and the sales department. Not to be confused with a contact or account, leads can often contain incomplete or inaccurate information whereas contacts and accounts stored in Sugar Professional are core to many business processes that require accurate data. Leads are typically fed into the Sugar Professional system automatically from your website, trade show lists or other methods. However, the user can also directly enter leads into Sugar Professional manually.
The opportunities module is accessed by an opportunities tab 134 and permits the user to view a paginated list of opportunities, or search for a specific opportunity. The user can click on an individual opportunity to zoom in on the opportunity information record and, from that detailed opportunity record, the user can link to all related activities, see the activity history for the opportunity, and link to related leads and contacts. Opportunities track the process of selling a good or service to a potential customer. Once a selling process has commenced with a lead, a lead should be converted into a contact and possibly also an account. Opportunities help the user manage the selling process by tracking attributes such as sales stages, probability of close, deal amount and other information. The quotes module may be accessed by a quotes tab 136 and permits the user to view a paginated list of customer quotes, or search for a specific quote. The user can click on an individual quote to zoom in on the detailed quote information. A quote is formed by referencing product and pricing from a catalog of products you may create. A presentation quality Portable Document Format (PDF) representation of the quote may be created to fax or email to a client. Quotes may be associated with Accounts, Contacts, or Opportunities.
The products module may be accessed by a products tab 138 and permits the user to view a paginated list of products, or search for a specific product. The user can click on an individual product to zoom in on the detailed product information. A product is used when assembling a customer quote. The cases module may be accessed using a cases tab 140 and may permit the user to view a paginated list of cases, or search for a specific case. The user can click on an individual case to zoom in on the case information record and, from that detailed case record, the user can link to all related activities, see the activity history for the case, and link to related contacts. The cases are the handoff between the sales department and the customer support department and help customer support representatives manage support problems or inquiries to completion by tracking information for each case such as its status and priority, the user assigned, as well as a full trail of all related open and completed activities. A dashboard (such as that shown for example in
The documents module may show the user a list of documents that the user can download. The user can also upload documents, assign publish and expiration dates, and specify which users can access them. The email module allows the user to write and send emails and to create Email Templates that can be used with email-based marketing campaigns. The user can also save drafts and archive emails. The campaigns module helps the user implement and track marketing campaigns wherein the campaigns may be telemarketing, mail or email based. For each Campaign, the user can create the Prospects list from the Contacts or Leads or outside file sources. The projects module helps the user manage tasks related to specific projects. Tasks can be assigned to different users and assigned estimated hours of effort and, as tasks are in progress and completed, users can update the information for each task. The RSS module permits the user to view the latest headlines provided by your favorite Really Simple Syndication (RSS) feeds. These feeds provide news or other web content that is distributed or syndicated by web sites which publish their content in this manner. The system has hundreds of RSS feeds available as supplied, and others may easily be added.
The forecasts module shows the user his/her committed forecast history and current opportunities. For managers, the user can view your team's rolled up forecasts. The reports module shows the user a list of saved custom reports not yet published, as well as a list of Published Reports. Saved reports may be viewed, deleted or published, and published reports may be viewed, deleted or un-published. Clicking on the name of a report zooms to the detailed definition of the report criteria (fields to be displayed, and filter settings) for that report, permitting the user to alter the criteria, and re-submit the report query. Finally, the dashboard module displays a graphical dashboard of the user's Opportunity Pipeline by Sales Stage, Opportunities by Lead Source by Outcome, Pipeline by Month by Outcome, and Opportunities by Lead Source.
Returning to
Once the data is retrieved from the SugarBean object 108, the module uses a template mechanism 118 and a theme 116 to produce the requested presentation for the user. The template mechanism reformats the data from the database 110 into a particular form while the theme adjusts the user interface according to the user's preferences. If, for instance, the user requests an HTML presentation of the detail view of the contact module for a specified contact, here is the flow of what happens. The user hits the entry point named index.php. The entry point then loads the controller. The controller handles most of the logic for the main application. The controller loads the current user, verifies authentication and session information, loads the language for the user and produces some of the user interface shell. The controller then calls the contact module and request the detail view for the specified contact. The contact module retrieves the SugarBean for the requested contact. The SugarBean verifies row level security at this point. If the record is not retrieved successfully, then the process aborts and the user is not allowed to view the data for the record. If the retrieve process succeeds then it uses the XTemplate mechanism and the code for the current user's theme to create the user interface for presentation. The resulting user interface is sent back to the client that requested it.
The schema 150 shown in
The sessions table 154 may be used to track all sessions of the CRM system or any other business application. The table is used to store and/or find all currently logged in users and display that information in the application. The table may also contain information about the number of round trips to the database performed and files included during a particular server round trip. The table may also track where the session came from (the client IP address), when it started, and when it ended. All of this information can be made available in a display to the authorized user. This information will be very useful to track issues back to their source, track possible intrusions, and validate system usage.
The queries table 156 may be used to track all queries submitted to the database. The table can log all queries, or just the queries that meet a “slow query log” criteria. Slow queries are typically defined as queries that either use too many resources, do not leverage the database efficiently, return too much data, or take more time than they should. The criteria for each of these measurements may be configurable (how much data is too much, how long is too long, . . . ). The “slow query log” is a better medium for tracking slow queries than the log file and it collects all of the data in the database where it is easy to perform an analysis on it. The queries table 156 may also track the number of times a query was executed (count), the total milliseconds that all occurrences have taken (ms total), and the average time that the query has taken (ms avg). The information within this table may be retrievable from within the application in an enterprise performance console. The information in this table will be most useful if the queries are prepared statements. Prepared statements are queries that have all of the constant values removed from them and passed to the database separately which means that the analysis performed for the database to determine how to effectively perform the query only needs to be done once. Prepared statements also mean that the queries executed will be more likely to match. If you have 10,000 queries retrieving 9,000 distinct contacts, with prepared statements there will be 10,000 calls to 1 prepared statement. Without prepared statements there will be 9,000 distinct queries. When analyzing the database usage, it is much easier to see how much time is spent retrieving contacts when one consolidated query is listed.
The tracker_perf table 158 may track performance related data. For most installations of the system, it is an optional action and, if enabled and coded properly, it tracks the server side statistics that show up on the screen, and the client side performance. The server side data is already captured by the controller and is easy to store. The client side information may be captured using javascript. For example, a simple timer on the client side (or just a callback to the server at the bottom of the page) may be implemented and the table can track how quickly the rendering is completing on the client side. The client side performance information, combined with the other information that is being tracked will allow the system or an authorized user to quickly determine if there is a pattern of poor client side performance.
The tracker table 152 tracks user ID, the module being accessed and the record being accessed as well as a session id that created the entry and if the item should be user visible as a bread crumb in the application. This information allows the authorized user or the system to track AJAX calls, login attempts, logins, saves, deletes, . . . without cluttering the user's experience.
Since the tracker module is tracking round trips to/from the database, the data stored by the tracker is not deleted on every round trip, but may be periodically cleaned during normal system maintenance. The minimum cleanup ability may be to remove all tracker entries older than a specified date which can be done by finding the last tracker ID that is old enough to be deleted and then delete all the IDs on or before that last tracked ID.
The data captured by the tracking module may be used to calculate and/or display module specific usage information in heartbeats, more accurate usage information in heartbeats (number of sessions, number of round trips, . . . ), query Performance reporting and/or tuning, performance monitoring and reporting (show graphs of system performance over time, report issues via email if the server is running slow, . . . ), show usage information to managers and system administrators, track adoption rates and/or add “who's online” into the application. One example report would be to show the average amount of deals closed per operation performed in the CRM system. If a correlation is present, this is a clear incentive to encourage usage of the CRM system. Another report can show module usage by representative by day. This shows how well the users are adopting the system.
The system may support multiple looks, which may include but are not limited to, colors, multiple color palates, black and white patterns, colored lines, graphical images (stretched, tiled, or centered), words, or any other means to distinguish between items or show one item. The system may support showing more information about sections of the graph when the user hovers their mouse over that section. For example, as shown in
In addition to the features that the graph has for a single layer of data, the graph may contain multiple layers of data. If the user clicks on the top item from
The system may also contain a legend of where the user has been to allow them to quickly navigate back through to higher levels of the graph. From
At each level, the user may have multiple chart options available. In one embodiment, going back to original graph as shown in
This graphing system may allow for unlimited levels of drilling down. While the example described only went down 2 levels, there is no restriction on the number of levels supported.
When specifying what actions are allowed for a specific field, the system may allow for a list of possible permissions as shown in
The definition of record ownership may be based on a property of a record (i.e. assigned user), the property of a related record (i.e. assigned user on the Account a Contact is related to), management hierarchy (i.e. you own the record if someone that reports to you is listed as the owner), group membership (i.e. you a member of the Sales East Group), or any other ownership mechanism that may be derived.
The access control lists of the system may be used for various purposes. For example, the access control lists may be used to control what fields a user has the ability to modify, to hide sales commitments from other users or to allow only an Auditing or Finance group to be able to see and edit credit information without having that information shared with other departments.
Additionally, the system may also support having fields or groups of fields change permissions based on business rules, object state, or other factors. For example, once an opportunity is closed, for instance, only Sales Operations and finance can edit portions of the record and this can be implemented as a field level restriction that is tied to the sales stage of the opportunity.
It is a common business reality that CRM systems are very heavily customized with the CRM systems typically adapted to the practices and policies of a particular business. In more detail, the CRM system may be modified to match the particular data that an organization wants or needs to collect. The CRM system may also be modified to expand into new areas. For example, Sugar Enterprise 5.0 as a platform is often heavily customized to branch out into new areas. A Module builder unit (that is part of the modules 106 shown in
The module builder may be used to create a new module based on pre-defined business entities like Accounts, Contacts, etc. with zero or minimum coding effort, to create modules which appear as sub-panels on other modules, to create a new module from real life business objects like people, processes and transactions, create a new module based on above use cases for an externally accessible portal, such as for example Sugar Portal, to export the modules that are created, to load the new modules in the application with ease, to publish a created module to an online repository that may be a generally accessible marketplace web site for acquiring application modules, such as for example SugarExchange, with ease and/or to have full support of the Sugar platform and related security mechanisms (Teams, Roles, ACLs and Field Level ACLs).
There are frequently many fields that are common among multiple object types. The module builder may include the ability to create new objects or base new objects on either existing objects or on logical portions of objects.
The module builder also may contain the ability to create packages of one or more business modules and these packages are an easier mechanism to transfer, deploy, and share multiple modules.
The module builder system has multiple user interface sections that may also allow for those sections to be collapsed by hitting a button. These collapsed sections may be later shown by hitting another button or hovering over a region of the screen with the mouse.
Adding a new module to a package puts you on the module creation screen. This screen lets you fill in information about the module and pick which common types the module will support.
Additional screens may be available to show the fields of an object as shown in
There may also be a screen that shows the relationships in a module such as that shown in the embodiment shown in
The ability to support multiple layouts and manage layouts may be a portion of the system.
1. save—Save any changes the user had made to the module
2. duplicate—Create a copy of the module
3. publish—Make the module available into this installation
4. delete—delete the package
5. export—export the package for backup, transfer, sharing, deployment on another installation, . . .
6. export and publish—export the package and publish it
An additional feature of package functionality may be an ability to provide prefixes to maintain uniqueness of the module namespaces. The concept of prefixing supports development and deployments of modules in a collaborative and parallel development environment and may further include the underlying data structures, folders, tables, schemas, directories, objects, and paths. Prefixing also enables multiple independent developers to create modules with similar names and for their customers to deploy those modules without worrying about naming conflicts. This prevents commonly used names from conflicting and making extensions incompatible with each other.
The prefixing feature is relevant both within a single application context and in a wider multiple application environment. In a distributed development environment this feature may be expanded to include a global unified registration service to accommodate for managing prefix assignment to different developers or development groups. With respect to the registration service, the service itself may either allow the developers to request a prefix or generate a unique prefix automatically. The service may have the ability to guarantee the uniqueness of the underlying prefixes to avoid all namespace collisions.
The ability to treat multiple modules as a package helps developers build solutions to meet business needs. Related modules can be treated as a single unit, transferred together, and also upgraded together. Keeping applications consistent is much easier if tightly couple portions are able to be handled as a unit.
The system may also include shared folders that allow users of the system to cooperate more effectively. A shared folder is a location where items can be linked. Shared folders may be able to contain one item type or multiple item types. An example of a shared folder that contains multiple item types is a task list that contains cases, calls, and tasks in a support environment. The shared folders may also support ordering of the items that allows the folder to function as a work queue.
Shared folders may also support distribution of work among individuals. This distribution could be pull based where a user requests one or a multiple of items be assigned to him/her and then proceeds to work on those items. The distribution may also be push based where new items are assigned to the shared folder and are pushed out to users or other folders either immediately, or when some restriction is met. One example is a shared folder structure for a global support organization. Requests waiting for a response are sitting in the highest level shared folder. Each geographically distributed location has a shared folder for its work queue. During work hours, the shared folder for a location is kept open and the highest level folder is passing work items into the queue. When they shut down for the night, they close their queue and work items stop routing to them. This example shows the powerful nature of shared folders.
A shared folder may also be used to track the state in a business process, trigger workflow, change visibility, and/or change ownership. The shared folders may also be used as collaborative workspaces wherein different users can log into a Shared Folder workspace and interactively work on documents.
While the foregoing has been with reference to a particular embodiment of the invention, it will be appreciated by those skilled in the art that changes in this embodiment may be made without departing from the principles and spirit of the invention, the scope of which is defined by the appended claims.
This application claims the benefit under 35 USC 119(e) to U.S. Provisional Patent Application Ser. No. 60/968,484 filed on Aug. 28, 2007 and entitled “CRM System and Method Having Drilldowns, ACLs, Shared Folders, a Tracker and a Module Builder” (Attorney Docket No. 356649-991220) and U.S. Provisional Patent Application Ser. No. 60/977,527 filed on Oct. 4, 2007 and entitled “CRM System and Method Having Drilldowns, ACLs, Shared Folders, a Tracker and a Module Builder” (Attorney Docket No. 356649-991221), both of which are herein incorporated by reference in their entirely.
Number | Date | Country | |
---|---|---|---|
60968484 | Aug 2007 | US | |
60977527 | Oct 2007 | US |