Developer Guide - Addovation Go - V3
Last Updated: 2025-02-14
Introduction
This guide describes the process and specifications of IFS Cloud apps in Addovation Go. It will show the initial setup needed for the environment, creation of a sample app and detail the list of projections used in the app later. The usage and standards of projections in the app will be explained alongside the sample app creation process.
Initial Setup
IAM Client Configuration
The first step we must do to setup the IFS cloud environment is to create and configure the IFS Identity and Access Manager (IAM) Client. This can be done via IFS Aurena from the page illustrated below. Note the Client ID, Secret and Redirect Uris.
Figure 1 : High Level Architecture
Addovation Go Designer Environment Configuration
After obtaining the IAM client details, we can go ahead and set the environment information in Addvation Go Designer. You can just create a new IFS Cloud environment and set the configurations as below.
Figure 2: Addovation Go Designer Environment Configurations
IFS Version: IFS Cloud
Authentication Type : IFS_CLOUD
Client Id: (IAM client id)
Client Secret : (as specified in IAM Client)
Scopes : openid
Authorize Url : the authorization Url of your IFS server. Usually it will be https://abc.com/auth/realms/abcd/protocol/openid-connect/auth where ‘abc’ and ‘abcd’ will be specific values for your domain
Callback Url : Should be given as “com.addovation.go://callback”. This was specified in the IAM client.
Service Management App
We will now see how to create a cloud app that can work with work orders, work tasks and modules related to the work task. This app will be named as “Service Management” for this tutorial.
Logical Unit and Examining Projections in IFS Cloud
To understand the logical unit we are going to be mainly working in the app, we can use Aurena to get that information easily. Since we’re going to be working with Work orders, we can simply go to the “Prepare Work Order” page > click on the username > Debug > Page info to see that. We can also see some information about the main projection used in the page etc.
Figure 3 : Prepare Work Order Page Info
Figure 4: Work Order LU
To create the app, we need to know the projections we are going to need for the app pages. There is an easy way to get that from Aurena as well. First, simply click Username > Debug > Enable devtools link.
Figure 5: Enabling Devtools Link
Then press F12 to open Dev tools > IFS Cloud > Network. Afterwards by performing any action on the page like creating a new work order, you can get a log of the projections being called for that specific action. You can get the projection uri, payload, headers and response from this to get an understanding of the projections used.
Figure 6: Examining Used Projections
If you want to see the response of the projection in a more coherent way, you can simply copy-paste the relevant projection uri to your browser which if it’s a GET type projection, would give a result like the sample below.
Figure 7 : A Projection Result
It is by using these projections that we are mainly going to be creating the app. If you want to know further information about specific projections, you can use the “API Explorer” page in Aurena and search for the projection name to get their specification and documentation.
Figure 8 : Using the API Explorer
3.2 Application Pages
You can create a new app called “Service Management” from the Addovation Go Designer.
Figure 9 : Creating the App
Afterwards we can create pages in the app. We will see which pages we need. Here, we are first creating the main page “Work Order Home”.
Figure 10 : Creating Pages
Work Order Home
This page will act as our home page of the application and will enable us to search work orders and navigate to the Create work order and work tasks page. You can design the page using Addovation Go Designer.
Before we proceed we should have some idea on how we want the layout to look like, so we recommend drawing a wire frame on paper or using some 3rd party tool.
The created page will eventually look like this once we run the app in Addovation Go, presented here so you can get an idea about the layout we will have.
Figure 11 : Work Order Home Page Layout
After the layout has been decided, you can just drag and drop the relevant tools we need for the page from the Quick Access pane on the left hand side in the Addovation Go Designer.
The example below shows inserting a Filter Box from the Input Tools in order to create the page. You can click on the ‘Save Page’ button on the designer to save the page.
Figure 12 : Adding a Filter Box
This filter box will be used to get the work order nos in IFS and select and get the details of one of them. To do this, we need to call projections. For the filter box, we need to call the “ActiveSeparateSet” projection to get all the work order nos.
We can specify this projection Uri in the Backend logic of the filter box. Simply click on the filter box > Properties> Command Execution > Database Option : IFS Projection > add the projection as below > ‘Done’ button > Save Page.
Figure 13 : Specifying a Projection
Back End Logic: IFS_BASE :main/ifsapplications/projection/v1/ActiveWorkOrdersHandling.svc/ActiveSeparateSet?$select= WoN o &$orderby=WoNo
If we look at this projection Uri, notice that the ‘IFS_BASE’ keyword is used at the beginning. This is a must as it will get replaced by your domain name on app execution. The response parameter of the projection, ‘WoNo’ is used as the Binding Value and Binding Text of the filter box so that we can list and select the Work Order nos.
Next, we will add a button to execute a search using the selected work order no of the filter box and get its details. We will need a projection for this as well, one searching for the work order no.
Figure 14 : Using Binding Variables in Projection
The ‘&WorkOrderID ’ highlighted here refers to the binding name of the filter box. Using the ‘ & ’ we can refer to any binding variable, page parameter or even a projection response parameter in the app. In this case, it’ll use the value of the filter box to search for the work order and get its results after clicking the button.
Afterwards, we can add the rest of the controls including display labels and a few more buttons to complete this page. The labels will show the results called from the search work order projection, using the projection’s response parameters for their Value texts (eg.- ‘OrgCode’ returned from the search button’s projection).
Figure 15 : The Completed Page
Create Work Order
The page will allow us to create a new work order. Once we fill all the details and submit, it’ll give us the new work order no and work task no. Below is the completed page. Notice first that we have used a projection call in the Back End Logic of the Page properties here. This is used to get some initialization data for the page tools.
Figure 16 : How Projections Can Be Used in Page Backend Logic
Let’s turn our attention to the ‘Create Work Order’ button here. You can see below that we’ve specified 2 projections there. And there’s a parameter called ‘HttpMethod’ given in the bracket of the 1st projection followed by some more parameters. We will investigate these now.
Figure 17 : Multiple Projection Execution and Request Body Specification
Back End Logic of the ‘Create Work Order’ button:
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/ActiveSeparateSet( HttpMethod = POST ,RegDate=&RegDate,ErrDescr=&ErrorDesc,ReportedBy=&UserId,PriorityId=&PriorityId,OrgCode=&OrgCod e,WorkTypeId=&WorkTypeId,MchCode=&MchCode,MchCodeContract=&ObjectSite,Contract=&Contract) IFS_BASE:main/ifsapplications/projection/v1/WorkTasksHandling.svc/JtTaskSet?$filter=(WoNo%20eq%20 &Wo rkOrderNumber )&$select=WoNo,TaskSeq
If we check in the IFS projection specification, this ‘HttpMethod’ parameter and the rest of the parameters that follows it are not part of the ‘ActiveSeparateSet’ POST projection Uri. These are added here so that we can specify the projection type and Request body of the projection. They should be specified in the 1 st bracket after the request parameters (if there are any) in case there are multiple brackets in the Uri.
If the ‘HttpMethod’ parameter is not explicitly specified, the projection will be treated by default as a GET projection. If this parameter is specified, the parameters that follows it (eg.- RegDate) will be considered as the request body parameters. There’s also room for an additional consideration for request headers which we will look at in a later app page.
You can also see that we are executing 2 projections sequentially here. The ‘&WorkOrderNumber ’ parameter is returned from the response of the 1st projection, and we are using it to additionally get the new Task no of the WO in the 2nd projection. By placing projections in new lines, we can specify multiple projections.
Work Tasks
After searching or creating a work order, we can create Work tasks for it. From this page, we can also navigate to Attachments, Work step, Resource, Material, Time reports and Measurements for object of the Work task.
Figure 18 : Work Task Page
Back End Logic of the ‘Create work task’ button:
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/ActiveSeparateSet(WoNo=&Wo No, HttpMethod =POST,WoNo =<&WoNo>, Site=&Contract,Description=&WTDescription,OrganizationSite=&Con tract,OrganizationId=&OrgCode,ReportedConnectionType=Equipment,ReportedObjConnLuName=EquipmentO bject,ReportedObjConnRowkey=&ReportedObjConnRowkey)/WorkTaskeArray
Looking at the above projection, you will notice first that the ‘ HttpMethod’ parameter is written after the projection request parameter (WoNo). This is in keeping with the standard of placing these parameters as mentioned before and observe that the request body parameter which follows it also called ‘WoNo. These are 2 different parameters of different types and having this distinction in the Uri allows us flexibility to pass all the necessary parameters.
Secondly note the <&WoNo> binding here. The ‘ <> ’ surrounding the binding variable denotes that its corresponding request body parameter’s data type (WoNo) is a number (int/decimals) and that it should be treated as such in projection execution and not as a string. This is important as otherwise the projection execution would fail for number parameters in the request body.
Check in Attachments
We can check in attachment files to the work task using the Attachment Button.
Figure 19 : Check-in Attachments Page
View and Delete Attachments
After checking in attachments, we can view them using an Attachment panel. The view attachment projection url of the panel is kept in Addovation Cloud in a text file which is editable ( GetAttachment_Cloud.txt ).
Figure 20 : Attachment Panel
Let’s look at the Delete attachment button of the page,
Figure 21 : Specifying Request Headers
Back End Logic of the ‘Delete attachment’ button:
IFS_BASE:main/ifsapplications/projection/v1/DocumentRevisionHandling.svc/DocReferenceObjectSet(LuName ='JtTask',KeyRef='TASK_SEQ%3D&TaskSeq%5E',DocClass='TEST',DocNo='&DOC_NO',DocSheet='1',DocRev='A1', HttpMethod=DELETE, HttpHeaders =true,If-Match=) IFS_BASE:main/ifsapplications/projection/v1/DocumentRevisionHandling.svc/DeleteFile(HttpMethod=POST,Do cClass=TEST,DocNo=&DOC_NO,DocSheet=1,DocRev=A1,DocType=ORIGINAL) IFS_BASE:main/ifsapplications/projection/v1/DocumentRevisionHandling.svc/PromoteObsolete(HttpMethod=P OST,DocClass=TEST,DocNo=&DOC_NO,DocSheet=1,DocRev=A1,Option=null) IFS_BASE:main/ifsapplications/projection/v1/DocumentRevisionHandling.svc/DocIssueSet(DocClass='TEST',Doc No='&DOC_NO',DocSheet='1',DocRev='A1',HttpMethod=DELETE, HttpHeaders =true,If-Match=)
Notice the ‘ HttpHeaders’ parameters. This comes after request body parameters (if any) and is specified when we want to include request header parameters in the uri. The value should be set to ‘ true ’ if we are to include these header parameters. The respective header parameters are specified after the ‘HttpHeaders’ parameter (eg.- ‘If-Match’ in above). These are specified in the respective IFS projections’ specifications. As with request body parameters, these should also be specified in the 1st backet after the relevant request parameters (if any).
Work Steps
We can create works steps, add remarks, set step as done and reopen the step for the work task using this page.
Figure 22 : Work Steps Page
Resources
We can create a resource line for the work task using this page.
Figure 23 : Resources Page
Time Reports
Using this page, we can report time for the work task. Let’s have a look at the ‘ResourceId’ filter box which is used to pick the reporting username.
Figure 24 : Conditional Statements for Projections
Back End Logic of the ‘ResourceId’ filter box:
IF(&OrgCode==10) BEGIN IFS_BASE:main/ifsapplications/projection/v1/ResourcesHandling.svc/ResourceSet?$filter=((startswith(Resourc eId%2C%27&UserId%27)))&$select=ResourceParentSeqsText,Parents END IF(&ResourceParentSeqsText==63) BEGIN IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/PersonIdLovFunction1(ResourceGroup='& Parents',OrganizationSite='&Contract',OrganizationId='&OrgCode',Company='&Company',Contract=null,Resour ceGroupSeq=&ResourceParentSeqsText) END IF(&ResourceParentSeqsText != 64) BEGIN IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/PersonIdLovFunction2(ResourceGroup='& Parents',OrganizationSite='&Contract',OrganizationId='&OrgCode',Company='&Company',Contract=null,Resour ceGroupSeq=&ResourceParentSeqsText) END ELSE BEGIN IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/PersonIdLovFunction(ResourceGroup='&P arents',OrganizationSite='&Contract',OrganizationId='&OrgCode',Company='&Company',Contract=null,Resourc eGroupSeq=&ResourceParentSeqsText) END
As can be seen, we have used conditional statements to select and execute projections here. ‘ IF() ’ and ‘ ELSE ’ statements are supported along with ‘ == ’ and ‘ != ’ operators. We must use ‘ BEGIN ’ and ‘ END ’ keywords to constrain the conditions and there can be multiple projections in between these keywords as well. We can use any binding variable, page parameter or a projection response parameter in these conditional statements as usual.
In the above example, we have checked the ‘OrgCode’ parameter and retrieved the resource info only if it matches an expected value. Thereafter, we have checked the ‘ResourceParentSeqsText’ parameter returned from the 1st projection (if any) with a set of expected/unexpected values and is looking to execute the correct load resources projection at the end within the ‘ELSE’ statement when it fails to match the unexpected values.
Measurements
With this page we can update the Measurements for objects of the work task. We have used a Number box which uses decimals and a Date picker for the date.
Figure 25 : Number Box
Figure 26 : Specification of Decimals with ‘<>’
Test App
Demo Video
You can watch the “Service Management” test app in action from the following link, it’ll be helpful to watch it as a companion guide when reading section 3.3.2: https://www.youtube.com/watch?v=xDMPzA1siFM
Test Steps
Now it is time to verify the results in the app, open Addovation Go and select the relevant Cloud URL and enter the Cloud system id we created. The Username and Password fields will automatically hide for IFS Cloud system ids. Press Login:
Figure 27 : Logging Into IFS Cloud
You will be greeted with the following login screen from your IFS domain. Select your relevant SSO option or enter your credentials and click Log in:
Figure 28 : Logging into IFS
You will get the app list, select the app you created (Service Management):
Figure 29 : App List
You will see your Work order home page. From here, you can search for Work order no, click Search work order and see its details:
Figure 30 : Work Order Home Page
Afterwards click on ‘Create new work order’ button and you will see your created page to create new work orders. Fill th form and select the Create Work Order button. Given below is a side-by-side comparison of the created work order data from the app and checking them from IFS Aurena. You should see that they are identical.
Figure 31 : Create Work Order Page in Action
We will now see the Work Tasks page. We will create a new Work task and you can see it reflected on the IFS side.
Figure 32 : Work Task Created
Click ‘Attachments’. Add your attachments and click on ‘Check in attachments’. Verify them on Aurena.
Figure 33 : Check-in Attachments
Figure 34 : Open and Verify Attachments in IFS
`Click on ‘View/delete attachments’. After viewing the attachments, you can try deleting one. Enter the IFS doc no and click on ‘Delete attachment’. Then verify the deletion in IFS.
Figure 35 : Deleting an Attachment
Figure 36 : Deletion Verified
Go back and select ‘Work Step’. Press Create work step and see the new Work step no returned, check from IFS.
Figure 37 : Work Step Created
We can then add a remark, mark the work step as done and reopen it. See below.
Figure 38 : Work Step Remark Added
Figure 39 : Work Step Status Set as Done
Figure 40 : Reopened Work Step
Go back and select ‘Resource’. You can create a resource and verify it in IFS.
Figure 41 : Creating a Resource
Go back and select ‘Material’. You can enter a Quantity required (Plan quantity) and a material will get created with that quantity.
Figure 42 : Creating a Material
We can then release the Work task. This is required to go forward to the Time Reports and Measurement pages.
Figure 43 : Releasing Work Task
Thereafter we can issue the material (which was 5) and then unissued some quantity (2) from it. Then the final quantity issued will get reduced to 3.
Figure 44 : Issuing Quantity
Figure 45 : Unissued Material
Go back and select ‘Time reports’. You can report time using duration of hours and resource ID (user).
Figure 46 : Reporting Time and Verifying from IFS
Go back and select ‘Measurements for object’. You can update the reading value for the task object and verify it.
Figure 47 : Updating the Measurement for Task Object Value and verifying it from IFS
Projection usage standards and used projections list
Projection usage standards
{{USER}} – replace upn from backend
<&WoNo> - for int and decimals
(request parameters list, HttpMethod=POST, request body parameters, HttpHeaders=TRUE, request header parameters) o WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq,HttpMethod=POST, xxxxx, HttpHeaders=TRUE,If- Match=*)/WorkTaskStepsArray(TaskSeq=&TaskSeq,TaskStepSeq=&TaskStepSeq)/IfsApp.Wor kTaskHandling.JtTaskStep_InComplete
Multiple projection calls – Return from 1st call as input for 2nd call o ResourcesHandling.svc/ResourceSet?$filter=((startswith(ResourceId%2C%27&UserId%27)))& $select=ResourceParentSeqsText,Parents o WorkTaskHandling.svc/PersonIdLovFunction(ResourceGroup='&Parents',OrganizationSite='& Contract',OrganizationId='&MaintOrgCode',Company='&Company',Contract=null,ResourceGr oupSeq=&ResourceParentSeqsText)
Attachment panel view url is read from Addo Cloud -> GetAttachment_Cloud.txt
Conditional statements for projections in backend logic- can use IF() and ELSE to check projection/app parameters when executing projections. Supported operators are == and !=. Must use BEGIN and END keywords to scope the conditions o IF(&OrgCode==10)
BEGIN IFS_BASE:main/ifsapplications/projection/v1/ResourcesHandling.svc/ResourceSet?$filter=((st artswith(ResourceId%2C%27&UserId%27)))&$select=ResourceParentSeqsText,Parents END IF(&ResourceParentSeqsText==63) BEGIN IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/PersonIdLovFunction1(R esourceGroup='&Parents',OrganizationSite='&Contract',OrganizationId='&OrgCode',Company ='&Company',Contract=null,ResourceGroupSeq=&ResourceParentSeqsText) END IF(&ResourceParentSeqsText!=64) BEGIN IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/PersonIdLovFunction2(R esourceGroup='&Parents',OrganizationSite='&Contract',OrganizationId='&OrgCode',Company ='&Company',Contract=null,ResourceGroupSeq=&ResourceParentSeqsText) END ELSE BEGIN IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/PersonIdLovFunction(Re sourceGroup='&Parents',OrganizationSite='&Contract',OrganizationId='&OrgCode',Company= '&Company',Contract=null,ResourceGroupSeq=&ResourceParentSeqsText) END
Used projections list
Work orders list
IFS_BASE:main/ifsapplications/projection/v1/ ActiveWorkOrdersHandling.svc/ActiveSeparateSet ?$select=Wo No&$orderby=WoNo
Work order fetch
IFS_BASE:main/ifsapplications/projection/v1/ActiveWorkOrdersHandling.svc/ActiveSeparateSet?$filter=(WoNo %20eq%20 &WorkOrderId )&$select=OrgCode,Contract,MchCodeContract,WorkTypeId,PriorityId,MchCode,Mc hCodeDescription,Company
User information
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/ActiveSeparateSet/IfsApp.Prepar eWorkOrderHandling.ActiveSeparate_Default()?$select=RegDate, ReportedBy ,Contract,Company
IFS_BASE:main/ifsapplications/projection/v1/UserSettings.svc/CurrentPerson?$select=PersonId
Maintenance organization codes
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/Reference_OrgCodeAllowedSiteL ov1?$filter=(Contract%20eq%20%27&Contract%27)&$select=OrgCode
Work types
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/Reference_WorkType
Priority
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/Reference_MaintenancePriority
MCH codes
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/MaintenanceObjectLovFunction( ConnectionType=IfsApp.PrepareWorkOrderHandling.MaintConnectionType'Equipment')?$filter=(Contract%20e q%20%27&ObjectSite%27)&$select=MchCode,MchName
Create WO
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/ActiveSeparateSet( HttpMethod= POST ,RegDate=&RegDate,ErrDescr=&ErrorDesc,ReportedBy=&UserId,PriorityId=&PriorityId,OrgCode=&OrgCod e,WorkTypeId=&WorkTypeId,MchCode=&MchCode,MchCodeContract=&ObjectSite,Contract=&Contract)
Create work order- For custom projections-
User information - upn
IFS_BASE:int/ifsapplications/projection/v1/ MobileActionIFSCloudHandling.svc/GetUserInfo (FuncUser=' {{USER }} ')
Work types
IFS_BASE:int/ifsapplications/projection/v1/MobileActionIFSCloudHandling.svc/GetWorkTypes(FuncUser='{{USE R}}')
Priority
IFS_BASE:int/ifsapplications/projection/v1/MobileActionIFSCloudHandling.svc/GetPriority(FuncUser='{{USER}}')
MCH codes
IFS_BASE:int/ifsapplications/projection/v1/MobileActionIFSCloudHandling.svc/GetMchTypes(FuncUser='{{USER }}',Contract='&ObjectSite')
Create WO
IFS_BASE:int/ifsapplications/projection/v1/MobileActionIFSCloudHandling.svc/CreateWorkOrder( HttpMethod =POST ,FuncUser=&UserId, WorkTypeId=&WorkTypeId, PriorityId=&PrioId, ErrorDesc=&ErrorDesc, MaintOrgCode=&MaintOrgCode, Contract=&Contract, Company=&Company, MchCode=&MchCode)
Work tasks
IFS_BASE:main/ifsapplications/projection/v1/WorkTasksHandling.svc/JtTaskSet?$filter=(WoNo%20eq%20&Wo rkOrderNumber)&$select=WoNo,TaskSeq
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/ActiveSeparateSet(WoNo=&Wor kOrderId)/WorkTaskeArray?$select=ReportedObjConnRowkey
Create work task
IFS_BASE:main/ifsapplications/projection/v1/PrepareWorkOrderHandling.svc/ActiveSeparateSet(WoNo=&Wo No,HttpMethod=POST,WoNo= <&WoNo> ,Site=&Contract,Description=&WTDescription,OrganizationSite=&Con tract,OrganizationId=&OrgCode,ReportedConnectionType=Equipment,ReportedObjConnLuName=EquipmentO bject,ReportedObjConnRowkey=&ReportedObjConnRowkey)/WorkTaskeArray
Attachments
IFS_BASE:main/ifsapplications/projection/v1/DocReferenceObjectAttachmentHandling.svc/DocReferenceObjec tResultSetOrderBy(LuName='JtTask',KeyRef='TASK_SEQ%3D&TaskSeq%5E',OrderBy=null)?$top=10&$orderby= DocNo
Delete attachment
IFS_BASE:main/ifsapplications/projection/v1/DocumentRevisionHandling.svc/DocReferenceObjectSet(LuName ='JtTask',KeyRef='TASK_SEQ%3D&TaskSeq%5E',DocClass='TEST',DocNo='&DOC_NO',DocSheet='1',DocRev='A1', HttpMethod=DELETE ,HttpHeaders=true,If-Match=*) IFS_BASE:main/ifsapplications/projection/v1/DocumentRevisionHandling.svc/DeleteFile(HttpMethod=POST,Do cClass=TEST,DocNo=&DOC_NO,DocSheet=1,DocRev=A1,DocType=ORIGINAL)
IFS_BASE:main/ifsapplications/projection/v1/DocumentRevisionHandling.svc/PromoteObsolete(HttpMethod=P OST,DocClass=TEST,DocNo=&DOC_NO,DocSheet=1,DocRev=A1,Option=null)
IFS_BASE:main/ifsapplications/projection/v1/DocumentRevisionHandling.svc/DocIssueSet(DocClass='TEST',Doc No='&DOC_NO',DocSheet='1',DocRev='A1',HttpMethod=DELETE,HttpHeaders=true,If-Match=*)
Work steps
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/GetRowkeyByObjectData(HttpMethod=P OST,ConnectionType=Equipment,ObjectId=&MchCode)
Create work step
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq,HttpMethod =POST,TaskSeq=<&TaskSeq>,Description=&WSDescription,ObjectConnectionType=&OCType,ObjectConnection LuName=EquipmentObject,ObjectConnectionRowkey=&ConnRowKey)/WorkTaskStepsArray
Add remark
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq, HttpMetho d=PATCH ,Remark=&StepRemark)/WorkTaskStepsArray(TaskSeq=&TaskSeq,TaskStepSeq=&TaskStepSeq)
Set step as done
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq,HttpMethod =POST, HttpHeaders=TRUE ,If- Match=*)/WorkTaskStepsArray(TaskSeq=&TaskSeq,TaskStepSeq=&TaskStepSeq)/IfsApp.WorkTaskHandling.JtT askStep_Complete
Reopen step
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq,HttpMethod =POST,HttpHeaders=TRUE,If- Match=*)/WorkTaskStepsArray(TaskSeq=&TaskSeq,TaskStepSeq=&TaskStepSeq)/IfsApp.WorkTaskHandling.JtT askStep_InComplete
Create resource
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq,HttpMethod =POST,TaskSeq=<&TaskSeq>,DemandType=&Person,ResourceGroup=&Contract)/WorkTaskResourceArray
Create material
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq,HttpMethod =POST,TaskSeq=<&TaskSeq>,PartNo=&PartNo,SpareContract=&Contract,PlanQty=<&Qty>)/MaintMaterialRequ isitionArray
Release work task
IFS_BASE:main/ifsapplications/projection/v1/WorkTasksHandling.svc/JtTaskSet(TaskSeq=&TaskSeq,HttpMetho d=POST,HttpHeaders=TRUE,If-Match=*)/IfsApp.WorkTasksHandling.JtTask_Release
Issue material
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/HandleAutoReserveAndIssueMaterial(Htt pMethod=POST,MaintMatOrderNo=<&MaintMaterialOrderNo>,LineItemNo=<&LineItemNo>,Type=2,Contract= &Contract)
Unissue material
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskUnissueMaterialAssistantHandling.svc/UnisuueMaterial VirtualSet(HttpMethod=POST,TaskSeq=<&TaskSeq>)
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskUnissueMaterialAssistantHandling.svc/UnisuueMaterial VirtualSet(Objkey='&Objkey')/WoUnissArray
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskUnissueMaterialAssistantHandling.svc/UnisuueMaterial VirtualSet(Objkey='&ParentObjkey',HttpMethod=PATCH,QuantityUnissued=<&UIQty>)/WoUnissArray(Objkey=' &Objkey')
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskUnissueMaterialAssistantHandling.svc/UnisuueMaterial VirtualSet(Objkey='&ParentObjkey',HttpMethod=POST)/IfsApp.WorkTaskUnissueMaterialAssistantHandling.Un isuueMaterialVirtual_Finish
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskUnissueMaterialAssistantHandling.svc/UnisuueMaterial VirtualSet(Objkey='&ParentObjkey',HttpMethod=POST)/IfsApp.WorkTaskUnissueMaterialAssistantHandling.Un isuueMaterialVirtual_CleanupVirtualEntity
Time reports - Resource IDs
IFS_BASE:main/ifsapplications/projection/v1/ResourcesHandling.svc/ResourceSet?$filter=((startswith(Resourc eId%2C%27&UserId%27)))&$select=ResourceParentSeqsText,Parents
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/PersonIdLovFunction(ResourceGroup='&P arents',OrganizationSite='&Contract',OrganizationId='&MaintOrgCode',Company='&Company',Contract=null,Re sourceGroupSeq=&ResourceParentSeqsText)
Create time report
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq)/WorkTaskT ransactionArray/IfsApp.WorkTaskHandling.JtTaskTransaction_Default()?$select=TransactionDate
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/GetResourceInfo(DemandType=IfsApp.W orkTaskHandling.JtTaskDemandType'PERSON',ResourceId='&ResourceId',Company='&Company',TaskSeq=&Tas kSeq,OrganizationId='&MaintOrgCode',OrganizationSite='&Contract')
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq,HttpMethod =POST,TransactionType=Personnel,TaskSeq=<&TaskSeq>,OrganizationSite=&Contract,TransactionDate=&Trans actionDate,Quantity=<&Quantity>,ResourceSeq=<&ResourceSeq>)/WorkTaskTransactionArray
Measurements
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=1017)/MeasurementV aluesArray?$select=RecordedValue
Update measurement
IFS_BASE:main/ifsapplications/projection/v1/WorkTaskHandling.svc/JtTaskSet(TaskSeq=&TaskSeq,HttpMethod =PATCH,NewRecordedValue=<&ReadingValue>,NewRegDate=&ReadingDate)/MeasurementValuesArray(TestP ntSeq=&TestPntSeq,ParameterCode='&ParameterCode')