Jump to content

Gareth Cantrell

Hornbill Users
  • Posts

    160
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by Gareth Cantrell

  1. @David Hall I shared your update internally, and received this feedback from one of our users (with an attached screenshot):

    "This looks like they're just overriding the style for the summary so it doesn't inherit the link colouring.

    The root issue is that they're not changing the link colouring in dark mode to use an adequately contrasting colour. This doesn't really fix that.

    WCAG accessibility standards specify a minimum contrast ratio between text and background of 4.5:1 but Edge recommends 7:1 for "AAA" accessibility.
    Hornbill's links over the "new" background highlight in dark mode is about 3.63:1.
    Desaturating the link colour would probably be enough. A link colour of #9bd3ff would give a ratio of 7:1 over the highlighted background colour, the while retaining a differentiation for links:"

    image.png.874982d2e5d54bf6a1b13038cb73d7a1.png

     

  2. After many weeks I have finally figured out the answer to my original question, which I will document here for future reference:

    Given a list of items in a JSON structure, using the example above of .Object.FieldDataItems, you can match and retrieve a value using the following Go template:

    {{if .Object.FieldDataItems}}                       // only continue if this list is non-empty
        {{range $key,$value := .Object.FieldDataItems}} // iterate the list - $key is a zero-based index and $value is the object at index $key
            {{if eq $value.FieldId "3"}}                // check if this is the object we want
                {{$value.Value}}                        // get the attribute we're interested in
            {{end}}
        {{end}}
    {{end}}

    In practice, this should be on a single line with escaped quotes in order to not break the JSON configuration file:

    "h_field": "{{if .Object.FieldDataItems}}{{range $key,$value := .Object.FieldDataItems}}{{if eq $value.FieldId \"3\"}}{{$value.Value}}{{end}}{{end}}{{end}}"

     

  3. Just had another failure on an Unlock action, trying to unlock the "Resolve" tab:

    Status : Failed
    Last Updated On : 10-05-2024 15:06:52
    Xmlmc method invocation failed for BPM invocation node '2432dabc-0f53-1070-4eb6-518b889d6539/flowcode-4d3507ed': <methodCallResult status="fail"> <state> <code>0207</code> <service>apps</service> <operation>lockActions</operation> <error>/apps/com.hornbill.core/flowcode/fc_modules/xmlmc.js(189): error X1001: Uncaught EspMethodCall::invoke: Operation[data::entityUpdateRecord] Superfluous entity record update detected for &apos;Requests&apos;. The primary record was updated but no data changes were applied.</error> <flowcodeError> <where>Execute</where> <filename>/apps/com.hornbill.core/flowcode/fc_modules/xmlmc.js</filename> <lineNumber>189</lineNumber> <columnPos>20</columnPos> <message>Uncaught EspMethodCall::invoke: Operation[data::entityUpdateRecord] Superfluous entity record update detected for &apos;Requests&apos;. The primary record was updated but no data changes were applied.</message> <errorCode>1001</errorCode> <stackTrace>invoke at /apps/com.hornbill.core/flowcode/fc_modules/xmlmc.js(189:21)</stackTrace> <stackTrace>entityUpdateRecord at /apps/com.hornbill.core/flowcode/fc_modules/xmlmc.js(614:54)</stackTrace> <stackTrace>bpm_lockActions at /apps/com.hornbill.servicemanager/entities/Requests/fc_modules/requests_helper.js(11419:24)</stackTrace> <stackTrace>at /apps/com.hornbill.servicemanager/entities/Requests/fc_bpm/lockActions.js(6:30)</stackTrace> </flowcodeError> </state> </methodCallResult>

    Its not happening consistently, but enough to cause complaints from our users.

  4. When selecting which fields to display in an asset type, we'd like the ability to make certain fields read-only.

    This is especially the case where we know that those fields will be populated from an external discovery tool and we'd rather not have users attempting to make changes to data which should not be user-editable.

    • Like 1
  5. We'd like to see certain fields within an asset gain the ability to use a data query or simple list (or remain free text) so that users could select a value, rather than using free text input.

    The fields which we see making the most sense (as these are not usually populated via discovery tools) are:

    • Company (from organisational structure or simple list)
    • Department (from organisational structure or simple list)
    • Cost Centre (from organisational structure or simple list)
    • Building (simple list)
    • Floor (simple list)
    • Room (simple list)
    • Rack (simple list)
    • Supplier ID (from Supplier Manager module)
    • Supplier Contract (from Supplier Manager module)
    • Like 1
  6. 1 hour ago, Berto2002 said:

     

    @Gareth Cantrell do you have a solution to this? I was thinking to use the Clean Utility (link from here Managing Instance Storage Usage - Hornbill) but that's about removing Requests not just the BPMs.

     

    @Berto2002 right now I have a slightly manual process to handle this:

    I have a saved query that lists all orphaned BPM instances; I then download the results into a CSV file and then have a Python script that loads the CSV and calls the bpm:processDelete API for each instance.

    The query I use is: 

    SELECT bpm.h_id, bpm.h_reference 
    FROM h_bpm_instance bpm
    WHERE NOT EXISTS (
        SELECT req.h_bpm_id
        FROM h_itsm_requests req
        WHERE bpm.h_id = req.h_bpm_id
    )
    AND bpm.h_id LIKE 'BPM%'

    ... however, you have got me thinking about how I could use the HTTP cloud automation node to do this automatically ... 🤔

  7. 53 minutes ago, Deen said:

    @Gareth Cantrell Does it work in other browsers such as Edge?  If that does work you should try completely slushing your Chrome browser cache to see if that corrects the problem.

    I am using Edge; I switched to Safari and it works fine.
    My main problem is that I cannot expect every user in the organisation to change browser or clear their caches to fix a single app - that will cause more headache than is reasonable.

    EDIT: I used the developer console in Edge to do a clear-cache and hard refresh and its working now - but my above point stands regarding the rest of my user base; asking IT to enable developer tools to reset one app is hard enough, let alone trying to get non-IT users to attempt this.

  8. We have been getting numerous complaints this morning that users are struggling to see the on-hold calls in dark mode.

    Our webapp.view.ITSM.serviceDesk.requests.list.onHoldFontStyle is set to "None" and making changes has no impact on the dark mode at all.

    • Like 1
  9. Is there a history of search terms in the portal that is stored somewhere?

    I came across the table: h_sm_portal_search_history, however it seems it stopped recording data over a year ago (which in our case, was before we went live).

    We would really like to see what users are searching for in order to improve our catalogue and knowledge base, however without this data, we cannot even begin to analyse anything.

    • Like 1
  10. 1 hour ago, Berto2002 said:

    @Gareth Cantrell that is very useful to know and it makes sense as a design. So the only storage issue we may therefore have is the 245 versions of our generic workflow 🙂

    I have a handy little SQL query that can give you a rough idea of storage requirements for workflows (incl. autotasks) if you have access to the Database Direct tool:

    SELECT count(*) AS "amount", 
            "modified instances" as "type",
            sum(length(h_xml))/1048576 AS "size_mb"
    FROM h_bpm_instance
    WHERE h_xml is not null
    UNION
    SELECT count(*),
            "workflows (inc. all versions)",
            sum(length(h_xml))/1048576
    FROM h_bpm_processes

     

    • Thanks 1
  11. @Berto2002 from my perusals through the system, an instance of the workflow is not created for each request, rather, a link to the specific workflow version is stored in the bpm_instance table.

    If you make modifications to an in-process workflow instance, only then is a copy of the original version taken from the bpm_processes table and the modified workflow stored in the bpm_instance table.

    So, the only storage is each version of your workflow in bpm_processes and any modifications made to a live instance.

    For data retention purposes, I don't believe I've seen any option to delete historic versions of a workflow.

×
×
  • Create New...