Duration of PageFlow - What determines when a user is done?

Hi All,
I am having a problem where data that I store in the pageFlow scope is being destroyed before the user is done using the flow.
There is a reference to the lifetime of the flow here:
http://e-docs.bea.com/workshop/docs81/doc/en/workshop/guide/netui/guide/conDatabindingXScript.html?skipReload=true
It says:
“data is maintained separately for each user for the duration of the page flow.”
My question: What defines the duration of the page flow?
Thanks in advance for any help or pointers to documentation,
Chris

Answering my own question:
From http://dev2dev.bea.com/products/wlworkshop81/articles/wlw_internals.jsp
The lifetime of a JPF depends on the actions taken
in the page flow. In general, a page flow is
instantiated when it is first requested (either the JPF
or one of its JSPs/actions) and is released when the user exits the page flow. The user exists the page flow
if there is a request for another page flow (or a
JSP/action in another page flow). The current page flow is also released when the HTTP session expires. Message was edited by cope360 at Jan 13, 2005 4:07 PM

Similar Messages

  • What happens when multiple users access the same servlet?

    Do the users share all the same resources? Or is a new process generated for each user? I have a servlet that builds a string to return to the user and I only have myself to test, so I can't really see what happens when many users access the servlet. Is there a possibility that the string will get screwed up, like when dealing with multiple threads, or do all the users get their own resources and I don't have to worry about that?

    huh? if you can point a test servlet at it, you can point a browser at it (even if the servlet does not serve html it will run)
    try pasting the servlet URL into a web browser
    refreshing multiple browsers repeatedly could provide a manual test

  • TabNavigator - How to change what happens when a user clicks a tab

    I am using a TabNavigator in my Flex application and I'd like
    to be able to change what happens when a user clicks a tab on the
    TabNavigator. I'd like to be able to handle the click on the tab
    myself and stop Flex from perfoming it's default actions. Anyone
    have a clue how to do this? Any help would be much appreciated!
    Mike

    Yeah, in the following code, the changeHandler has an effect
    but the click effect does not:
    <?xml version="1.0"?>
    <mx:Application xmlns:mx="
    http://www.adobe.com/2006/mxml">
    <mx:Script>
    <![CDATA[
    private function clickHandler():void{
    accounts.setStyle("fontSize",20);
    stocks.setStyle("fontSize",20);
    futures.setStyle("fontSize",20);
    private function changeHandler():void{
    accounts.setStyle("fontSize",7);
    stocks.setStyle("fontSize",7);
    futures.setStyle("fontSize",7);
    ]]>
    </mx:Script>
    <mx:TabNavigator borderStyle="solid"
    click="clickHandler()" change="changeHandler()">
    <mx:VBox id="accounts" label="Accounts"
    width="300"
    height="150">
    <mx:Label text="Accounts"/>
    </mx:VBox>
    <mx:VBox id="stocks" label="Stocks"
    width="300"
    height="150">
    <mx:Label text="Stocks"/>
    </mx:VBox>
    <mx:VBox id="futures" label="Futures"
    width="300"
    height="150">
    <mx:Label text="Futures"/>
    </mx:VBox>
    </mx:TabNavigator>
    </mx:Application>

  • What determines when the My Timesheet item will display in the Resource Availability Page?

    Can someone point me to where I can get more information on the My Timesheet item that displays in the Details section of the Resource Availability page?  I cannot figure out where this information is coming from or what determines how many My Timesheet
    lines you see.
    In one Project Server environment, I noticed that each user had 3-4 My Timesheet line items in the Resource Availability page.  The period I was looking at spanned 8 weeks and all of those weeks were in the future.  I checked the Manage Timesheets
    page for one of the users that had 4 My Timesheet items in the Resource Availability page.  The user did not have any timesheets created for the 8-week period I was reporting on in the Resource Availability page.  To make matters more confusing,
    some resources only had 3 My Timesheet line items in the Resource Availability page for the same period.  So it seems like something other than active timesheets for the period is dictating how many My Timesheet lines display.  Also curious was the
    fact that ALL of the My Timesheet items for all users in the Resource Availability page (7 or 8 people) showed "0h" for all of the periods displayed.
    I decided to look into this further in a separate Project Server environment, because I didn't have access to the first one at the time.  Both environments were configured to not use single entry mode and used resource plans to calculate allocation.
     In this second environment, I entered hours against an administrative task classified as non-working time for one week and submitted / approved this sheet.  I entered hours against a project task for a second week and submitted / approved this sheet.
     I then used the Resource Availability page and "reported" on a period including those periods (20-week period total).  I didn't see a single My Timesheet item.  Not even any showing the "0h" designation I had seen in the first environment.
    So long story short, I cannot figure out the criteria that dictates when a My Timesheet item displays.  And I also can't figure out the purpose.  If the Resource Availability page is designed to show planned work (either through the planned allocations
    stored in resource plans or planned assignments through project schedules), what is the point of the My Timesheet values?  Wouldn't planned work be captured in the project line items?  If it's for administrative, non-working time only, why would
    the My Timesheet items not show up in the second environment scenario?  Any help / insight would be appreciated.

    Hi,
    After investing a lot of time i found one link which is talking about My Timesheet in resource availability page.
    I believe link providing proper explanation though i would like to test it on my system. 
    http://social.technet.microsoft.com/Forums/en-US/projectserver2010general/thread/83e46a4d-3c05-4dda-8566-669b12b673f4
    kirtesh

  • Wrong Org unit determination when a user is assign to multiple Org unit

    Hi Experts,
    I have a user who is assigned 3 org units. All the three fall under the same parent of Org unit.
    Now when the user logs in & executes the tcode CIC0, she gets a pop up asking to selet a Org unit out of the 3 available option.
    No matter what the user selects, system always pick the first Org unit ignoring the selection made by user.
    We are using SAP CRM 4.0 win client version.
    I went through the below link but this did not have any solution
    Multiple business roles and org data determination
    Please help!!!
    Please refer the screenshot
    http://img213.imageshack.us/img213/989/cic0q.jpg

    Hi Joaquin,
    When the user log in he gets a pop up asking to choose a Org unit, please refer the screenshot in my previous post.
    No matter what he selects, it the first Org structure gets assigned.
    Please refer the screenshot below
    The business activity screen shows the 1st Org unit. Hence user thinks he has selected the the 2nd org unit creates a Business activity but that gets assign to the wrong org unit unless it is changed manually.
    http://img528.imageshack.us/img528/2821/businessactivityscreen.jpg
    Is it because they both have the same profile

  • What determines when logs get rotated?

    I need to write a script to parse /private/var/log/secure.log and create a report consisting of the time and userid of each login. But secure.log gets archived periodically, and then the archives get deleted, so I need to time the execution of this script to whatever it is that triggers this archiving so I can record the logins before the log gets rotated.
    Looking at the logs and archives, it's a little hard to tell what's going on.
    % ls -l /private/var/log/secure.*
    -rw-r----- 1 root admin 8153 Jul 24 21:37 /private/var/log/secure.log
    -rw-r----- 1 root admin 2232 Jul 21 23:16 /private/var/log/secure.log.0.gz
    -rw-r----- 1 root admin 2196 Jul 7 08:21 /private/var/log/secure.log.1.gz
    -rw------- 1 root admin 6275 Jun 29 22:29 /private/var/log/secure.log.2.gz
    The time intervals are not the same, and neither are the file sizes, so the logs don't appear to get rotated on a regular schedule or when they reach a certain size. It does seem to happen between logins, I think.
    /private/etc/periodic/daily/100.clean-logs looks like it deletes old logs, but it isn't involved in archiving or deleting archived logs. /private/etc/periodic/daily/500.daily has a routine for archiving logs, but I don't understand it well enough to see what triggers it.

    I've written the script for doing user accounting on the Panther machines, but I'm still having trouble understanding what's going on on my own machine. I'm not positive, but I think there might be some serious problems with launchd and how it manages logs. Something is definitely not right.
    According to the documentation Mark referred me to,
    Beginning in Mac OS X v10.4, the preferred way to add a timed job is to use a launchd(8) timed job. A launchd timed job is similar to a cron(8) job, with two key differences:
    * Each launchd job is described by a separate file. This means that you can add launchd timed jobs by simply adding or removing a file.
    * If the computer is asleep at the designated time, a launchd job executes as soon as the computer wakes. This is similar to the behavior of anacron and other cron replacements).
    From what I'm seeing, this simply isn't happening. Look at the listing I posted above:
    % ls -l /private/var/log/secure.*
    -rw-r----- 1 root admin 8153 Jul 24 21:37 /private/var/log/secure.log
    -rw-r----- 1 root admin 2232 Jul 21 23:16 /private/var/log/secure.log.0.gz
    -rw-r----- 1 root admin 2196 Jul 7 08:21 /private/var/log/secure.log.1.gz
    -rw------- 1 root admin 6275 Jun 29 22:29 /private/var/log/secure.log.2.gz
    This log is rotated by the script /private/etc/periodic/weekly/500.weekly, but it clearly isn't being rotated weekly. The dates the three archives were created fall on a Friday and two Saturdays, and there is a two week gap between 0 and 1. I am positive that my laptop was not asleep for a week or more. I use it every day. I noticed that the permissions on secure.log.2.gz are wrong, but I don't think that's the cause of the problem. It's just another sign of the hinkiness that abounds here.
    The situation looks even stranger when you look at the dates of the first and last entries in each file:
    secure.log.2: Jun 19 22:34:51 - Jun 29 22:29:19
    secure.log.1: Jun 30 20:15:36 - Jul 7 08:20:33
    secure.log.0: Jul 7 11:33:01 - Jul 21 23:16:07
    secure.log: Jul 22 15:35:03 - Jul 27 22:43:46 (and counting)
    So it looks secure.log.0 and secure.log.2 were truncated and archived around midnight--different days of the week, but at least they avoided getting entries from the same date in two different files. But look at secure.log.1. 8:21 in the morning??? Why???? It's not like it was asleep or anything. I had been using it until around 12:30, and started in again at around 6:30 Saturday morning. Why does it decide it's time to rotate the log at 8:21? And this is after it has already waited two weeks!
    So if you're doing user accounting on a weekly basis, this just isn't helpful, and it sure isn't helpful if you're trying to do it monthly. You basically need to re-concatenate the files and split them out by grepping the dates. In other words, before you can do what you need to do, you have to undo what the periodic maintenance routines have done.
    And you have to hope they haven't destroyed the records you need.
    Among all the other mysteries I'm trying to sort out, I'm trying to understand why the /private/etc/periodic/monthly/500.monthly script didn't run at the end of June. One thing I can't do is go back and look at the system.log, because they rotate them daily (or they intend to, but this doesn't work correctly either) and only keep the last seven. Here's what the log rotation script looks like:
    for i in system.log; do
    if \[ -f "${i}" \]; then
    printf %s " ${i}"
    if \[ -x /usr/bin/gzip \]; then gzext=".gz"; else gzext=""; fi
    if \[ -f "${i}.6${gzext}" \]; then mv -f "${i}.6${gzext}" "${i}.7${gzext}"; fi
    if \[ -f "${i}.5${gzext}" \]; then mv -f "${i}.5${gzext}" "${i}.6${gzext}"; fi
    if \[ -f "${i}.4${gzext}" \]; then mv -f "${i}.4${gzext}" "${i}.5${gzext}"; fi
    if \[ -f "${i}.3${gzext}" \]; then mv -f "${i}.3${gzext}" "${i}.4${gzext}"; fi
    if \[ -f "${i}.2${gzext}" \]; then mv -f "${i}.2${gzext}" "${i}.3${gzext}"; fi
    if \[ -f "${i}.1${gzext}" \]; then mv -f "${i}.1${gzext}" "${i}.2${gzext}"; fi
    if \[ -f "${i}.0${gzext}" \]; then mv -f "${i}.0${gzext}" "${i}.1${gzext}"; fi
    if \[ -f "${i}" \]; then
    touch "${i}.$$" && chmod 640 "${i}.$$" && chown root:admin "${i}.$$"
    mv -f "${i}" "${i}.0" && mv "${i}.$$" "${i}" && if \[ -x /usr/bin/gzip \]; then
    gzip -9 "${i}.0"; fi
    fi
    fi
    done
    That last part is just plain weird. They get done rotating all the gzipped archives, and then they need to test to see if there is a new log file, and if not, create one, then archive it. Archive an empty log??? What for? Don't you want to see if there's a current log, and that it has at least one line of data in it, before you start the whole process? Why bother rotating logs if there's no new information? And then, after they archive it, they don't create a new log? All of the other log rotation scripts archive the current log then create a new one. Why should this one be different? This just looks like a mistake.
    Also, I'm not the most experienced shell scripter, but isn't this just plain crude and ugly? Instead of using a loop to do a repetetive task, with a variable you can change to set a limit on the number of iterations, they've hard-coded each step. And this is in the script that we're not supposed to change, and it can't be overridden. Nice.
    So if we want to change how frequently our log files get trashed, we need to write a daily.local script that takes the truncated, archived files and decompresses them, concatenates them, and puts them somewhere out of harms way? Is that how we're supposed to proceed? Follow them around and undo what they do then try to do it right? Heaping more ugliness upon ugliness?
    And keep in mind that the timing mechanism that controls it all is broken, and if you want to do your monthly reports at the end of the month, or your weekly reports at the end of the week, you either have to wait around until this byzantine Rube Goldberg machine spits out the logs you need or go to the terminal and call periodic to run whatever process you want it to run manually after all.
    I am starting to wish I'd never looked at this.

  • What determines when a battery is bad?

    I also am having a similiar situation where the battery shuts down early, or drops from 50% to 0% in minutes. I believe the problem is with the battery. Other symptoms include extremely slow opening of programs or the forever spinning "multicolored wheel". I performed a PMU reset and it didn't help. Previous posts always has you checking them but don't explain what they mean or how low they can go before you should replace the battery. My ibook G4 is almost 2 years old and the system profiler gives me these numbers. Also - I see problems can arise from not getting a good replacement battery. Does anyone have any recommendations on where to purchase a good one?
    Full charge Cap mAh 751
    Remaining Cap mAh 751
    cycle count 343
    voltage (mV) 16664

    There may be more than one thing behind this issue;
    but the battery numbers you've posted would indicate
    the battery is not up to par in capacity or remaining
    life. The power number should be in thousands mAH;
    and the cycle count is getting high.
    Does your Battery specs from System Profiler area
    say anything about battery status other than those?
    I have a free widget in Dashboard called iStat Pro
    and that says a few more things about battery and
    other system specs.
    The System Preference's Energy panel should have
    some information and settings to help ration power;
    but your posted battery numbers indicate a problem.
    Does the power adapter show as charging the cell?
    This would appear in the system panel, not just in
    the lights on the battery or in the gauge. And, have
    you performed the maintenance including calibration?
    A machine seeing a good amount of battery use
    could reasonably need a replacement battery after
    two years; but the cycle count could be higher be-
    fore an actual failure; I've seen over 450 cycles.
    Places such as OWC and NewerTech batteries
    may be worth a look; some of the better options
    offer an external battery charger with conditioner
    cycle for their cells, and a longer life cycle. I like
    the Apple original replacement, it does OK.
    Another issue in the computer may be due to lack
    of free space in the hard disk drive; that would be
    something to do with the spinning wheel and slow
    activity when running applications & in the System.
    The hard disk drive needs unused free space for
    Virtual Memory; this supplements chip RAM in
    most everything in Mac OS X, the system & apps.
    And if the hard disk drive is getting worn out, that
    too would show in performance and failure issues.
    One of the posts about percentages of battery loss
    in short duration intervals, where I replied, has links
    to the various procedures and prescribed methods
    of battery maintenance. There are other sections in
    Support where system maintenance & repair appear.
    If these areas are also acting poorly, you may need
    to see if all the basics are covered, including the oft
    repeated concept of 'repair disk permissions' et al.
    Good luck & happy computing!

  • What happens when photos of contacts don't sync

    I have problems with contact photos. I can add them via the iPhone, but they don't appear on my iPad.
    Also I can't seem to add/delete groups, and assigning contacts to those groups.

    On all devices, tap Settings > iCloud
    Switch Contacts off then back on.
    Give iCloud a few minutes to re sync the Contacts data.
    messaged edited by:  cs

  • A program to trace when a user is logged in/out the system

    Hi,
    How would I write an ABAP to determine when the user is logged into a SAP system, what transaction code has been launched by the user, and when the user exits or changes a transaction code?
    Or is there a FM that provides this information?
    Thanks,
    RT
    Message was edited by: Rob  Thomas

    Hi,
    You can find some information in STAT and STAD transactions. But these information will be only available for programs with atleast some screens
    either a report list screen or a selection screen or a module dialog.
    There are also quite a no of BAPIS related to User logons.
    Cheers
    VJ

  • Determining when session expires

    I want to be able to track the amount of time that the user spends on my site. I am going to insert a record into a database when the user logs on. I also want to insert a record when the user's session expires either from timing out or closing the browser window or leaving my site. Is it possible to determine when a user's session ends, particularly when it ends via the last two ways.
    Thanks!

    First, you can use a javax.servlet.http.HttpSessionBindingListener object put into the session as an attribute and implement the valueUnbound() method to do the database update. This will be called when you invalidate the session (unless you remove the attribute manually first).
    So the problem is when will the session be invalidated..... There are really 4 things you are looking for:
    1) session times out
    2) user logs out (assuming you provide a log out link that invalidates the session)
    3) browser closes
    4) user leaves site (I assume you mean just goes to some other site in the same browser window)
    1 and 2 are okay, cuz it invalidates the session and calls the valueUnbound method of the object you create as mentioned above.
    For 3 and 4, you can do this in one of 2 ways:
    A) Use frames in your web pages and in the top window, you can have a Javascript call some logout page. However, I'm not convinced that this will work in all situations.
    B) Have an applet in the pages that does something to keep the connection alive. This requires an applet and a JVM in the client to run it. Probably not a good thing to rely on for public sites.
    So really, there is no foolproof or simple way to handle 3 and 4, except to use session timeouts and rely on that.

  • I opened my iPhoto library today which was stored on an external hard drive and several of my videos now will not play. The weird thing is that each file shows a duration of 1 second and when I open them it just shows one frame. What the

    I opened my iPhoto library today which was stored on an external hard drive and several of my videos now will not play at all. The weird thing is that each file shows a duration of 1 second and when I open them it just shows one frame. What the !&%$#@ Where did my original video files go?

    Sounds like a good plan, you can never be to safe and having a second External HD is safer than one.
    The only thing that I would do different, is setup the 3T as my TimeMachine Backup and then erase and move my Photos, Videos and perhaps even iTunes Media to the 1T. That way you will have room to backup both the Internal Hard Drive and the 1T External Hard Drive to the 3T using TimeMachine.
    Take your time, study and use the > Time Machine - Frequently Asked Questions if you get stuck or aren't sure how to make the move.
    Also see > iPhoto: How to move the Library folder to a new location
    iMovie ’08: Storing or moving your video library to an external hard disk
    and >  iTunes for Mac: Moving your iTunes Media folder

  • Query to determine what inventory org a user or person belongs to??

    I feel silly for asking this, but it's not obvious to me - does anybody have a query to determine what inventory org a user or person belongs to? I assumed there would be a simple join to hr_locations, but I'm not finding it. I'll check TRMs next, but I don't see a FK in fnd_users or per_people_f...so it might be more complicated than I thought.
    11.5.9 by the way...
    Thanks!
    Scott

    What I mean is,
    Where can I know the update capabilities for a Form or a function
    I was asked by my manager to make a report to input the UserName so that the output displays the UserNmae and its associated Responsibilities and the Menu prompts registered with the responsibility(Tree Structure) and the User Form Name and User Function Name and the Update Capabilities.
    For the Update Capabilities I have to display 'Yes' if the form/function has update capabilities or not.
    And have to check whether it has Job Scheduling Capabilities or not.
    For this (Update Capabilities), which tables I have to refer?
    Thanks.

  • What determines which inputs you can select from when you're creating a VISA Resource Name Constant?

    Hey, I'm trying to write a labview driver an instrument. I have another instrument which came with labview drivers, and I had hoped that by looking at how they did it, I could write my own for this piece of equipment.
    However, the problem is they use the old visa open method. That is, they input a string, "GPIB::6", and it outputs a visa session.
    The new Visa open requires that you have an input resource name, and the constants only let me pick from "COM1" and "LPT1", but the GPIB interface card in this computer is in a PCMCIA slot.
    What determines what choices you get when you select the value of the constant?
    Thanks,
    -Dobbs

    If you created a VISA Resource Name control, right click on the control and select "Allow Undefined Names".
    I haven't programmed directly using VISA on LabVIEW 6 but it apppears that if you select from the drop-down menu, it shows the devices that is defined in MAX. Thus, you should be able to select your GPIB resource name if it has been properly installed.
    Nevertheless, it still allows you to override the control by selecting "Allow Undefined Names".
    I hope that helps.
    Shan Pin Koh

  • Sales area determined based on user/employee when creating an account?

    Hi Experts.
    Can anyone tell me how to implement the following:
    When a user creates an account, the sales area should be filled out with the sales area of the employee of the user. In case of more sales areas, a pop-up should appear to choose from (simlar to transactions).
    Thanks and regards, Mia

    Hi Mia,
    Pls inform if you found teh solution for above.
    Even we are facing the same problem of getting User Default sales Area for BP.
    Regards,
    Rahul

  • Identify when a user has change value in USEREXIT_CHECK_VBAP before saving

    I originally posted and closed this question, but I am still struggling with the code.
    The req is now to also update the value of VBAP-LPRIO, so I now have to use the Exit : USEREXIT_CHECK_VBAP.
    The issue is that my solution must take into account when a user manually overwrites a value and not replace it with a value determined in the user exit.
    My problem is that the user might do the following
    1 - Create a sales order and enter a new item line, press enter
    2 - The user exit is triggered, and I check that XVBAP-UPDKZ = I  (user add a new line)
    3 - The user-exit determines the new value and populates the field
    4- the user then click on the item line, and then manually changes the value of VBAP-LPRIO
    5- The user-exit is triggered again, and because  XVBAP-UPDKZ = I , my code is triggered and updates the field.
    What I want is to identify that a user has manually changed the value and not overwritte the value.
    1 - I have check YVBAP and it is blank, as the user has not saved the sales order.
    2- The values of VBAP and XVBAP are the same..
    3 - I cannot re-read the database (KNVV) table as the user could have populate the value with the same value.
    What I need is how to identify when a user has made a change to a field before they save the sales item, as YVBAP is never filled.
    Previous post----
    Hello,
    I am writing a bit of code that will overwrite the payment terms in a sales order item based on a number of factors. (ship-to, incoterms, document type, etc)
    I am using the following program MV45AFZB at Exit : USEREXIT_CHECK_VBAP. I am using this exit as the users need to see the payment terms after an item has been entered into the sales order and not have the value determined at sales order save.
    I am not using USEREXIT_MOVE_FIELD_TO_VBAP as it is only triggered once at the time of creation and not when I change the document. I need it in USEREXIT_CHECK_VBAP as users could change the incoterms in VA02, so the code must be redetermined.
    My code is working as expected, however, I have a problem when a user enters a sales order item line and then manually changes the payment terms, as my code then is over writes the users values.
    The flow is as follows
    As user creates a sales order
    They populate the sales order header
    They populate material number and qty
    User exit USEREXIT_CHECK_VBAP is triggered and correctly determines the payment terms
    The user then double clicks on the sales order item and decides to overwrite the payment terms.
    My user-exit is retriggered and check to see if XVBAP-UPDKZ = I (insert)
    As it is still an insert, my code triggers.
    I have tried to check YVBAP, but no entry exist as it stills is seen as in insert? What I really need to know that while it is still an insert, the user has change the field value and my code should not over write the users value.

    When do you need to update LPRIO ? When user makes the change at the Payment terms on line item?
    Regards,
    Naimesh Patel

Maybe you are looking for

  • Problems texting using multiple phones on the same itunes/icloud account

    My family and I recently upgraded to IO7, prior to that my wife, my son and I each have an Iphone and my wife and I each have an Ipad all devices worked indepedently. Since the IO7 upgrade neither my wife, son or I can nolonger text eachother, if my

  • Droid Slow/ lack of customer service

    For the past 6 months my phone has been acting up. It freezes, websites refuse to load, apps stop working. The phone turns on and off itself, and crashes with no known point of return. I have gone to 4 different Verizon stores in 2 different states,

  • Change name of AuthoredContent.xml

    I am using Encore to create some simple interactive flash banners to put on a website, but I am running into a problem due to the fact that each flash file requires the AuthoredContent.xmlfile. If I try to load multiple flash files into a single page

  • "Add media queries" button disabled

    Hi, I've downloaded the pack and everything else seems to work fine, but when I enter in the multiscreen preview window, the add media queries button is disabled (the viewport sizes is active) and I can't find any other way to bring up the menu for t

  • Fetching Mutilple records in Alert.

    Hi All, I have a requirement to print the keymembers of a project who are end-dated through Alert. If a single member is end-dated I was able to print, but if there are mutiple users end-dated then i'm facing a challenge. Is there any way to print mu