<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Efficy Overflow Q&amp;A - Recent questions and answers in migration</title>
<link>https://overflow.efficy.io/?qa=qa/developers/migration</link>
<description>Powered by Question2Answer</description>
<item>
<title>Answered: How does Efficy  application choose what Oracle client should be used? (10.2 , 11.2 ?)</title>
<link>https://overflow.efficy.io/?qa=4526/does-efficy-application-choose-what-oracle-client-should-used&amp;show=4543#a4543</link>
<description>&lt;p&gt;Hello Vladimir,&lt;/p&gt;

&lt;p&gt;We have this issue for Eiffage, we had to installed Oracle Client version 64 bits on the serveur that already had the Oracle Client 32 bits.&lt;/p&gt;

&lt;p&gt;To make both client working, we use the information of this internet Web Page : &lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;http://realfiction.net/2009/11/26/use-32-and-64bit-oracle-client-in-parallel-on-windows-7-64-bit-for-e-g-net-apps&quot;&gt;Use 32 and 64bit Oracle Client in parallel on Windows 7 64-bit for e.g. .NET Apps&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hope this will help :)&lt;/p&gt;
</description>
<category>Efficy 10 SP2</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=4526/does-efficy-application-choose-what-oracle-client-should-used&amp;show=4543#a4543</guid>
<pubDate>Tue, 09 Jul 2019 11:44:24 +0000</pubDate>
</item>
<item>
<title>Answered: Upgrade to Efficy 11 – Migration guide &amp; Best practices</title>
<link>https://overflow.efficy.io/?qa=3849/upgrade-to-efficy-11-migration-guide-best-practices&amp;show=3850#a3850</link>
<description>&lt;p&gt;Hi Stoko&lt;/p&gt;

&lt;p&gt;I shared you this &lt;a rel=&quot;nofollow&quot; href=&quot;https://files.efficy.com/file//list?p=rHN7WkV6rnFWHG-LwQ&quot;&gt;internal document&lt;/a&gt;, you can access is for 30 days.&lt;/p&gt;

&lt;p&gt;Regards,&lt;br&gt;
Kristof&lt;/p&gt;
</description>
<category>to Efficy 10</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=3849/upgrade-to-efficy-11-migration-guide-best-practices&amp;show=3850#a3850</guid>
<pubDate>Thu, 10 Jan 2019 14:00:56 +0000</pubDate>
</item>
<item>
<title>Answered: Efficy 11: Flexmail settings Upgrade from Efficy 2014 ?</title>
<link>https://overflow.efficy.io/?qa=3440/efficy-11-flexmail-settings-upgrade-from-efficy-2014&amp;show=3444#a3444</link>
<description>&lt;p&gt;Hi Stéphane,&lt;/p&gt;

&lt;p&gt;The script has been removed since the new acc_auth mechanism does not allow what was done here. The password and the token are now encrypted directly by Efficy and this kind of manipulation can not be done in serverscript.&lt;/p&gt;

&lt;p&gt;To upgrade from Efficy 2014 to Efficy 11, I suggest to do the following step only once:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create in Conficy the flexmail user depending of information stored in sys_storage&lt;/li&gt;
&lt;li&gt;Edit the everyone group and select the new flexmail user.&lt;/li&gt;
&lt;li&gt;Copy the FLEXMAIL.K_FLEXMAIL of this new user.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Execute the function &lt;strong&gt;upgradeFrom6640To11&lt;/strong&gt; of the following upgrade script directly with a task scheduler (the kFlexmail needs to be replaced with the K_FLEXMAIL of the FLEXMAIL table):&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;/* upgradeFrom6640To11: Upgrade from Efficy 2014 (&amp;lt;= 6640) to Efficy 11 (or newer):
Initialize:
    field PUBL$EMAILING.K_FLEXMAIL
    field PROF_FLEXMAIL.FLEXGROUP_ID

upgradeFrom7987To11: Upgrade from Efficy 10 (v.7987) to Efficy 11 (newer):
Initialize:
    table PROF_FLEXMAIL (from PROF_FLEXPROFILE) 
*/

var EFFICY_PUBL_CATEGORY_NAME = 'PUBL$EMAILING';

function upgradeFrom6640To11() {
    var
        sql, ds, sqlContext, editHandle, categDs,
        kFlexmail;

    kFlexmail = 2;
    Database.Log('   [upgrade from Efficy 2014 (v.6640) to Efficy 11]');
    try {
        Database.DisableSecurity = true;
        Database.Log('--Linking Publications (PUBL$EMAILING) to Flexmail account...');
        sql = 'select K_PUBLICATION from &amp;lt;#TABLE name=PUBL$EMAILING&amp;gt; where CAMPAIGN_ID is not null';
        sqlContext = Database.OpenTemporaryContext;
        ds = Database.ExecuteSystemSQLQuery(0, sqlContext, sql, '', true, true, 0);
        if (!ds)
            throw new Error ('----Error while fetching records from table PUBL$EMAILING');
        if (!ds.IsEmpty) {
            ds.First;
            while (!ds.Eof) {
                editHandle = Database.OpenEditContext(ntPubl, ds.FieldByName('K_PUBLICATION').AsFloat);
                try {
                    Database.ActivateCategory(editHandle, EFFICY_PUBL_CATEGORY_NAME);
                    categDs = Database.GetCategoryDataSet(editHandle, EFFICY_PUBL_CATEGORY_NAME);
                    if (!categDs.IsEmpty) {
                        categDs.Edit;
                        categDs.FieldByName('K_FLEXMAIL').AsFloat = kFlexmail;
                        categDs.Post;
                        Database.CommitChanges(editHandle, false);
                    }
                }
                finally {
                    Database.CloseContext(editHandle);
                }
                ds.Next;
            }
        }

        Database.Log('--Linking Profiles (PROF$EMAILING) to Flexmail account...');
        sql = 'select pe.FLEXGROUPID, pe.K_PROFILE from &amp;lt;#TABLE NAME=PROF$EMAILING&amp;gt; pe where FLEXGROUPID is not null';
        ds = Database.ExecuteSystemSQLQuery(0, sqlContext, sql, '', true, true, 0);
        if (!ds)
            throw new Error ('----Error while fetching records from table PROF$EMAILING');
        if (!ds.IsEmpty) {
            ds.First;
            while (!ds.Eof) {
                try {
                    updateEfficyProfile(ds.FieldByName('K_PROFILE').AsFloat, kFlexmail, ds.FieldByName('FLEXGROUPID').AsString);
                }
                catch(ex) {
                    Database.Log('----Error while linking Profile to Flexmail account: K_PROFILE = ' + ds.FieldByName('K_PROFILE').AsString);
                }
                ds.Next;
            }
        }

    }
    finally {
        Database.DisableSecurity = false;
    }
}

function upgradeFrom7987To11() {
    var
        sql, ds, sqlContext;

    Database.Log('Migrating data from PROF_FLEXPROFILE to PROF_FLEXMAIL');
    Database.Log('   [upgrade from Efficy 10 (v.7987) to Efficy 11]');
    sql = 'select K_FLEXMAIL, K_PROFILE, FLEXGROUP_ID from &amp;lt;#TABLE NAME=PROF_FLEXPROFILE&amp;gt;';
    try {
        sqlContext = Database.OpenTemporaryContext;
        ds = Database.ExecuteSystemSQLQuery(0, sqlContext, sql, '', true, true, 0);
        if (ds) {
            if (!ds.IsEmpty) {
                ds.First;
                while (!ds.Eof) {
                    try {
                        updateEfficyProfile(ds.FieldByName('K_PROFILE').AsFloat, ds.FieldByName('K_FLEXMAIL').AsFloat, ds.FieldByName('FLEXGROUP_ID').AsString);
                    }
                    catch(ex) {
                        Database.Log('--Impossible to migrate a record of PROF_FLEXPROFILE: K_PROFILE = ' + ds.FieldByName('K_PROFILE').AsString + ', K_FLEXMAIL = ' + ds.FieldByName('K_FLEXMAIL').AsString);
                        Database.Log('  (record probably already exists)');
                    }
                    ds.Next;
                }
            }
        }
        else
            Database.Log('--No records PROF_FLEXPROFILE found =&amp;gt; Nothing to be done');
    }
    catch(ex) {
        Database.Log('--No records PROF_FLEXPROFILE found =&amp;gt; Nothing to be done');
    }
}

// Fill flex group ID in Efficy profiles
function updateEfficyProfile(kProfile, kFlexmail, flexGroupId) {
    var editHandle = 0;
    if (kProfile) {
        editHandle = Database.OpenEditContextRelation2(ntProf, ntFlexmail, kProfile, kFlexmail);
        try {
            Database.UpdateStringField(editHandle, 0, 'FLEXGROUP_ID', flexGroupId);
            Database.CommitChanges(editHandle, false);
        }
        finally {
            Database.CloseContext(editHandle);
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you have to upgrade from Efficy 10 r7987 to a newer version, execute the &lt;strong&gt;upgradeFrom7987To11&lt;/strong&gt; function to transfer information from &lt;strong&gt;PROF_FLEXPROFILE&lt;/strong&gt; to &lt;strong&gt;PROF_FLEXMAIL&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We will no longer do this kind of upgrade function as it can not be easily maintained. In the future, the UpgradeDB will always be used for this kind of manipulation. For example, to migrate from Efficy 10 to Efficy 11, the upgradeDB is taking care of the migration of the table FLEXMAIL to the table ACC_AUTH and also migrates the field PROF$EMAILING.FLEXGROUP to FLEXKIND.&lt;/p&gt;

&lt;p&gt;Kind regards,&lt;/p&gt;
</description>
<category>to Efficy 10</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=3440/efficy-11-flexmail-settings-upgrade-from-efficy-2014&amp;show=3444#a3444</guid>
<pubDate>Fri, 03 Aug 2018 09:10:15 +0000</pubDate>
</item>
<item>
<title>Answered: DialogHeader has disapear on Efficy 10th SP2</title>
<link>https://overflow.efficy.io/?qa=2215/dialogheader-has-disapear-on-efficy-10th-sp2&amp;show=2216#a2216</link>
<description>&lt;p&gt;This is not a bug.&lt;br&gt;
This macro has disappeared in favor of two new macros in MacroDialog.txt : &lt;/p&gt;

&lt;p&gt;DialogScripts&lt;br&gt;
DialogScriptsRequire&lt;/p&gt;

&lt;p&gt;Please note that the &amp;lt;%UseStyleSheet()%&amp;gt;  is no longer present in those macros, and should manually added if needed, and the correct syntax in Efficy 10 is : &lt;br&gt;
&amp;lt;%UseStyleSheet(page='%%OnLanguage(ar=&quot;efficy-rtl&quot;, else=&quot;efficy&quot;)')%&amp;gt;&lt;/p&gt;

&lt;p&gt;efficy\pages\dialog\Category.htm is a good example of the good practices on the usage of those macros.&lt;/p&gt;
</description>
<category>Efficy 10 SP2</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=2215/dialogheader-has-disapear-on-efficy-10th-sp2&amp;show=2216#a2216</guid>
<pubDate>Mon, 23 Jan 2017 10:19:32 +0000</pubDate>
</item>
<item>
<title>Answered: Delphi Server Scripts not supported anymore since Efficy10SP1</title>
<link>https://overflow.efficy.io/?qa=2198/delphi-server-scripts-supported-anymore-since-efficy10sp1&amp;show=2203#a2203</link>
<description>&lt;p&gt;Hello Pierre,&lt;/p&gt;

&lt;p&gt;Indeed, only JavaScript is supported in Serverscripts, Scheduled scripts and DataSynchro since Efficy 10 SP1.&lt;/p&gt;
</description>
<category>Efficy 10 SP2</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=2198/delphi-server-scripts-supported-anymore-since-efficy10sp1&amp;show=2203#a2203</guid>
<pubDate>Tue, 17 Jan 2017 08:58:22 +0000</pubDate>
</item>
<item>
<title>Answered: Upgrade to Efficy 10 – Migration guide &amp; Best practices</title>
<link>https://overflow.efficy.io/?qa=1706/upgrade-to-efficy-10-migration-guide-best-practices&amp;show=1709#a1709</link>
<description>&lt;h2&gt;From Efficy 2014 to Efficy 10&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A/ What to be checked&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Of course, all custom must be tested, but, the “general” structure of the files, the macros, the Js and the Css, is the same. However, there is some file you will always need to adapt if you are coming from an Efficy 2014 to an Efficy 10.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This list is not exhaustive:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;1.Js files&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In some file, the « define ([…] » as changed (some Js files are new, and some Js file have been moved). Also, base/, utils/, … are not necessary anymore. So, you need to verify the define of all your custom files in Js folder.&lt;/p&gt;

&lt;p&gt;The best way, is to replace the define in your custom, by the define copied from the standard file, and add your custom define if needed. (easy to do with a tools like beyond compare)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;2. Css/Scss files&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you have a custom efficy.css generated by a custom scss, you need to adapt the “_custom-settings.scss” file, because Efficy 10 comes with Badges and Chronos (TimeLine) who have some Css configuration.&lt;/p&gt;

&lt;p&gt;The best way to upgrade this file, is to write a new one, who is a copy of the standard “&lt;em&gt;app-settings.scss” and reintegrate your custom in this new file (keep the same name for the new file “&lt;/em&gt;custom-settings.scss” there is no reason to change it), and recompile your efficy.css.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;3. Macro files&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With coming of TimeLine, we have a new tab, so, in each macro who display or use multiple entities like “DetailSelectTabs” or “DetailTabsButtons” for example, you need to compare with the standard file, and add the timeline if needed.&lt;/p&gt;

&lt;p&gt;Badges are also new, so, some macro like “DetailTabs” must be checked to integrate new standard badges if you have customized these macros.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;4.Htm files&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It’s difficult to point something, each file where you have a custom must be opened in Efficy, to see if your custom is always working good, if not, compare with the standard file.&lt;/p&gt;
</description>
<category>to Efficy 10</category>
<guid isPermaLink="true">https://overflow.efficy.io/?qa=1706/upgrade-to-efficy-10-migration-guide-best-practices&amp;show=1709#a1709</guid>
<pubDate>Tue, 14 Jun 2016 13:02:15 +0000</pubDate>
</item>
</channel>
</rss>