News:

You may pay someone to create your store, or you visit our seminar and become a professional yourself with the silver certification

Main Menu

Migration - Keep old product_id - configuration option missing?

Started by AH, January 19, 2014, 16:05:23 PM

Previous topic - Next topic

AH

I want to keep the old product_id on migration as this ties in with a number of backend processes

In migrator.php  there is a test for this configuration

Line 75
$this->_keepOldProductIds = VmConfig::get('keepOldProductIds',FALSE);

And around line 1238

It is checked :-

if($this->_keepOldProductIds){
$product['virtuemart_product_id'] = $product['product_id'];
}


But I cannot see where the config option is in the migration tab.

(Of course I can modify the php code - but is the option missing or was never coded?)
Regards
A

Joomla 4.4.5
php 8.1

AH

When I modify the migration code to (what I thought would keep the old product_id)

//if($this->_keepOldProductIds){
$product['virtuemart_product_id'] = $product['product_id'];
//}


All product tables EXCEPT the virtuemart_product table are created correctly with correct data

virtuemart_product is empty

Getting this error

storeMigrationProgress failed to update query UPDATE `#__virtuemart_migration_oldtonew_ids` SET `products`="a:1000:{i:17;s:2:"17";i:18;s:2:"18";i:19;s:2:"19";i:20;s:2:"20";i:21;s:2:"21";i:22;s:2:"22";i:23;s:2:"23";i:24;s:2:"24";i:25;s:2:"25";i:26;s:2:"26";i:27;s:2:"27";i:28;s:2:"28";i:29;s:2:"29";i:30;s:2:"30";i:31;s:2:"31";i:32;s:2:"32";i:33;s:2:"33";i:34;s:2:"34";i:35;s:2:"35";i:36;s:2:"36";i:37;s:2:"37";i:38;s:2:"38";i:39;s:2:"39";i:40;s:2:"40";i:41;s:2:"41";i:42;s:2:"42";i:43;s:2:"43";i:44;s:2:"44";i:45;s:2:"45";i:46;s:2:"46";i:47;s:2:"47";i:48;s:2:"48";i:49;s:2:"49";i:50;s:2:"50";i:51;s:2:"51";i:52;s:2:"52";i:53;s:2:"53";i:54;s:2:"54";i:55;s:2:"55";i:56;s:2:"56";i:57;s:2:"57";i:58;s:2:"58";i:59;s:2:"59";i:60;s:2:"60";i:61;s:2:"61";i:62;s:2:"62";i:63;s:2:"63";i:64;s:2:"64";i:65;s:2:"65";i:66;s:2:"66";i:67;s:2:"67";i:68;s:2:"68";i:69;s:2:"69";i:70;s:2:"70";i:71;s:2:"71";i:72;s:2:"72";i:73;s:2:"73";i:74;s:2:"74";i:75;s:2:"75";i:76;s:2:"76";i:77;s:2:"77";i:78;s:2:"78";i:79;s:2:"79";i:80;s:2:"80";i:81;s:2:"81";i:82;s:2:"82";i:83;s:2:"83";i:84;s:2:"84";i:85;s:2:"85";i:86;s:2:"86";i:87;s:2:"87";i:88;s:2:"88";i:89;s:2:"89";i:90;s:2:"90";i:91;s:2:"91";i:92;s:2:"92";i:93;s:2:"93";i:94;s:2:"94";i:95;s:2:"95";i:96;s:2:"96";i:97;s:2:"97";i:98;s:2:"98";i:99;s:2:"99";i:100;s:3:"100";i:101;s:3:"101";i:102;s:3:"102";i:103;s:3:"103";i:104;s:3:"104";i:105;s:3:"105";i:106;s:3:"106";i:107;s:3:"107";i:108;s:3:"108";i:109;s:3:"109";i:110;s:3:"110";i:111;s:3:"111";i:112;s:3:"112";i:113;s:3:"113";i:114;s:3:"114";i:115;s:3:"115";i:116;s:3:"116";i:117;s:3:"117";i:118;s:3:"118";i:119;s:3:"119";i:120;s:3:"120";i:121;s:3:"121";i:122;s:3:"122";i:123;s:3:"123";i:124;s:3:"124";i:125;s:3:"125";i:126;s:3:"126";i:127;s:3:"127";i:128;s:3:"128";i:129;s:3:"129";i:130;s:3:"130";i:131;s:3:"131";i:132;s:3:"132";i:133;s:3:"133";i:134;s:3:"134";i:135;s:3:"135";i:136;s:3:"136";i:137;s:3:"137";i:138;s:3:"138";i:139;s:3:"139";i:140;s:3:"140";i:141;s:3:"141";i:143;s:3:"143";i:144;s:3:"144";i:145;s:3:"145";i:146;s:3:"146";i:147;s:3:"147";i:148;s:3:"148";i:149;s:3:"149";i:150;s:3:"150";i:151;s:3:"151";i:152;s:3:"152";i:153;s:3:"153";i:154;s:3:"154";i:155;s:3:"155";i:156;s:3:"156";i:157;s:3:"157";i:158;s:3:"158";i:159;s:3:"159";i:160;s:3:"160";i:161;s:3:"161";i:162;s:3:"162";i:163;s:3:"163";i:164;s:3:"164";i:165;s:3:"165";i:166;s:3:"166";i:167;s:3:"167";i:168;s:3:"168";i:169;s:3:"169";i:170;s:3:"170";i:171;s:3:"171";i:172;s:3:"172";i:173;s:3:"173";i:174;s:3:"174";i:175;s:3:"175";i:176;s:3:"176";i:177;s:3:"177";i:178;s:3:"178";i:179;s:3:"179";i:180;s:3:"180";i:181;s:3:"181";i:182;s:3:"182";i:183;s:3:"183";i:184;s:3:"184";i:186;s:3:"186";i:187;s:3:"187";i:188;s:3:"188";i:189;s:3:"189";i:191;s:3:"191";i:192;s:3:"192";i:193;s:3:"193";i:194;s:3:"194";i:196;s:3:"196";i:197;s:3:"197";i:198;s:3:"198";i:199;s:3:"199";i:200;s:3:"200";i:201;s:3:"201";i:202;s:3:"202";i:203;s:3:"203";i:204;s:3:"204";i:205;s:3:"205";i:206;s:3:"206";i:207;s:3:"207";i:208;s:3:"208";i:209;s:3:"209";i:210;s:3:"210";i:211;s:3:"211";i:212;s:3:"212";i:213;s:3:"213";i:214;s:3:"214";i:215;s:3:"215";i:216;s:3:"216";i:217;s:3:"217";i:218;s:3:"218";i:219;s:3:"219";i:220;s:3:"220";i:221;s:3:"221";i:222;s:3:"222";i:223;s:3:"223";i:224;s:3:"224";i:225;s:3:"225";i:226;s:3:"226";i:227;s:3:"227";i:228;s:3:"228";i:229;s:3:"229";i:230;s:3:"230";i:231;s:3:"231";i:232;s:3:"232";i:233;s:3:"233";i:234;s:3:"234";i:235;s:3:"235";i:236;s:3:"236";i:237;s:3:"237";i:238;s:3:"238";i:239;s:3:"239";i:240;s:3:"240";i:241;s:3:"241";i:242;s:3:"242";i:243;s:3:"243";i:244;s:3:"244";i:245;s:3:"245";i:246;s:3:"246";i:247;s:3:"247";i:248;s:3:"248";i:249;s:3:"249";i:250;s:3:"250";i:251;s:3:"251";i:252;s:3:"252";i:253;s:3:"253";i:254;s:3:"254";i:255;s:3:"255";i:256;s:3:"256";i:257;s:3:"257";i:258;s:3:"258";i:259;s:3:"259";i:260;s:3:"260";i:261;s:3:"261";i:262;s:3:"262";i:263;s:3:"263";i:264;s:3:"264";i:265;s:3:"265";i:266;s:3:"266";i:267;s:3:"267";i:268;s:3:"268";i:269;s:3:"269";i:270;s:3:"270";i:271;s:3:"271";i:272;s:3:"272";i:273;s:3:"273";i:274;s:3:"274";i:275;s:3:"275";i:276;s:3:"276";i:277;s:3:"277";i:278;s:3:"278";i:279;s:3:"279";i:280;s:3:"280";i:281;s:3:"281";i:282;s:3:"282";i:283;s:3:"283";i:284;s:3:"284";i:285;s:3:"285";i:286;s:3:"286";i:287;s:3:"287";i:288;s:3:"288";i:289;s:3:"289";i:290;s:3:"290";i:291;s:3:"291";i:292;s:3:"292";i:293;s:3:"293";i:294;s:3:"294";i:295;s:3:"295";i:296;s:3:"296";i:297;s:3:"297";i:298;s:3:"298";i:299;s:3:"299";i:300;s:3:"300";i:301;s:3:"301";i:302;s:3:"302";i:303;s:3:"303";i:304;s:3:"304";i:305;s:3:"305";i:306;s:3:"306";i:307;s:3:"307";i:308;s:3:"308";i:309;s:3:"309";i:310;s:3:"310";i:311;s:3:"311";i:312;s:3:"312";i:313;s:3:"313";i:314;s:3:"314";i:315;s:3:"315";i:316;s:3:"316";i:317;s:3:"317";i:318;s:3:"318";i:319;s:3:"319";i:320;s:3:"320";i:321;s:3:"321";i:322;s:3:"322";i:323;s:3:"323";i:324;s:3:"324";i:325;s:3:"325";i:326;s:3:"326";i:327;s:3:"327";i:328;s:3:"328";i:329;s:3:"329";i:330;s:3:"330";i:331;s:3:"331";i:332;s:3:"332";i:333;s:3:"333";i:334;s:3:"334";i:337;s:3:"337";i:338;s:3:"338";i:339;s:3:"339";i:340;s:3:"340";i:341;s:3:"341";i:342;s:3:"342";i:343;s:3:"343";i:344;s:3:"344";i:345;s:3:"345";i:346;s:3:"346";i:347;s:3:"347";i:348;s:3:"348";i:349;s:3:"349";i:350;s:3:"350";i:351;s:3:"351";i:352;s:3:"352";i:353;s:3:"353";i:354;s:3:"354";i:355;s:3:"355";i:356;s:3:"356";i:357;s:3:"357";i:358;s:3:"358";i:359;s:3:"359";i:360;s:3:"360";i:361;s:3:"361";i:362;s:3:"362";i:363;s:3:"363";i:364;s:3:"364";i:365;s:3:"365";i:366;s:3:"366";i:367;s:3:"367";i:368;s:3:"368";i:369;s:3:"369";i:370;s:3:"370";i:371;s:3:"371";i:372;s:3:"372";i:373;s:3:"373";i:374;s:3:"374";i:375;s:3:"375";i:376;s:3:"376";i:377;s:3:"377";i:378;s:3:"378";i:379;s:3:"379";i:380;s:3:"380";i:381;s:3:"381";i:382;s:3:"382";i:383;s:3:"383";i:384;s:3:"384";i:385;s:3:"385";i:386;s:3:"386";i:387;s:3:"387";i:388;s:3:"388";i:389;s:3:"389";i:390;s:3:"390";i:391;s:3:"391";i:392;s:3:"392";i:393;s:3:"393";i:394;s:3:"394";i:395;s:3:"395";i:396;s:3:"396";i:397;s:3:"397";i:398;s:3:"398";i:399;s:3:"399";i:400;s:3:"400";i:401;s:3:"401";i:402;s:3:"402";i:403;s:3:"403";i:404;s:3:"404";i:405;s:3:"405";i:406;s:3:"406";i:407;s:3:"407";i:408;s:3:"408";i:409;s:3:"409";i:410;s:3:"410";i:411;s:3:"411";i:412;s:3:"412";i:413;s:3:"413";i:414;s:3:"414";i:415;s:3:"415";i:416;s:3:"416";i:417;s:3:"417";i:418;s:3:"418";i:419;s:3:"419";i:420;s:3:"420";i:421;s:3:"421";i:422;s:3:"422";i:423;s:3:"423";i:424;s:3:"424";i:425;s:3:"425";i:426;s:3:"426";i:427;s:3:"427";i:428;s:3:"428";i:429;s:3:"429";i:430;s:3:"430";i:431;s:3:"431";i:432;s:3:"432";i:433;s:3:"433";i:434;s:3:"434";i:435;s:3:"435";i:436;s:3:"436";i:437;s:3:"437";i:438;s:3:"438";i:439;s:3:"439";i:440;s:3:"440";i:441;s:3:"441";i:442;s:3:"442";i:443;s:3:"443";i:444;s:3:"444";i:445;s:3:"445";i:446;s:3:"446";i:447;s:3:"447";i:448;s:3:"448";i:449;s:3:"449";i:450;s:3:"450";i:451;s:3:"451";i:452;s:3:"452";i:453;s:3:"453";i:454;s:3:"454";i:455;s:3:"455";i:456;s:3:"456";i:457;s:3:"457";i:458;s:3:"458";i:459;s:3:"459";i:460;s:3:"460";i:461;s:3:"461";i:462;s:3:"462";i:463;s:3:"463";i:464;s:3:"464";i:465;s:3:"465";i:466;s:3:"466";i:467;s:3:"467";i:468;s:3:"468";i:469;s:3:"469";i:470;s:3:"470";i:471;s:3:"471";i:472;s:3:"472";i:473;s:3:"473";i:474;s:3:"474";i:475;s:3:"475";i:476;s:3:"476";i:477;s:3:"477";i:478;s:3:"478";i:479;s:3:"479";i:480;s:3:"480";i:481;s:3:"481";i:482;s:3:"482";i:483;s:3:"483";i:484;s:3:"484";i:485;s:3:"485";i:486;s:3:"486";i:487;s:3:"487";i:488;s:3:"488";i:489;s:3:"489";i:490;s:3:"490";i:491;s:3:"491";i:492;s:3:"492";i:493;s:3:"493";i:494;s:3:"494";i:495;s:3:"495";i:496;s:3:"496";i:497;s:3:"497";i:498;s:3:"498";i:499;s:3:"499";i:500;s:3:"500";i:501;s:3:"501";i:502;s:3:"502";i:503;s:3:"503";i:504;s:3:"504";i:505;s:3:"505";i:506;s:3:"506";i:507;s:3:"507";i:509;s:3:"509";i:510;s:3:"510";i:511;s:3:"511";i:512;s:3:"512";i:513;s:3:"513";i:514;s:3:"514";i:515;s:3:"515";i:516;s:3:"516";i:517;s:3:"517";i:519;s:3:"519";i:520;s:3:"520";i:521;s:3:"521";i:522;s:3:"522";i:523;s:3:"523";i:524;s:3:"524";i:525;s:3:"525";i:526;s:3:"526";i:527;s:3:"527";i:528;s:3:"528";i:529;s:3:"529";i:530;s:3:"530";i:531;s:3:"531";i:532;s:3:"532";i:533;s:3:"533";i:534;s:3:"534";i:535;s:3:"535";i:536;s:3:"536";i:537;s:3:"537";i:538;s:3:"538";i:539;s:3:"539";i:540;s:3:"540";i:541;s:3:"541";i:542;s:3:"542";i:543;s:3:"543";i:544;s:3:"544";i:545;s:3:"545";i:546;s:3:"546";i:551;s:3:"551";i:552;s:3:"552";i:553;s:3:"553";i:554;s:3:"554";i:555;s:3:"555";i:556;s:3:"556";i:557;s:3:"557";i:558;s:3:"558";i:559;s:3:"559";i:560;s:3:"560";i:561;s:3:"561";i:562;s:3:"562";i:563;s:3:"563";i:564;s:3:"564";i:565;s:3:"565";i:566;s:3:"566";i:567;s:3:"567";i:568;s:3:"568";i:569;s:3:"569";i:570;s:3:"570";i:571;s:3:"571";i:572;s:3:"572";i:573;s:3:"573";i:574;s:3:"574";i:575;s:3:"575";i:576;s:3:"576";i:577;s:3:"577";i:578;s:3:"578";i:579;s:3:"579";i:580;s:3:"580";i:581;s:3:"581";i:582;s:3:"582";i:583;s:3:"583";i:584;s:3:"584";i:585;s:3:"585";i:586;s:3:"586";i:587;s:3:"587";i:588;s:3:"588";i:589;s:3:"589";i:590;s:3:"590";i:591;s:3:"591";i:592;s:3:"592";i:593;s:3:"593";i:594;s:3:"594";i:595;s:3:"595";i:596;s:3:"596";i:597;s:3:"597";i:598;s:3:"598";i:599;s:3:"599";i:600;s:3:"600";i:601;s:3:"601";i:603;s:3:"603";i:604;s:3:"604";i:605;s:3:"605";i:606;s:3:"606";i:607;s:3:"607";i:608;s:3:"608";i:609;s:3:"609";i:610;s:3:"610";i:611;s:3:"611";i:612;s:3:"612";i:613;s:3:"613";i:614;s:3:"614";i:615;s:3:"615";i:616;s:3:"616";i:617;s:3:"617";i:618;s:3:"618";i:619;s:3:"619";i:621;s:3:"621";i:622;s:3:"622";i:623;s:3:"623";i:624;s:3:"624";i:625;s:3:"625";i:626;s:3:"626";i:627;s:3:"627";i:628;s:3:"628";i:629;s:3:"629";i:630;s:3:"630";i:631;s:3:"631";i:632;s:3:"632";i:634;s:3:"634";i:637;s:3:"637";i:638;s:3:"638";i:639;s:3:"639";i:640;s:3:"640";i:641;s:3:"641";i:644;s:3:"644";i:646;s:3:"646";i:647;s:3:"647";i:648;s:3:"648";i:649;s:3:"649";i:651;s:3:"651";i:654;s:3:"654";i:655;s:3:"655";i:656;s:3:"656";i:657;s:3:"657";i:658;s:3:"658";i:659;s:3:"659";i:660;s:3:"660";i:661;s:3:"661";i:662;s:3:"662";i:663;s:3:"663";i:664;s:3:"664";i:665;s:3:"665";i:666;s:3:"666";i:667;s:3:"667";i:668;s:3:"668";i:669;s:3:"669";i:670;s:3:"670";i:671;s:3:"671";i:672;s:3:"672";i:673;s:3:"673";i:674;s:3:"674";i:675;s:3:"675";i:677;s:3:"677";i:679;s:3:"679";i:680;s:3:"680";i:681;s:3:"681";i:682;s:3:"682";i:687;s:3:"687";i:688;s:3:"688";i:689;s:3:"689";i:690;s:3:"690";i:691;s:3:"691";i:692;s:3:"692";i:693;s:3:"693";i:694;s:3:"694";i:695;s:3:"695";i:696;s:3:"696";i:697;s:3:"697";i:698;s:3:"698";i:709;s:3:"709";i:712;s:3:"712";i:713;s:3:"713";i:714;s:3:"714";i:720;s:3:"720";i:721;s:3:"721";i:722;s:3:"722";i:723;s:3:"723";i:724;s:3:"724";i:725;s:3:"725";i:726;s:3:"726";i:727;s:3:"727";i:728;s:3:"728";i:729;s:3:"729";i:730;s:3:"730";i:731;s:3:"731";i:732;s:3:"732";i:734;s:3:"734";i:735;s:3:"735";i:736;s:3:"736";i:739;s:3:"739";i:740;s:3:"740";i:741;s:3:"741";i:742;s:3:"742";i:743;s:3:"743";i:744;s:3:"744";i:745;s:3:"745";i:746;s:3:"746";i:747;s:3:"747";i:748;s:3:"748";i:749;s:3:"749";i:750;s:3:"750";i:751;s:3:"751";i:752;s:3:"752";i:753;s:3:"753";i:754;s:3:"754";i:755;s:3:"755";i:756;s:3:"756";i:757;s:3:"757";i:758;s:3:"758";i:759;s:3:"759";i:760;s:3:"760";i:761;s:3:"761";i:762;s:3:"762";i:763;s:3:"763";i:764;s:3:"764";i:765;s:3:"765";i:766;s:3:"766";i:767;s:3:"767";i:768;s:3:"768";i:769;s:3:"769";i:770;s:3:"770";i:771;s:3:"771";i:772;s:3:"772";i:773;s:3:"773";i:774;s:3:"774";i:775;s:3:"775";i:776;s:3:"776";i:777;s:3:"777";i:778;s:3:"778";i:779;s:3:"779";i:780;s:3:"780";i:781;s:3:"781";i:782;s:3:"782";i:783;s:3:"783";i:784;s:3:"784";i:785;s:3:"785";i:786;s:3:"786";i:787;s:3:"787";i:788;s:3:"788";i:789;s:3:"789";i:790;s:3:"790";i:791;s:3:"791";i:792;s:3:"792";i:793;s:3:"793";i:794;s:3:"794";i:795;s:3:"795";i:796;s:3:"796";i:797;s:3:"797";i:798;s:3:"798";i:799;s:3:"799";i:800;s:3:"800";i:801;s:3:"801";i:802;s:3:"802";i:803;s:3:"803";i:804;s:3:"804";i:805;s:3:"805";i:806;s:3:"806";i:807;s:3:"807";i:808;s:3:"808";i:809;s:3:"809";i:810;s:3:"810";i:811;s:3:"811";i:812;s:3:"812";i:813;s:3:"813";i:814;s:3:"814";i:815;s:3:"815";i:816;s:3:"816";i:817;s:3:"817";i:818;s:3:"818";i:819;s:3:"819";i:820;s:3:"820";i:821;s:3:"821";i:822;s:3:"822";i:823;s:3:"823";i:824;s:3:"824";i:825;s:3:"825";i:826;s:3:"826";i:827;s:3:"827";i:828;s:3:"828";i:829;s:3:"829";i:830;s:3:"830";i:831;s:3:"831";i:832;s:3:"832";i:833;s:3:"833";i:834;s:3:"834";i:835;s:3:"835";i:836;s:3:"836";i:837;s:3:"837";i:838;s:3:"838";i:839;s:3:"839";i:840;s:3:"840";i:841;s:3:"841";i:842;s:3:"842";i:843;s:3:"843";i:844;s:3:"844";i:845;s:3:"845";i:846;s:3:"846";i:847;s:3:"847";i:848;s:3:"848";i:849;s:3:"849";i:850;s:3:"850";i:851;s:3:"851";i:852;s:3:"852";i:853;s:3:"853";i:854;s:3:"854";i:855;s:3:"855";i:856;s:3:"856";i:857;s:3:"857";i:858;s:3:"858";i:859;s:3:"859";i:860;s:3:"860";i:861;s:3:"861";i:862;s:3:"862";i:863;s:3:"863";i:864;s:3:"864";i:865;s:3:"865";i:866;s:3:"866";i:867;s:3:"867";i:868;s:3:"868";i:869;s:3:"869";i:870;s:3:"870";i:871;s:3:"871";i:872;s:3:"872";i:873;s:3:"873";i:874;s:3:"874";i:875;s:3:"875";i:876;s:3:"876";i:877;s:3:"877";i:878;s:3:"878";i:879;s:3:"879";i:880;s:3:"880";i:881;s:3:"881";i:882;s:3:"882";i:883;s:3:"883";i:884;s:3:"884";i:885;s:3:"885";i:886;s:3:"886";i:887;s:3:"887";i:888;s:3:"888";i:889;s:3:"889";i:890;s:3:"890";i:891;s:3:"891";i:892;s:3:"892";i:893;s:3:"893";i:894;s:3:"894";i:895;s:3:"895";i:896;s:3:"896";i:897;s:3:"897";i:898;s:3:"898";i:899;s:3:"899";i:900;s:3:"900";i:901;s:3:"901";i:902;s:3:"902";i:903;s:3:"903";i:904;s:3:"904";i:905;s:3:"905";i:906;s:3:"906";i:907;s:3:"907";i:908;s:3:"908";i:909;s:3:"909";i:910;s:3:"910";i:911;s:3:"911";i:912;s:3:"912";i:913;s:3:"913";i:914;s:3:"914";i:915;s:3:"915";i:916;s:3:"916";i:917;s:3:"917";i:918;s:3:"918";i:919;s:3:"919";i:920;s:3:"920";i:921;s:3:"921";i:922;s:3:"922";i:923;s:3:"923";i:924;s:3:"924";i:925;s:3:"925";i:926;s:3:"926";i:927;s:3:"927";i:928;s:3:"928";i:929;s:3:"929";i:930;s:3:"930";i:931;s:3:"931";i:932;s:3:"932";i:933;s:3:"933";i:934;s:3:"934";i:935;s:3:"935";i:936;s:3:"936";i:937;s:3:"937";i:938;s:3:"938";i:939;s:3:"939";i:940;s:3:"940";i:941;s:3:"941";i:942;s:3:"942";i:943;s:3:"943";i:944;s:3:"944";i:945;s:3:"945";i:946;s:3:"946";i:947;s:3:"947";i:948;s:3:"948";i:949;s:3:"949";i:950;s:3:"950";i:951;s:3:"951";i:952;s:3:"952";i:955;s:3:"955";i:956;s:3:"956";i:957;s:3:"957";i:958;s:3:"958";i:959;s:3:"959";i:960;s:3:"960";i:961;s:3:"961";i:962;s:3:"962";i:963;s:3:"963";i:964;s:3:"964";i:965;s:3:"965";i:966;s:3:"966";i:968;s:3:"968";i:969;s:3:"969";i:970;s:3:"970";i:971;s:3:"971";i:972;s:3:"972";i:973;s:3:"973";i:974;s:3:"974";i:975;s:3:"975";i:976;s:3:"976";i:977;s:3:"977";i:978;s:3:"978";i:979;s:3:"979";i:980;s:3:"980";i:981;s:3:"981";i:982;s:3:"982";i:983;s:3:"983";i:984;s:3:"984";i:985;s:3:"985";i:986;s:3:"986";i:987;s:3:"987";i:988;s:3:"988";i:990;s:3:"990";i:991;s:3:"991";i:993;s:3:"993";i:994;s:3:"994";i:995;s:3:"995";i:996;s:3:"996";i:998;s:3:"998";i:1000;s:4:"1000";i:1001;s:4:"1001";i:1002;s:4:"1002";i:1004;s:4:"1004";i:1005;s:4:"1005";i:1006;s:4:"1006";i:1007;s:4:"1007";i:1008;s:4:"1008";i:1009;s:4:"1009";i:1010;s:4:"1010";i:1011;s:4:"1011";i:1012;s:4:"1012";i:1013;s:4:"1013";i:1014;s:4:"1014";i:1015;s:4:"1015";i:1016;s:4:"1016";i:1018;s:4:"1018";i:1019;s:4:"1019";i:1020;s:4:"1020";i:1021;s:4:"1021";i:1022;s:4:"1022";i:1023;s:4:"1023";i:1024;s:4:"1024";i:1025;s:4:"1025";i:1026;s:4:"1026";i:1027;s:4:"1027";i:1028;s:4:"1028";i:1029;s:4:"1029";i:1030;s:4:"1030";i:1031;s:4:"1031";i:1032;s:4:"1032";i:1033;s:4:"1033";i:1034;s:4:"1034";i:1035;s:4:"1035";i:1036;s:4:"1036";i:1037;s:4:"1037";i:1038;s:4:"1038";i:1039;s:4:"1039";i:1040;s:4:"1040";i:1041;s:4:"1041";i:1042;s:4:"1042";i:1043;s:4:"1043";i:1044;s:4:"1044";i:1045;s:4:"1045";i:1046;s:4:"1046";i:1047;s:4:"1047";i:1048;s:4:"1048";i:1049;s:4:"1049";i:1050;s:4:"1050";i:1051;s:4:"1051";i:1052;s:4:"1052";i:1053;s:4:"1053";i:1054;s:4:"1054";i:1055;s:4:"1055";i:1056;s:4:"1056";i:1057;s:4:"1057";i:1058;s:4:"1058";i:1059;s:4:"1059";i:1060;s:4:"1060";i:1061;s:4:"1061";i:1062;s:4:"1062";i:1063;s:4:"1063";i:1064;s:4:"1064";i:1065;s:4:"1065";i:1066;s:4:"1066";i:1067;s:4:"1067";i:1068;s:4:"1068";i:1069;s:4:"1069";i:1070;s:4:"1070";i:1072;s:4:"1072";i:1073;s:4:"1073";i:1074;s:4:"1074";i:1076;s:4:"1076";}" , products_start = "1000" WHERE `id` = "1"
and ErrrorMsg You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near



Can anyone help me

I want to be able to keep the old product_id

All the other tables are working fine


Regards
A

Joomla 4.4.5
php 8.1

mbarry

Good pickup, I would have liked to have kept the old Product Ids as well, now I will be able to.

The simplest option would be to add the following lines to the bottom of administrator/components/com_virtuemart/virtuemart.cfg

it will pick it up through the call to VmConfig::get('keepOldProductIds',FALSE);


##Migrator
keepOldProductIds=1

mbarry

Looks like it only reads this file if you do a fresh config install

DB Tools -> Renew VirtueMart configuration by file (The configuration settings are reset with the values from the file /administrator/components/com_virtuemart/virtuemart.cfg)

I going to export my configuration from #__virtuemart_configs and pre-populate this config file so that I can rebuild my site whenever I want from scratch.

AH

Have you managed to get it to populate the table 'virtuemart_products'

If I can get it to do this, I will be able to easily sort the issue with the 'virtuemar_product_categories'   ordering field, I will just clear it out and insert records from the old VM table
Regards
A

Joomla 4.4.5
php 8.1

mbarry

Yes I have.

1. You need to make sure all the old VM1 Virtuemart and Joomla tables are in the same database as the new ones with the same prefix as the new tables. I'm assuming you have done this.
2. Also all the product, category, vendor images, etc must be copied to the appropriate images/stories/virtuemart folders.
3. Are you running latest VM2.0.26d, if not suggest upgrading to this to avoid this issue - http://forum.virtuemart.net/index.php?topic=121112.0
4. Also worth noting that I had to increase the following php settings in php.ini since you can't do this from the webpage while in debug mode
        max_execution_time 360
        memory_limit 512M
5. Finally, keep an eye on Table #__virtuemart_migration_oldtonew_ids, this is what drives the whole migration process.
The Migration process checks this table to see where it got up to and what still needs to be done on subsequent runs.
If you have manually cleared out product tables and other such VM data tables and have not cleared this Table, then the migration process will never run again over the products or categories.

if you use the tools below then the above table will be cleared as part of the process however, one of the tables is missing data and hence, you will need the fix identified in http://forum.virtuemart.net/index.php?topic=121525.0
      Select DB Tools -> Remove Virtuemart Data
      Select DB Tools -> Install or if necessary update tables

Select Migration Tab
        Change switch options
          To align with existing website orders the following items need to be modified
          - Rewrite order numbers: uncheck (Note: if this is checked it overrules the switch option below)
          - Use the vm1 order id as vm2 order number: check  (this was important for me to maintain consistency with old shop)
          Note: these settings should be retained between subsequent migration attempts (selecting "Start migration")

        Change Radio options
          Select "everything" option first
          Select "Start migration" button
       
        Repeat Change switch options and Select "Start migration" button until Migration reports no further processing

Below is the output I get after making all the changes I have posted regarding the Migration process

You will see from the output to do this single run on 3404 products and 200 categories plus various other tables it took 284 secs


Response after run 1
        Start with a new migration process and setup log maxScriptTime 360 maxMemoryLimit 498
        Synchronized 3404 media for product in directory images/stories/virtuemart/product/
        Synchronized 200 media for category in directory images/stories/virtuemart/category/
        Synchronized 0 media for manufacturer in directory images/stories/virtuemart/manufacturer/
        Synchronized 2 media for vendor in directory images/stories/virtuemart/vendor/
        Synchronized 0 media for forSale in directory E:\30_Website_Development\htdocs\dev\rel2026_trunk\wyldspice\administrator\components\com_virtuemart\vmfiles\
        Processed 5 vm1 shoppergroups time: 0.0480940341949463
        Looks everything worked correct, migrated 49 categories
        Seems there was an error porting 1 of 35 categories xref
        Looks everything worked correct, migrated 1 manufacturer categories
        Looks everything worked correct, migrated 1 manufacturers
        Worked on migration for 284.445574998856 seconds
        Migration finished

        port shoppers take 305 vm1 entries for migration
        Processed 305 vm1 users time: 28.9871129989624
        port ST addresses take 3 vm1 entries for migration
        Processed 3 vm1 users ST adresses time: 0.266248941421509
        vendor 1 Stored
        port Products take 1000 vm1 entries for migration
        Couldnt find category for product, maybe just not in a category : Product ID 153 Category checked : ID 0
        Couldnt find category for product, maybe just not in a category : Product ID 154 Category checked : ID 0
        Couldnt find category for product, maybe just not in a category : Product ID 155 Category checked : ID 0
        Couldnt find category for product, maybe just not in a category : Product ID 156 Category checked : ID 0
        Couldnt find category for product, maybe just not in a category : Product ID 176 Category checked : ID 0
        Couldnt find category for product, maybe just not in a category : Product ID 177 Category checked : ID 0
        Couldnt find category for product, maybe just not in a category : Product ID 178 Category checked : ID 0
        Couldnt find category for product, maybe just not in a category : Product ID 179 Category checked : ID 0
        Couldnt find category for product, maybe just not in a category : Product ID 219 Category checked : ID 0
        Migration: 0 products processed
        port Products take 367 vm1 entries for migration
        Migration: 0 products processed
        port Orders take 308 vm1 entries for migration
        Migration: 308 orders processed 308 done.
        Migration: processing sku attributes .....
        Migration: 132 sku attributes processed this run, already processed 0 of 133
        Migration: processing product ratings .....
        Migration: 8 product reviews processed this run, already processed 0 of 8
        Migration: processing Waitinglist .....
        Migration: 46 waiting users processed this run, already processed 0 of 46
        Migration: processing UserfieldValues .....
        Migration: 14 userfield_values processed this run, already processed 0 of 14

        vmError: Port Categories Xref unknown : Child ID 0 : Parent ID 0

        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 3 Product : ID 446
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 3 Product : ID 454
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 19 Product : ID 204
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 20 Product : ID 202
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 20 Product : ID 200
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 38 Product : ID 764
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 46 Product : ID 172
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 46 Product : ID 173
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 58 Product : ID 957
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 58 Product : ID 958
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 78 Product : ID 1049
        Attention, order is pointing to deleted product (not found in the array of old products) Order : ID 78 Product : ID 1053


I hope some of this helps.

AH

Mbarry

Lots of information in your post, will certainly help those entering the glorious world of VM1 - VM2 migration!

I am opting for a simple solution to the config issue by ignoring it in the code and  commenting the  config test.  I am going to see if this works. I have tried before but it threw up an error in the sql (no idea why) but I will see what happens this time.


// if($this->_keepOldProductIds){
$product['virtuemart_product_id'] = $product['product_id'];
// }



I run my testing with a reduced set of products and complete sets of categories/manufacturers to save me time. 

Using an sql script I dump the new Virtuemart  dbase tables including the 'virtuemart_migration_oldtonew_ids'

Then recreate the base tables using the "install/update tables in VM tools"

Also porting to a new database with new prefix. So I export the tables I want and rename the prefix to match the new dbase prefix then test the migration.

Porting joomla users before running the migration

I use this SQL to port my users from old Joomla to new (else you get a "cannot find BT type error")

Renamed joomla user table to old_brs_users before running the sql.

Then run this code to get the into the new joomla tables


DELETE FROM `yournewdatabase`.`yournewprefix_users`;
DELETE FROM `yournewdatabase`.`yournewprefix_user_usergroup_map`;
ALTER TABLE `yournewdatabase`.`yournewprefix_users` AUTO_INCREMENT = 1;
ALTER TABLE `yournewdatabase`.`yournewprefix_categories` AUTO_INCREMENT = 1;

INSERT INTO
    `yournewdatabase`.`yournewprefix_users`
        (
            `id`,
            `name`,
            `username`,
            `email`,
            `password`,
            `usertype`,
            `block`,
            `sendEmail`,
            `registerDate`,
            `lastvisitDate`,
            `activation`,
            `params`
        )
SELECT
`id`,
`name`,
`username`,
`email`,
`password`,
REPLACE(`usertype`, 'Super Administrator', 'Super Users'),
`block`,
`sendEmail`,
`registerDate`,
`lastvisitDate`,
`activation`,
''
FROM `yournewdatabase`.`old_brs_users`;

INSERT INTO
    `yournewdatabase`.`yournewprefix_user_usergroup_map`
SELECT
    users.`id`,
newgroups.`id`
FROM
`yournewdatabase`.`old_brs_users` users,
`yournewdatabase`.`yournewprefix_usergroups` newgroups
WHERE
REPLACE(users.`usertype`, 'Super Administrator', 'Super Users') = newgroups.`title`;



Image alt attributes
The migrator.php also does a really crappy thing and stores the ALT image text with the awful vm1 filename so I comment out these line and have created an override for default_images.php

http://forum.virtuemart.net/index.php?topic=117297.msg396164#msg396164


At this moment in time our preference is not to move orders and only port the userinfos and joomla_users for registered customers.  We will to setup a local version of the old site/dbase for historic reference (I know most people would not like this but we are happy to work this way as it gives a clean switch)


I hope this helps someone
Regards
A

Joomla 4.4.5
php 8.1

mbarry

The process you describe is very similar to what the auto migration is trying to do. However, we opt for a more manual process so that we can check every step is porting the data correctly. In my case that was to use the debugger to what how the data was manipulated and inserted into the tables. Once I could see it was correctly translating the data, I was more confident in simply pressing buttons to run the process over and over.

Regarding the image alt attributes, I too notices that they were crappy. Thanks for the link will definitely be fixing that issue.

AH

LOL

I too run it through the debugger and am still doing that - took me some time before I let the auto process run through.

It looks as though it has missing data for the population of order_itemsthough:-


$q = 'SELECT * FROM `#__vm_order_item` WHERE `order_id` = "'.$order['order_id'].'" ';
$this->_db->setQuery($q);
$oldItems = $this->_db->loadAssocList();
//$this->_app->enqueueMessage('Migration orderhistories: ' . $newId);
foreach($oldItems as $item){
$item['virtuemart_order_id'] = $newId;
if(!empty($newproductIds[$item['product_id']])){
$item['virtuemart_product_id'] = $newproductIds[$item['product_id']];
} else {
vmWarn('Attention, order is pointing to deleted product (not found in the array of old products)');
}

//$item['order_status'] = $orderCodeToId[$item['order_status']];
$item['created_on'] = $this->_changeToStamp($item['cdate']);
$item['modified_on'] = $this->_changeToStamp($item['mdate']); //we could remove this to set modified_on today
$item['product_attribute'] = $this->_attributesToJson($item['product_attribute']); //we could remove this to set modified_on today

$item['product_discountedPriceWithoutTax'] = $item['product_final_price']   -  $item['product_tax'];
$item['product_subtotal_with_tax'] = $item['product_final_price']   *  $item['product_quantity'];
$orderItemsTable = $this->getTable('order_items');


Looks like it will still fail to populate:-

product_basePriceWithTax
product_priceWithoutTax
product_tax


Might help you :-)



Regards
A

Joomla 4.4.5
php 8.1

AH

Trying to do the migration to keep the old product_id

I get all the product tables created with the correct data eg prices, en_gb - descriptions

except (somewhat astonishingly!)

virtuemart_products


Spent a long time on this with no real success,  I have decided to opt for an SQL solution similar to that posted here by manburger reply#5:-

http://forum.virtuemart.net/index.php?topic=107395.msg385183#msg385183

Maybe Milbo was too busy.  If I could work out what was killing it, i would fix and post solution, but I really need to press on with migration planning and otehr site stuff such as all the url redirects I need to create ( :'()

Regards
A

Joomla 4.4.5
php 8.1

AH

Cannot see a fix for this so , here is the SQL to reset the Migrated product ids back to the original ones

DO not adjust the base migrator.php


UPDATE yourtable_virtuemart_product_medias SET
yourtable_virtuemart_product_medias.virtuemart_product_id = (
SELECT yourtable_vm_product.product_id FROM yourtable_vm_product WHERE yourtable_vm_product.product_sku = (SELECT product_sku FROM yourtable_virtuemart_products Where yourtable_virtuemart_products.virtuemart_product_id =
yourtable_virtuemart_product_medias.virtuemart_product_id));

UPDATE yourtable_virtuemart_product_prices SET
yourtable_virtuemart_product_prices.virtuemart_product_id = (
SELECT yourtable_vm_product.product_id FROM yourtable_vm_product WHERE yourtable_vm_product.product_sku = (SELECT product_sku FROM yourtable_virtuemart_products Where yourtable_virtuemart_products.virtuemart_product_id =
yourtable_virtuemart_product_prices.virtuemart_product_id));


CREATE TABLE yourtable_virtuemart_product_categories_new AS
SELECT * FROM yourtable_virtuemart_product_categories;

UPDATE yourtable_virtuemart_product_categories_new SET yourtable_virtuemart_product_categories_new.virtuemart_product_id = (
SELECT yourtable_vm_product.product_id FROM yourtable_vm_product WHERE yourtable_vm_product.product_sku = (SELECT product_sku FROM yourtable_virtuemart_products Where yourtable_virtuemart_products.virtuemart_product_id = yourtable_virtuemart_product_categories_new.virtuemart_product_id ));

TRUNCATE yourtable_virtuemart_product_categories;


Insert into yourtable_virtuemart_product_categories select * from yourtable_virtuemart_product_categories_new;

DROP TABLE yourtable_virtuemart_product_categories_new;


CREATE TABLE yourtable_virtuemart_product_manufacturers_new AS
SELECT * FROM yourtable_virtuemart_product_manufacturers;

UPDATE yourtable_virtuemart_product_manufacturers_new SET yourtable_virtuemart_product_manufacturers_new.virtuemart_product_id = (
SELECT yourtable_vm_product.product_id FROM yourtable_vm_product WHERE yourtable_vm_product.product_sku = (SELECT product_sku FROM yourtable_virtuemart_products Where yourtable_virtuemart_products.virtuemart_product_id = yourtable_virtuemart_product_manufacturers_new.virtuemart_product_id));

TRUNCATE yourtable_virtuemart_product_manufacturers;

Insert into yourtable_virtuemart_product_manufacturers select * from yourtable_virtuemart_product_manufacturers_new;

DROP TABLE yourtable_virtuemart_product_manufacturers_new;


CREATE TABLE yourtable_virtuemart_products_en_gb_new AS
SELECT * FROM yourtable_virtuemart_products_en_gb;

UPDATE yourtable_virtuemart_products_en_gb_new SET yourtable_virtuemart_products_en_gb_new.virtuemart_product_id = (
SELECT yourtable_vm_product.product_id FROM yourtable_vm_product WHERE yourtable_vm_product.product_sku = (SELECT product_sku FROM yourtable_virtuemart_products Where yourtable_virtuemart_products.virtuemart_product_id = yourtable_virtuemart_products_en_gb_new.virtuemart_product_id));

TRUNCATE yourtable_virtuemart_products_en_gb;

Insert into yourtable_virtuemart_products_en_gb select * from yourtable_virtuemart_products_en_gb_new;

DROP TABLE yourtable_virtuemart_products_en_gb_new;



CREATE TABLE yourtable_virtuemart_products_new AS
SELECT * FROM yourtable_virtuemart_products;

UPDATE yourtable_virtuemart_products_new SET yourtable_virtuemart_products_new.virtuemart_product_id = (
SELECT yourtable_vm_product.product_id FROM yourtable_vm_product WHERE yourtable_vm_product.product_sku = yourtable_virtuemart_products_new.product_sku);

TRUNCATE yourtable_virtuemart_products;

Insert into yourtable_virtuemart_products select * from yourtable_virtuemart_products_new;

DROP TABLE yourtable_virtuemart_products_new;

Regards
A

Joomla 4.4.5
php 8.1

mbarry

I finally got around to looking at the last part of this issue.

-- Why Table #__virtuemart_products is not populated when _keepOldProductIds is set.

The issue is within the Joomla core file libraries/joomla/database/tables.php line 609

'virtuemart_product_id' is the primary key for data stored in Table #__virtuemart_products and as this function correctly assumes, if the key already exists (as it does when we assign it the old VM1 value),
then the object within the table is updated rather than inserted as we had hoped and since it doesn't exist it fails silently.

For the product language table, the joomla store function is overloaded with the vmTableData store function which allows insertion of rows even though the primary key is set.
For all other product tables, 'virtuemart_product_id' is not the primary key so the inserts work as expected.


public function store($updateNulls = false)
{
// Initialise variables.
$k = $this->_tbl_key;
if (!empty($this->asset_id))
{
$currentAssetId = $this->asset_id;
}

// The asset id field is managed privately by this class.
if ($this->_trackAssets)
{
unset($this->asset_id);
}

// If a primary key exists update the object, otherwise insert it.
if ($this->$k)  <- line 609
{
$stored = $this->_db->updateObject($this->_tbl, $this, $this->_tbl_key, $updateNulls);
}
else
{
$stored = $this->_db->insertObject($this->_tbl, $this, $this->_tbl_key);
}


Since this is a core file changing its behaviour is out of the question, so my solution to get around this problem was to process each product as it would normally and
then as the last step, update 'virtuemart_product_id' in all the product tables with the VM1 'product_id'.

In administrator/components/com_virtuemart/helpers/migrator.php ::  function portProducts()

insert the following lines just below the call to store the table data since the first thing you want to do is change the ids and make sure subsequent code uses the updated ids.
                               $product['virtuemart_product_id'] = $productModel->store($product);

//MJB if you want to keep old Category Ids then update all relevant product tables with the old product id
if($this->_keepOldProductIds && !empty($product['virtuemart_product_id'])) {
$product['virtuemart_product_id'] = $this->_updateTableId('virtuemart_product_id', $product['virtuemart_product_id'], $product['product_id'], 'product');
}


Do the same thing for portCategories as well. See issue http://forum.virtuemart.net/index.php?topic=121824.0
Note it is a little more complicated since there are 'category' and 'categories' tables plus there is a Xref table

$category_id = $catModel->store($category);

// MJB if you want to keep old Category Ids then rekey all relevant product tables with the old category id
if($this->_keepOldCategoryIds && !empty($category_id)) {
// Updates #__virtuemart_categories and #__virtuemart_categories_<language>
$this->_updateTableId('virtuemart_category_id', $category_id, $oldcategory['category_id'], 'categories');

// Updates #__virtuemart_category_categories child only
$this->_updateTableId('category_child_id', $category_id, $oldcategory['category_id'], 'category');

// Updates #__virtuemart_category_medias
$category_id = $this->_updateTableId('virtuemart_category_id', $category_id, $oldcategory['category_id'], 'category');
}


Set the follow parameters in public function __construct()
  $this->_keepOldProductIds =1;
  $this->_keepOldCategoryIds=1;


Add new function

/**
* Set the id from oldValue to newValue for given set of Tables
*
* @author M. Barry
*
*/
function _updateTableId($id, $oldValue, $newValue, $type) {

$searchString = "%virtuemart_".$type."%";
$q = 'SHOW TABLES LIKE "'.$searchString.'"';

$this->_db->setQuery($q);
$tables = $this->_db->loadResultArray();
if(empty($tables)) {
vmInfo('No '.$type.' table found to update');
return false;
}

foreach ($tables as $tbl) {
$q = 'UPDATE '.$tbl.' SET '.$id.'='.$newValue.' WHERE '.$id.' = '.$oldValue;

$this->_db->setQuery($q);
$this->_db->query(); // fails quitely for tables that don't have $id
}
return (int) $newValue;
}

AH

M Barry

Thank you very much for finding the issue and  coming up with a programmatic solution.

I know that many users will not be concerned about their data values being manipulated

But for some it will be a great lifeline!

Unfortunately for me, I had already expended effort on the SQL "solution".  Still, it was raining outside so it saved me from getting wet  :D
Regards
A

Joomla 4.4.5
php 8.1

AH

MBarry

You Sir are a star!  :)

Implemented the changes above and the (product category ordering http://forum.virtuemart.net/index.php?topic=121700.0)

Tested - works perfectly.  Should save people the time and angst of working out the sql to keep old id's and data and it is nice and neat for most people to utilise that do not have the requisite php or sql skills!

You should probably submit these changes to milbo and the team.

I am not sure that they have their focus on this at the moment, as they are working on getting VM ready for Joomla 3.5.
But it might catch their attention.

Regards
A

Joomla 4.4.5
php 8.1

mbarry

Hutson many thanks for your kind words.

I have posted a number recommended fixes for the Migration tool that would make it much more robust and easier to use. I'm just not sure how to get these recommendations in front of Milbo.
Of particular concern is this one http://forum.virtuemart.net/index.php?topic=121955.0 of which the side effects can appear to be very random.

I think if they were to take on some of these suggestions they wouldn't have to spend as much time on the Migration forums leaving them even more time to focus on VM for J3.5.
Also, I wonder if these same issues will also be inherent in VM for J3.5?