Alloy May 2022 Update #2

As an extra special treat, this month contains not one, but two Alloy updates! As such, we are really excited to announce the second Alloy update for May. Here are some of the highlights of this release.


Trigger Workflow from Items

We have had the ability to create manually triggered workflows for a few months now, this feature extends that feature by providing the option to trigger those workflows from an item.

This would allow you to create custom complex actions for particular designs and for people to carry them out easily through a single selection.

A new option will appear in the action menu for an item labelled Trigger Workflow. Clicking this will bring up a list of Workflows that are applicable to this item. Selecting from this list will trigger that Workflow.

When setting up these Workflows, you may only want some users to be able to trigger them, you can control this by setting Read permissions for those users. Any user who does not have Read permissions will not be able to trigger it.

We've been looking forward to this feature and are really excited to see what creative uses for this everyone produces. For uses such as completing all jobs on an item, creating an invoice or emailing a supervisor, the possibilities are endless.

Workflow Emails - Multiple Recipients

Previously, whenever you wanted your Workflow to send emails to multiple email addresses, you would need to create a separate node for each recipient. This update will now allow for multiple recipients to be listed under the Email To field. 

Just keep in mind that each recipient address will need to be delimited using a comma (,). When a Workflow is triggered with this set up correctly, an identical email will be sent to each of the addresses listed.

AQS Builder Relative Dates

Workflows have been able to define relative Dates and Times for a long time, but this useful piece of functionality has, until now, been missing from the AQS builder.

You can now use a relative date time as a comparator to other compatible attributes or values. This is particularly useful when you are defining saved queries as you no longer need to update any date values that are filtering your data to a specific time period. For example, you can create a saved query to display all Jobs raised within the last two weeks. 

The point in time from which the relative date time is taken from can also be configured to the following options:

  • Now
  • Start of Today
  • End of Today
  • Last Monday
  • Start of the Week
  • Start of the Month

Custom Reports on Items

An improvement has been made to the Reports pane. Due to a slight difference in how Standard and Custom Reports are linked to items, the Reports pane used to only show Standard Reports. This has now been changed to include any Custom Reports that have been linked.

To ensure that reports are linked to the Item they report on, when creating an Item Data Source in the Report Builder, be sure to check the option to Link report to item?


Task Assignment Current Date

We have been hearing some great feedback recently about the Task Assignment view, we also have a lot of great suggestions on how to make it a bit more user friendly. One of those changes present in this update is a small marker highlighting the current date, hopefully making it a bit easier to orientate where you are on the planner. 

And that's a wrap for this update! The full changelog is here. If you have any feedback on anything listed above, do feel free to send it to us using the field at the bottom of this post. If you have a question, there's a whole community of people you can ask about it here:

 Alloy Community


Export Endpoint Now Requires Discriminator in Request Model

Overview

An option to export data as either a CSV or ESRI SHP file was introduced to the API in v2.32. This choice was added to the request model for the Data Export endpoint via a discriminator. When this was initially introduced, the discriminator was optional and if not supplied, would default to CSV. Since v2.35 the discriminator is now required when making calls to this endpoint.

Who does this affect?

This change affects API users of the Export endpoint. Web users are not affected.

Details

The following endpoint:

POST /api/export

now requires a value passed for discriminator which can currently take one of two options:

  • ShapefileExportWebRequestModel requests made with this model will return files as SHP.
  • CsvExportWebRequestModel requests made with this model will return data as a CSV. 

Not providing a value will now result in an error being returned.

Expected Release Date

This change was included as part of the v2.35 release of Alloy on 5th May 2022. We would like to apologise for any inconvenience this has caused.

Changes for Required Attributes on the Extended API

Overview

As part of ongoing improvements to the Extended API, we are changing the way we consider required attributes on creation of activities through the API. This change is being made to ensure consistency with other endpoints as to how what 'Required' means when considering attribute values being supplied to the API by the caller.

Who will be affected?

Any users of the Extended API who rely on the geometry of created activities being inferred from the parent Asset will be affected by this change.

Details

Currently, it is possible to create an activity such as a Job or Defect via the Extended API and not provide geometry despite the activity Design having the geometry marked as required since the geometry may be inferred from the parent Asset. This has created an inconsistency where required attributes are not actually required.  

In order to remedy this inconsistency, we are making a change to ensure that values for all required attributes are always supplied by the caller of the API. For simplicity, the end result will be:

Required means required 😀

For activities where geometry and possibly other attribute values are not supplied but computed by a service/backend process, these attributes should be marked as optional. This ensures data consistency in the event that the backend process is unable to compute an attribute value for any reason.

Avoiding a Breaking Change

As part of this change, we will be updating all activity designs, including custom designs where possible to mark the geometry as optional to ensure that any integrations that rely on the previous interpretation are not affected by this change in behaviour.

Expected Release Date

This change will be rolled out over multiple releases starting from the end of May 2022.

Alloy May 2022 Update

We're excited to announce this month's Alloy update! This release will be applied during the evening of May 5th. In this post, we'll have a look at the highlights included in this release. For a full list of all changes included in this release, have a look at the Alloy Changelog.

You can also discuss this post in the Alloy Community here: Alloy Community


New Item Audit Navigation

We're excited to present the new navigation feature we have added to Item Audit logs. This enhancement will allow you to quickly flick through the audit history of an item and see the before and after for the change side by side. 

We hope this will be a welcome change but let us know your thoughts in the comments.

Pre-populate Attributes During Permit Application

A change made in this release will improve the usability of the Street Manager Apply for Works process. Information already captured on the Job will automatically be pre-populated in the Permit Application. 

This includes details such as USRN, Works Location, Workstream, Works Description, Start and End Dates & Times and Permit Conditions.

Creation of Manual Trigger Workflows

Workflows have always been triggered through an action carried out on one or more items of a specified design or interface, or by a pre-determined schedule. This new feature allows for Workflows to be created that will be triggered through a manual process. Further enhancements will follow in later releases to allow more use of these manual triggers, including the ability to trigger them from an item directly. When creating the workflow, you will need to define a design or interface that will determine the root node of the workflow. In the future, when triggering a manual workflow, one or more items will need to be passed to the workflow through an AQS query.

Timestamped Photos

Photos taken through Alloy Mobile can now have the local date and time stamp burnt into them. This is particularly useful for evidencing Defects or the completion of Jobs. This is optional and can be found in the settings menu.

Link Attribute Picker

A new 'Selected' tab has been added to Alloy Mobile. This tab allows you to quickly filter the list by items that have already been selected, instead of having to scroll through long lists of unselected items. This feature is available on both Android and iOS.

Settings UI Update

Another change made in Alloy Mobile in this release is an update to the UI used in the settings menu. With the addition of more items in this menu, we have categorised the available options to make finding the setting you require a bit easier.


Alloy March 2022 Update

Welcome to the first release update through our new in-app notifications widget! This month's release holds a bunch of great new features and updates. All these new features will be available in the evening of March 31st (GMT).

Discuss this post in the Alloy Community here: Alloy Community



Google Street View Stencil Control

A screenshot of the general tab of a streetlight, showing a Google StreetView Image of the Yotta Head Office

A new stencil control has been added in this release. It takes a geometry attribute as a parameter and displays an image of the respective area taken from Google Street View. Clicking the image will open a new tab and take you to the Google Street View application and navigate to the area displayed.

Error Message Suggested Articles

It's always frustrating running into errors, we hope with this new feature, we can make it easier to find answers to what's causing the issue.

The error message window has been updated to provide you with links to suggested articles on the Alloy Community site.

By the way, have you had a look at Community yet? 

Alloy Community

The error message will search community for any articles that include the supplied error code, sharing solutions others have found or official guidance from the Alloy team on how to resolve your issue. 

If you still need the full details of the error message response, simply click the code button in the top right of the message to view the full error message or click the bottom button to copy everything to the clipboard.

All the Data Explorer Tabs

Are you the type of person who loves to have all the tabs you need open and to be able to quickly change and switch between them? If so, we've made the Data Explorer much easier for you. A small but significant change in this update is the addition of a couple of scroll buttons in the top right hand corner, allowing you to scroll along the tab bar.

Clone Custom Reports

Ever created a great report, then realise you need to create another one that is almost identical apart from one small change? This new feature makes that simple to achieve. Custom Reports can now be cloned, creating another report with the same configuration but with a different name. This avoids having to re-create the second report from scratch to match the first.

SHP File Export

We're adding a new option when exporting data from the Data Explorer, not only can you get your data in a .csv file, but now you'll be able to get your data as a .shp file too. When exporting data, you'll now be presented with an extra option in the modal to select SHP file type.

The export will create a .zip file to contain the multiple files that are associated with this data type.

What about everything else?

With our change to this new format of celebrating our releases, you may be asking: "What about all the other changes you've made?" If you'd like to get a full list of all our changes in this release, do head over to our changelog.

Alloy Changelog

Welcome to Notifications

Welcome to the all new notifications section in Alloy. Here you will find highlights to showcase new features and updates coming in each new release.  We hope that this will help you get to most out your Alloy system. 

You can still access all announcements including API updates by visiting our announcements site at https://announcements.alloyapp.io.

If you have any feedback on this change or any other, we would love to hear from you so get in touch at product@weareyotta.com.

Discuss this post in the Alloy Community here: https://community.alloyapp.io/c/announcements/


Updated API Rate Limits

Overview

Following an internal review of the performance of the API, we are updating the API rate limits to separate limits per endpoint. 

Previously, a single API rate limit was defined as "sustained calls of over 100 requests per minute on any endpoint" and was controlled via direct disabling of the API key responsible. Following our recent announcement regarding API Rate Limit Responses, we will no longer disable API keys in this way. 

Who will be affected by this change?

This change will affect any users directly using the API. We've taken the precaution of monitoring usage across all customers over the last few months to understand if any will be affected by these changes. The handful of customers that are exceeding some of these limits have been approached directly so that they can resolve any issues before we roll out the changed limits. 

Details

We are moving from a single limit across all endpoints to separate limits by endpoint to better reflect the load placed on the system by each call. These limits have been set based on extensive performance tests and are designed to minimise the impact on API users. These changes will further improve the robustness of the system for all users. The limits are outlined in the table below and are with respect to a time period of 1 minute (60000ms):

MethodsEndpoint
Calls Limit 
POST
api/aqs/query
120
POST
api/aqs/join
120
POST
api/aqs/statistics
120
POST
api/bulk/generic
20
PUT 
POST 
DELETE
api/design
50
PUT
POST
DELETE
api/designInterface
50
*
api/file (See Note 1 below)
100
GET
api/item
300
GET
api/item-version
300
PUT
POST
DELETE
api/item
150
GET
api/item/*/graph
100
GET
api/item/*/parents
300
POST
api/item-log/item/*/reconstruct
100
GET
api/item-log/item/*
200
GET
api/item-log/design/*
200
GET
api/layer/*/*/*/*/network
2000
GET
api/layer/*/*/*/*/cluster
5000
GET
api/layer/*/*/*/*/basic
2000
*
api/route/*
50
GET
api/oauth-reply
100
POST
api/oauth-token-login
100
POST
api/sync
120
PUT
POST
DELETE
api/workflow
50
PUT
POST
DELETE
api/workflow/*/action
50
PUT
POST
DELETE
api/workflow-action-group
50
PUT
POST
DELETE
api/workflow-action-group/*/action
50
POST
api/(workflow|workflow-action-group)/*/action/parameters
10
*
api/(budget|change-component|defect|inspection|job|project|team|work-unit)
100
POST
api/extended/bulk
20

All other endpoints not specified above
1000

Note 1 - This exclude the api/file/bulk-download/{id}/file endpoint which starts a background task.

Note that for many endpoints, the call limit per minute will be increased - in some cases allowing up to 10 to 50 times more traffic. For those endpoints where the limit has been reduced to below the previous value of 100, the functions delivered by the endpoints are computationally heavier but with the expectation that these endpoints would also be used less frequently (e.g. workflows and bulk generic).

Expected Release Dates

Staging: 25th February  2022

Live: 31st March 2022

Specify an Aggregation Type for AQS Join Data

Overview

Following our previous announcement on the temporary change to the way AQS Join Query results are displayed in custom reports, we have now added an option to allow you to specify the aggregation behaviour via a setting on the table header in the report. Two options are available: TakeOne, which takes a single item from the possible results to display as an example or Count which will result the count of the linked results.

Who will this affect?

This change will affect anyone using the AQS Query Data source with join attributes within the Report Builder to build custom reports.

Details

We have now added support to set an aggregation type per data source header in custom reports.

This aggregation type can either be TakeOne or Count.

TakeOne will take the item attribute value of whatever first item the join attribute comes back with.

Count will set the total count of items returned by the join attribute and display it as "X Items".

This property is optional, if all the attributes along the join path have the max number of links set to one (max: 1) in their options, it will default to TakeOne, otherwise it defaults to Count. This is in order to replicate behaviour provided through Data Explorer. As these header properties can only be set once the attribute type is defined, it can only be defined on data source editing.  

Data Source Editing

PUT /api/custom-report/{customReportCode}/data-source/{code}

Prior to this change, editing an AQS Query data source would have been made using following the "EditDataSourceAqsQueryWebRequestModel" model.

This model has now been updated allowing you to specify an additional property called "headerSettings" which allows you to configure the headers further, as follows:

{
  "discriminator": "EditDataSourceAqsQueryWebRequestModel",
  "name": "All dogs",
  "required": false,
  "signature": "618146945b5b25015cf8d186",
  "dodiCode": "designs_dog_5f181f89f4f5bf0066f80812",
  "attributes": [],
  "joinAttributes": [],
  "headerSettings": [
    {
      "headerId": "myTakeOneHeaderId",
      "aggregationType": "TakeOne"
    },
    {
      "headerId": "myCountHeaderId",
      "aggregationType": "Count"
    }
  ]
}

The response model can still be in "EditDataSourceWebResponseModel", the change here being that the "headers" property found inside the "customReport" and "dataSources" properties, when the data source is of model "CustomReportAqsQueryDataSourceWebModel", will optionally contain an "aggregationType" property, highlighting the behaviour above.

Note that as part of this change, the default behaviour has been reverted to the Count behaviour mentioned above (which used to be default until v2.29.0 when it was temporarily change to TakeOne to avoid report failures as described here).

Example

Let's assume there is a project containing 4 job tasks. If the user would create a custom report using an AQS Query data source rooted on Projects and linking to Jobs via the Tasks Attribute (Project DS -> Tasks to Jobs DS -> Title). If a Table control was then added to the layout based on this data source, the display of the data in this table will change following this change. 

Take One

Using the TakeOne option, a single exemplar item is displayed e.g. JOB-9. Note that this is not necessarily the first item in the list and is dependant on the order returned by the system.

Count

Using the Count option, the number of linked items is displayed, for example:


Expected Release Date

13th January 2022

Option for Export Geometry Projection

Overview

We are adding an new option to the data Export endpoint which allow you to specify the projection to be used for Geometry data by providing the Proj4 string to use to convert over from WGS84 (Lat-Long)

Who does this affect?

This change will affect API users of the Export endpoint but will not modify the existing behaviour if the optional setting is not provided. 

Details

The following endpoint:

POST /api/export 

now accepts an optional string proj4 that may be used to convert geometry coordinates into the spatial reference system of your choice. This mirrors the optional Proj4 setting used during import.

Without the proj4 string, geometry is exported in WGS84 (Longitude, Latitude) coordinates.

There is a database of PROJ4 strings available for searching here https://epsg.io/

For example, for the UK British National Grid system, the Proj4 string is

+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs

Expected Release Date

13th January 2022

Access Control Based on Authentication Method

Overview

We are adding a new feature that will allow administrators to specify the specific method of authentication (such as Microsoft Online SSO) to use in order to access Customer Projects. 

Who does this affect?

This change will affect administrators who want to restrict their users to using a specified authentication method over the current choice of email/password or SSO options including Google and Microsoft. Note that these policies may only be configured using Alloy Forge so please contact the Support Team to change the way in which users access your project. 

Details

This change has introduced a new concept called "Customer Security Policy". In simple terms, this is an object contained in the Customer document that is meant to include information about customer choices in terms of security related "settings".

Currently the security policy only includes the accepted authentication method property. If set, a user can only create a customer session for a specific customer if that session is created through one of the accepted authentication methods. Normally a customer session is created by switching a master session to a customer session. This means the master session will need to have been created through one of the accepted authentication methods.

If the user utilises an authentication method not on the accepted list, an error message will be presented and the user returned to the logon screen to retry. 

The security policies may be set using the following Forge endpoints:

GET api/customer/{id}/security-policy - Gets the customer security policy for a specific customer

* PUT api/customer/{id}/security-policy - Edits the customer security policy for a specific customer

Expected Release Date

13th January 2022

Show Previous EntriesShow Previous Entries