Appian 18.3 to 18.2 downgrade

Hi,

Due to client reasons we need to move some code developed in Appian 18.3 (cloud) to another Appian instalation in 18.2 (on premise) . So, we need to downgrade.

We need to know if it works in the same way that the export/import application utility. Is there any problem? 

Thanks a lot

  Discussion posts and replies are publicly visible

Parents Reply Children
  • Thanks! and how do you know wich is the specific code in 18.3 not valid in 18.2?
  • you can check the 18.3 release notes to see if there are any new/changed/evolved functions. If you are using them, you may need to modify.
  • when you attempt to import, the import will fail because of missing "components"...find those in the XML and comment them out...for instance if it can't import because function "a!whatEver" doesn't exist, find all instance of "a!whatEver" and comment that entire function out...once you import, you will have to replace "a!whatEver" with a function from 18.2 to replace that functionality...note: if "a!whatEver" is in SAIL, you can just put SAIL comments around it to see that was commented out "/* a!whatEver(blah, blah, blah...)*/"
  • 0
    A Score Level 2
    in reply to bryant.st39
    Hi Bryant,
    Could you please give the example you you modified the xml files? suppose if you didnt have 18.3 specific code how will you handle this.
    As far as i Know Appian will read the manifest file that contains the version name to determine from which environment the package was exported. In this case are you sure that the 18.3 packages will be imported to 18.2?
  • I will...when we do this, we only modify the XML for datatypes, interfaces, and expressions,,,we simply add "/*...*/" comments around either unavailable functions/expressions or in some cases comment out the entire expression.  This will allow it to import.  As stated by Appian, this is not recommended and is very risky.  Limiting object types being modified and regression testing can help mitigate the risks but not eliminate them.

  • This is not recommended and is very risk...however, we have had occasions where this was the last resort...below is the XML structure for an interface...in the XML, I added comments (/*, */) around the portion of the interface definition that would affect the import, saved it, and re-zipped all the files.  Before attempting, make backups and test thoroughly.

    XML File:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    <contentHaul xmlns:a="www.appian.com/.../2009">

    <rule>

    <name>PMT_ActionIsLocked</name>

    <uuid>_a-0000e09d-8cea-8000-daab-640000640000_24919</uuid>

    <description></description>

    <parentUuid>_a-0000dc92-d263-8000-5130-010000010000_15604</parentUuid>

    <visibility>

    <advertise>false</advertise>

    <hierarchy>true</hierarchy>

    <indexable>true</indexable>

    <quota>false</quota>

    <searchable>true</searchable>

    <system>false</system>

    <unlogged>false</unlogged>

    </visibility>

    <definition>= #&quot;SYSTEM_SYSRULES_formLayout&quot;(

    label: &quot;WARNING: Work Products are currently being edited by:&quot;,

    firstColumnContents: {

    /* add in XML

    #&quot;SYSTEM_SYSRULES_textField&quot;(

    label: &quot;Insert Process Report Here&quot;,

    labelPosition: &quot;ABOVE&quot;,

    saveInto: {},

    readOnly: true()

    )

    added in XML */

    },

    buttons: #&quot;SYSTEM_SYSRULES_ButtonLayout&quot;(

    primaryButtons: {

    #&quot;SYSTEM_SYSRULES_ButtonWidgetSubmit&quot;(

    label: &quot;OK&quot;,

    style: &quot;PRIMARY&quot;

    )

    }

    )

    )</definition>

    <preferredEditor>interface</preferredEditor>

    <offlineEnabled>false</offlineEnabled>

    </rule>

    <roleMap public="true">

    <role allowForAll="false" inherit="true" name="readers">

    <users/>

    <groups/>

    </role>

    <role allowForAll="false" inherit="true" name="authors">

    <users/>

    <groups/>

    </role>

    <role allowForAll="false" inherit="true" name="administrators">

    <users/>

    <groups/>

    </role>

    <role allowForAll="false" inherit="false" name="denyReaders">

    <users/>

    <groups/>

    </role>

    <role allowForAll="false" inherit="false" name="denyAuthors">

    <users/>

    <groups/>

    </role>

    <role allowForAll="false" inherit="false" name="denyAdministrators">

    <users/>

    <groups/>

    </role>

    </roleMap>

    <typedValue>

    <type>

    <name>RuleTestConfig?list</name>

    <namespace>www.appian.com/.../namespace>

    </type>

    <value>

    <el>

    <a:name/>

    </el>

    </value>

    </typedValue>

    </contentHaul>

     

     

               

    Imported SAIL:

    = a!formLayout(

     label: "WARNING: Work Products are currently being edited by:",

     firstColumnContents: {

    /* add in XML

       #"SYSTEM_SYSRULES_textField"(

         label: "Insert Process Report Here",

         labelPosition: "ABOVE",

         saveInto: {},

         readOnly: true()

       )

    added in XML */

     },

     buttons: a!buttonLayout(

       primaryButtons: {

         a!buttonWidgetSubmit(

           label: "OK",

           style: "PRIMARY"

         )

       }

     )

    )