Rally Software

 View Only
  • 1.  Basic Query to Find a Team Member Who Hasn't Logged In Recently

    Posted Feb 23, 2023 08:31 AM

    My query skills must be a bit rusty, but I am struggling. I've added the Custom List App to a Dashboard and I would like to see a list of Team Members of the current Project who haven't logged in in the last few days. 

    Every query I pull shows Users from another Hierarchy (maybe the top node). Any suggestions?



  • 2.  RE: Basic Query to Find a Team Member Who Hasn't Logged In Recently

    Posted Feb 27, 2023 07:58 PM

    I don't know how to construct a query that references the current project. The closest I've found so far is to construct a query containing the name of the project:
    Type: User
    Query: (TeamMemberships.Name contains "Prj A")




  • 3.  RE: Basic Query to Find a Team Member Who Hasn't Logged In Recently

    Broadcom Employee
    Posted Mar 01, 2023 03:19 PM

    I don't know if this will help you any but there was an app in the Rally Tech Services in GitHub I used to use. You need to be a project admin or workspace admin to run. Take a look at what they've done and know some tweaks may be required to get it working. I hope this helps.

    <!DOCTYPE html>
    <html>
    <head>
        <title>Bulk User Update Utility</title>
        <!--  (c) 2016 CA Technologies.  All Rights Reserved. -->
        <!--  Build Date: Mon Mar 06 2017 15:23:13 GMT-0700 (MST) -->
        
        <script type="text/javascript">
            var APP_BUILD_DATE = "Mon Mar 06 2017 15:23:13 GMT-0700 (MST)";
            var CHECKSUM = [%= checksum %];
        </script>
        
        <script type="text/javascript" src="/apps/2.1/sdk.js"></script>
    
        <script type="text/javascript">
            Rally.onReady(function() {
                
                
                   Rally.launchApp('bulk-user-update-app', {
                       name: 'Bulk User Update Utility'
                   });
            });
        </script>
        
        <style type="text/css">
    
    .app {
    }
    .tsinfolink {
        position:absolute;
        right:0px;
        width: 14px;
        height: 14px;
        border-radius: 7px;
        text-align: center;
        color: white;
        background: #C0C0C0;
        border-style: solid;
        border-width: 1px;
        margin-top: 25px;
        margin-right: 5px;
        cursor: pointer;
    }
    
    .x-border-layout-ct {
        background-color: #fff;
    }
    
    .permission-selected {
        background-color: #00a9e0;
        color: #fff;
        padding: 1px 5px 1px 5px;
        text-align:center;
        font-size: 11px;
        height: 15px;
        border-color: #00a9e0;
        border-radius: 2px;
        cursor:pointer;
    }
    .permission-not-selected {
        color: #00a9e0;
        background-color: #fff;
        padding: 0 5px 0 5px;
        text-align:center;
        border: solid;
        border-width: 1px;
        font-size: 11px;
        height: 15px;
        border-radius: 2px;
        cursor:pointer;
    }
    .team-member-yes {
        color: #3a874f;
        cursor:pointer;
    }
    .team-member-no{
        color: #888d8e;
        cursor:pointer;
    }
    
    
    .x-resizable-over {
        border-radius: 0px;
        box-shadow: none;
        top:0px;
        right: 0px!important;
        width: 100px;
    }
    
    .x-resizable-over .x-resizable-handle-east,
    .x-resizable-over .x-resizable-handle-north,
    .x-resizable-over .x-resizable-handle-northwest,
    .x-resizable-over .x-resizable-handle-northeast,
    .x-resizable-over .x-resizable-handle-west,
    .x-resizable-over .x-resizable-handle-south,
    .x-resizable-over .x-resizable-handle-southwest,
    .x-resizable-over .x-resizable-handle-southeast,
    .x-resizable-pinned .x-resizable-handle-north,
    .x-resizable-pinned .x-resizable-handle-northwest,
    .x-resizable-pinned .x-resizable-handle-east,
    .x-resizable-pinned .x-resizable-handle-south,
    .x-resizable-pinned .x-resizable-handle-southwest,
    .x-resizable-pinned .x-resizable-handle-southeast,
    .x-resizable-pinned .x-resizable-handle-northeast,
    .x-resizable-pinned .x-resizable-handle-west {
        background-image: none;
        cursor: col-resize;
        background-color:#f6f6f6;
    
    }
    
    .x-resizable-handle-west {
        width: 8px;
    }
    
    .view-permissions {
        position: absolute;
        border-left: 8px  solid #16a2e0;
        box-shadow: none;
        top:0px;
        right: 0px!important;
        width: 100px;
    }
    
    .view-permissions .x-panel-body {
        border-right: 0px;
        border-bottom: 0px;
        border-radius: 0px;
        background-color: #f6f6f6;
    }
    
    .view-permissions-title-header {
        border-bottom-width: 1px;
        border-bottom-color: silver;
        background-color:#f6f6f6;
    }
    .view-permissions-title {
        display: inline-block;
        font-family: ProximaNovaBold,helvetica,sans-serif;
        font-size: 14px;
        margin: 0;
        line-height: 3.2rem;
    }
    .view-permissions-subtitle {
        font-family: NotoSans,helvetica,sans-serif;
        font-size: 14px;
        color:#222;
        line-height: 14px;
        text-align: left;
        padding-top: 25px;
        padding-left: 10px;
    }
    .view-permissions-subtitle-icon {
        color: #222;
        font-size: 14px;
        margin-right: .3rem;
        margin-left: .3rem;
    }
    .view-permissions-icon {
        font-size: 18px;
        vertical-align: text-top;
        color: #a9a9a9;
        margin-right: .3rem;
        margin-left: .3rem;
    }
    
    
    .view-permissions-close {
        color: #a9a9a9;
        background-color: transparent;
        font-size: 18px;
        vertical-align: top;
        text-align: right;
    }
    .view-permissions-grid {
        border-right: 0px white!important;
        border-left: 0px white!important;
    }
    .view-permissions-grid .x-grid-cell-inner-treecolumn,
    .view-permissions-grid .x-grid-cell-inner{
        cursor: default;
        font-family: ProximaNova, Helvetica, sans-serif!important;
        font-size: 14px!important;
        padding: 4px 2px;
        white-space: normal;
        word-wrap: break-word;
        background-color: white;
        border-color: white!important;
        border: none!important;
    
    }
    
    .view-permissions-grid-no-access .x-grid-cell-inner-treecolumn{
        color: #888;
    }
    
    .view-permissions-grid .x-column-header {
        font-size: 12px!important;
        background-color: #f6f6f6;
    }
    .view-permissions-grid .x-column-header-text {
        font-size: 12px!important;
        background-color: #f6f6f6;
    }
    
    .expand-collapse {
        color: #888!important;
        background-color: #fff;
        background-image: none;
        border-color: #fff;
        text-decoration: none;
        font-size: 16px;
        overflow: visible!important;
    }
    
    .no-padding {
        padding-top: 0px!important;
    }
    
        </style>
    
    </head>
    <body></body>
    </html>



  • 4.  RE: Basic Query to Find a Team Member Who Hasn't Logged In Recently

    Posted Feb 28, 2023 10:14 AM

    I think the issue is that User is not a Project related Artifact in Rally, so it won't look at the Project selected in the Rally App - you'll just get all users. 

    If you don't have too many projects then you could list them all in the query like so:

    ((TeamMemberships.Name in "Prj A,Prj B,Prj C") AND (Disabled = false))

    Regards

    Simon Varley



    ------------------------------
    [JobTitle]
    [CompanyName]
    [State]
    ------------------------------



  • 5.  RE: Basic Query to Find a Team Member Who Hasn't Logged In Recently

    Posted Mar 01, 2023 09:19 AM

    To add to Simon's query above, you can use the {projectName} variable in most cases (unless the project name has certain special characters) to make it more flexible.  This is unsupported so may not always work, but I use it quite a bit.


    This query uses {projectName} and a date parameter to give you what you're looking for. Modify the today-10 to whatever timeframe you're looking for.

    (((TeamMemberships.Name contains {projectName}) AND (Disabled = false)) AND (LastLoginDate < today-10))



    ------------------------------
    Terry Ginzburg
    ------------------------------