Upgrade from ALVAO 10.4 – manual steps
Custom Apps
When upgrading from ALVAO 10.4, you need to modify existing software extensions, see ALVAO Asset Management Custom Apps or ALVAO Service Desk Custom Apps. Modify the source files and scripts as described on this page. If you are upgrading from ALVAO 10.3 or earlier, first convert the custom extension to ALVAO 10.4.
- Transfer your existing customizations from the App_Code folder in the SD WS installation to the Applications folder as follows:
- In the Administration - Applications section, create a suitable structure of applications.
- In the application, create a new script with a template for each file being transferred:
- Blank if you are transferring a file with an implementation of one of the extension types (e.g., a file containing a class implementing ITicketAutoAction).
- Class Library, if you are transferring a file containing auxiliary classes (e.g., a file containing Settings service names used in extensions).
- Enter the contents of the file you are transferring into the script.
- using System.Web.WebServices;
replace with:
using Alvao.Apps.WebService;
- Automatic actions based on event changes - if you are using the tActHd.bActHdUserRead column in automatic actions, you need to change it to tAct.UserRead.
- Custom person selection functions - If you are using the spPersonSearch-Custom2 custom procedure,
add new parameters @onlyCustomizableUsers and @rightLimitationPersonId. We recommend that you copy the definition of the default implementation spPersonSearch and make your own modifications to it again.
- If you are using the table in a custom form, remove the DefaultAction() and Actions() methods from the table if you have implemented them.
- Remove the use of the scope.Open() method.
- ALVAO Standard HW/SW Request Forms - Custom HW Request Form
The new template is located in the Templates/StandardHwSwRequestForm folder.
In the existing code of the cs file, which is based on Code/StandardHwSwRequestForm-Hw-NewTicket.cs, replace the following lines:
TicketBody += properties["ItemName"];
TicketBody += "\nPrice: " + properties["Price"];
for this code:
object itemName;
properties.TryGetValue("ItemName", out itemName);
TicketBody += itemName;
object price;
properties.TryGetValue("Price", out price);
TicketBody += "\nPrice: " + price;
- If you use any of the Alvao.API methods listed in the A10.4 column in your custom forms,
replace it with the appropriate method from column A11.0.
A10.4 |
A11.0 |
AM.ImportCsv.RunImportCsv |
AM.ImportCsv.Run |
AM.Object.CreateObject |
AM.Object.Create |
AM.Object.CopyObject |
AM.Object.Copy |
AM.Object.DeleteObject |
AM.Object.Delete |
AM.Object.MoveObject |
AM.Object.Move |
AM.Object.GetObjectById |
AM.Object.GetById |
AM.ObjectProperty.UpdateProperties |
AM.ObjectProperty.Update |
Common.Email.QueueMailMessage |
Common.Email.Queue |
Common.Person.GetPersonById |
Common.Person.GetById |
Common.Person.GetPersonByEmail |
Common.Person.GetByEmail |
Common.Person.GetPersonCultureInfoOrDefault |
Common.Person.GetCultureInfoOrDefault |
SD.Message.SendMessage |
SD.Message.Send |
SD.Sections.MoveSections |
SD.Sections.Move |
SD.Sections.CopySections |
SD.Sections.Copy |
SD.Sections.ReplaceSectionsRights |
SD.Sections.ReplaceRights |
SD.Sections.ReplaceSectionsSlaRights |
SD.Sections.ReplaceSlaRights |
SD.Sections.GetSectionOnlySolverId |
SD.Sections.GetOnlySolverId |
SD.Sections.ExportSections |
SD.Sections.Export |
SD.Sections.ValidateSectionsBeforeImport |
SD.Sections.ValidateBeforeImport |
SD.Sections.ImportSections |
SD.Sections.Import |
- The ObjectClass.Code.Store enumerator item from Alvao.API (Alvao.API.AM.Model.ObjectClass.Code.Store) has been renamed to Alvao.API.AM.Model.ObjectClass.Code.Warehouse.
- The spMoveNode database procedure now requires a value to be filled in the person parameter.
- Remove the use of the Alvao.Apps.AppsConfig.ConnectionProvider.SetApiContext method.
- By the next version of ALVAO (release April 2023), SD WS will be deprecated. In custom forms and applications, we recommend replacing SD WS methods with the corresponding methods from Alvao.API:
For example: sdws.ReadColumn(recordId, tableName, columnName);
replace with
Alvao.API.Common.Database.ReadColumn(recordId, tableName, columnName);
sdws.WriteColumn(recordId, tableName, columnName, newValue);
replace with
Alvao.API.Common.Database.WriteColumn(recordId, tableName, columnName, newValue);
In integrations with external systems, we recommend replacing SD WS methods with the corresponding methods from the Service Desk Enterprise API:
Note: SD WS methods not listed in the table will not have a replacement until the next version of ALVAO (April 2023 release).
- If you use database transactions in Applications, apply the new recommendations. (T124214ALVAO)
Custom print report templates
Custom print report templates need to be rewritten to a supported XSL version as follows:
Old construction |
New construction |
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> |
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> |
<xsl:script>...</xsl:script> |
- |
<xsl:if test="context()[not(end())]"> |
<xsl:if test="position()!=last()"> |
<xsl:for-each select="xxx" order-by="yyy,zzz"> |
<xsl:for-each select="xxx">
<xsl:sort select="yyy" />
<xsl:sort select="zzz" />
|
<xsl:if test=".[value!='']"> |
<xsl:if test="value!=''"> |
<xsl:when test=".[not(proplist/prop[kind='xxx']) and proplist/prop[kind='yyy']]"> |
<xsl:when test="not(proplist/prop[kind='xxx']) and proplist/prop[kind='yyy']"> |
<xsl:apply-templates select="ancestor(node[classid='x'])/nodelist"/> |
<xsl:apply-templates select="ancestor::node[classid='x']/nodelist"/> |
<xsl:apply-templates select="xxx" order-by="yyy" /> |
<xsl:apply-templates select="xxx">
<xsl:sort select="yyy" />
</xsl:apply-templates>
|
Did not find what you were looking for? Ask our technical support team.