Migration Vtiger 5.04 vers Vtiger 5.1

Chez EticWeb nous utilisons

Vtiger depuis la version 5.02 notre base de donné à donc subit 3 migrations (vtiger 5.02 vers vtiger 5.03 puis vtiger 5.02-03 vers vtiger 5.04 et enfin vtiger 5.02-03-04 vers vtiger 5.1), je ne reviendrais pas sur les difficultés rencontrées lors de chaque migration (un article sur la migration de vtiger 5.02 vers vtiger 5.03 est consultable ici) mais toujours est il que celle pour passer en version 5.1 m’a donné quelques cheveux gris supplémentaires.

La méthode de migration utilisé à consisté à dupliquer la DB depuis phpMyAdmin et d’utiliser cette copie avec l’outil de migration intégré dans l’installation de Vtiger 5.1.

Tout semblait s’être déroulé « normalement » mais une fois connecté j’ai hélas constaté qu’aucune vue « listing » ne fonctionnait par contre la recherche dans les devis facture … fonctionnait tout comme la consultation et l’édition de ces différents éléments.

vtiger-page-blanche
En cherchant sur les forums Français et Anglais je n’ai trouvé aucune personne relatant les mêmes problèmes et encore moins de solutions toute faite.

J’ai par contre trouvé une information pertinante sur le Trac de Vtiger qui précisait que désormais les modules utilisaient des vues personnalisable pour chaque utilisateur.

Puis en activant le mode débug et en modifiant le niveau des log (fichier log4php.properties) pour tracer toutes les requètes SQL (remplacer SQLTIME=FATAL par SQLTIME=DEBUG) j’ai alors constaté que les scripts s’arrêtaient après l’exécution de la requête « select default_cvid from vtiger_user_module_preferences where userid = ? and tabid = ? »

Je retourne dans mon phpMyAdmin et au surprise la table en question n’existait pas.
Après avoir créer cette table toutes les vues de listing fonctionne désormais correctement.

[sourcecode language= »sql »]

— Structure de la table vtiger_user_module_preferences

CREATE TABLE vtiger_user_module_preferences ( userid int(19) NOT NULL, tabid int(19) NOT NULL, default_cvid int(19) NOT NULL, PRIMARY KEY (userid,tabid), KEY fk_2_vtiger_user_module_preferences (tabid)) ENGINE=InnoDB DEFAULT CHARSET=utf8;


— Contraintes pour la table vtiger_user_module_preferences

ALTER TABLE vtiger_user_module_preferences

ADD CONSTRAINT fk_2_vtiger_user_module_preferences FOREIGN KEY(tabid) REFERENCES vtiger_tab (tabid) ON DELETE CASCADE ON UPDATECASCADE;
[/sourcecode]

Mais après quelques utilisations plus avancées j’ai hélas constaté que les produits associés aux devis,factures, bon de commande, etc n’étais plus affichés dans les détail de ces éléments. J’ai donc de nouveau trouvé des tables manquantes et voici le script SQL à importer pour que tout refonctionne normalement.

[sourcecode language= »sql »]

— Structure de la table vtiger_attachmentsfolder_seq

CREATE TABLE vtiger_attachmentsfolder_seq (
id int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


— Contenu de la table vtiger_attachmentsfolder_seq

INSERT INTO vtiger_attachmentsfolder_seq VALUES (1);

— ——————————————————–


— Structure de la table vtiger_notescf

CREATE TABLE vtiger_notescf (
notesid int(19) NOT NULL default ‘0’,
PRIMARY KEY  (notesid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


— Contenu de la table vtiger_notescf

— ——————————————————–


— Structure de la table vtiger_quickview

CREATE TABLE vtiger_quickview (
fieldid int(19) NOT NULL,
related_fieldid int(19) NOT NULL,
sequence int(19) NOT NULL,
currentview int(19) NOT NULL,
KEY fk_1_vtiger_quickview (fieldid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


— Contenu de la table vtiger_quickview

— ——————————————————–


— Structure de la table vtiger_service

CREATE TABLE vtiger_service (
serviceid int(11) NOT NULL,
service_no varchar(100) NOT NULL,
servicename varchar(50) NOT NULL,
servicecategory varchar(200) default NULL,
qty_per_unit decimal(11,2) default ‘0.00’,
unit_price decimal(25,2) default NULL,
sales_start_date date default NULL,
sales_end_date date default NULL,
start_date date default NULL,
expiry_date date default NULL,
discontinued int(1) NOT NULL default ‘0’,
service_usageunit varchar(200) default NULL,
handler int(11) default NULL,
website varchar(100) default NULL,
taxclass varchar(200) default NULL,
currency_id int(19) NOT NULL default ‘1’,
commissionrate decimal(7,3) default NULL,
PRIMARY KEY  (serviceid)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


— Contenu de la table vtiger_service

— ——————————————————–


— Structure de la table vtiger_version_seq

CREATE TABLE vtiger_version_seq (
id int(11) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;


— Contenu de la table vtiger_version_seq

INSERT INTO vtiger_version_seq VALUES (1);


— Contraintes pour les tables exportées


— Contraintes pour la table vtiger_quickview

ALTER TABLE vtiger_quickview
ADD CONSTRAINT fk_1_vtiger_quickview FOREIGN KEY (fieldid) REFERENCES vtiger_field (fieldid) ON DELETE CASCADE;


— Contraintes pour la table vtiger_service

ALTER TABLE vtiger_service
ADD CONSTRAINT fk_1_vtiger_service FOREIGN KEY (serviceid) REFERENCES vtiger_crmentity (crmid) ON DELETE CASCADE;
[/sourcecode]