8. A computer system for searching for templates utilized for managing data in a computer application program, comprising: a memory for storing executable program code; and a processor, functionally coupled to the memory, the processor being responsive to computer-executable instructions contained in the program code and operative: receive a data query in the computer application program for at least one template from among a plurality of templates to utilize in managing the data, wherein each of the plurality of templates is indexed as a document to facilitate searching, wherein the document comprises a model and a plurality of subdocuments, the model describing the plurality of subdocuments, the model comprising a data tracking application program including a data schema, the data schema comprising information types that the data tracking application program is utilized to keep track of; in response to receiving the data query, search the plurality of indexed templates for at least one template to satisfy the data query; display at least one template suggestion as a search result, wherein the search result includes the at least one template for satisfying the data query; and receive another data query to extend functionality of the at least one selected template while the at least one selected template is being used, wherein the another data query to extend functionality of the at least one selected template while the at least one selected template is being used comprises a request to search for a complementary template to the selected at least one template, the complementary template comprising at least one of the presence and the absence of at least one of a plurality of elements in the model, the plurality of elements comprising the plurality of subdocuments, the plurality of subdocuments comprising data structures, logic modules, and forms.
9. The system of claim 8 , wherein the processor is further operative to receive a selection of at least one template based on the at least one template suggestion, for managing the data in the computer application program.