Author: Nicolay Petrov
From the first glance a new task seemed plainly simple to me. I had to develop a data base on hunting dog breeding according to the given technical specification by taking an existing base as a foundation and by upgrading it with new functionality. I also had to fix the bugs in the previous version and set the generation and printing functions of the documents.
The export process itself was not so difficult, since the tables were saved as .csv files. All I had to do was adding new commands to create relevant correlations in our system, because it was capable of transferring these types of files. As a result, I got structured data which was ready to import to absolutely any system which I would like to develop. Yet, this is the time when I had to take a pause.
The main problem was the format of data stored in the data base was different from the one listed in technical specification and, what’s even worse, there was no chance to convert them to the right format as part of the required information was missing. Furthermore, the records from the data base were stored in two format types, because they had been transferred from another data base before. These two format types had such a simple structure that consisted very small amount of information and that made the records impossible to use for developing an advanced functionality. At the same time, we could not delete the old files either.
As a result, I had no choice but to make a triple dubbing of the systems. This way, records of the same type (e.g. dog diplomas) which were incompatible with each other were sorted out separately. Once I came up with the relevant structures I’ll need for triple dubbing, I used our content transfer system for data import. More than one hundred thousand records of dogs, thousands of expert records, documents, certificates and other files were imported without any problems. Errors that have been inevitably occurring during the building correspondences process between the old and the new data structure were easily detected and fixed during the test import.
However, importing was not enough. The data base had to process the records in accordance with different functionality requirements for each data type. Some functionality required just two types combined, whereas some required only the newest data with the complete structure. This was the case where Drupal showed its weakness to me. A convenient and visual Drupal’s Views system became very inconvenient when working with the records of the same type that was stored in different structures. By the end of the day, I had to develop my own data processing systems.
Unfortunately, my work was not acceptable for the customer since some information about dog diplomas was stored fully, some was incomplete (consisting just the basic information) stored in the old file formats and other international diplomas were totally incompatible with Russian formats. Furthermore, the dogs’ IDs could be entered in an unpredictable format – numeric VPKOS format, certificate of origin, FCI / RKF pedigree number or hunting dog certificate number. .
All this as well as many other aspects had to be taken into account and addressed in the data base.
Evaluation rules for hunting dogs corresponded to breed groups, however, each breed group had some exceptions that didn’t belong anywhere. Even Machiavelli would have got lost in these evaluation rules, as they contain more exceptions than standards. Since Drupal was absolutely helpless, the required systems were developed manually from scratch.
Another challenge of this task was ensuring uniqueness of the data. All documents had to be stored safely without possibility of “losing” or deleting something. Considering that the data base users enter information manually, the human factor played its role and some documents were missing or misplaced. Therefore, it was highly important to keep the records history in order to have a possibility of getting back to any file in the future.
For instance, if at least one of the following documents is entered - the "Act of mating", the "Act of examination of the litter" or the "Certificate of the origin of the dog" – the rest of the documents could “track” each other and get attached to the dog with the corresponding number. In case some document types were missing, the links for attaching them would be automatically created and displayed. This allowed users see the actual status of the records of any dog, whereas the system took care of the technical aspect of this by creating the space, pages and links that were intuitively easy to use. Furthermore, if a document with the same number existed, no duplicates would be created.
Afterwards, the last step was establishing printing function in accordance with the relevant templates. This was also quite a tedious task, but luckily without any technical challenges.