Thanks Misi! In this particular case I dealing with a single server environment with low traffic. So I went ahead, changed the Block Size to 1 and I’m getting the nextId from the Metadata arschema form. So far it works just fine.
If I encounter difficulties though I’d probably have no choice but use an staging form and try the trick you mentioned. --Thomas > On 13. Oct 2017, at 14:12, Misi Mladoniczky <m...@rrr.se> wrote: > > ** > Hi, > > Any other tool, such as a plugin sver, would actually go through the AR > Server eventually before the Request ID is used and a record is created. > > There are two settings which you can play around with, and these would revert > back to the old behaviour of locking the table and increasing one step at a > time: > Next-ID-Commit: F NextID-Block-Size: 1 > > And as the Block-Size can be set on a form level to one, it might not be too > bad for performance. > > But it might be hard to control anyway, as you have multiple servers and > threads, and they can be in the process of creating records more or less > simultaneously. So if you get the NextID in a filter, you might still get the > wrong one... > > It would be great if BMC had an oprtion to do an > Application-Reserver-Request-ID call, which you could call from an ACTL or > from a FLTR in order to immediately book the a Request ID and populate field > 1. > > But at the moment there is no such thing, which is also why BMC now > extensively uses the GUID-field instead of the Request ID, where you can get > this functionality. > > In your situation Miskiewicz, I would create my own way to reserve unique > numbers, and use that instead of the built in Request ID. > > There was an old trick, but I am not sure it will be future secure, and that > was to do a Filter Push-Fields to yourself so to speak, where the > qualification would be ('1' = $1$). You can then set a > display-only-trigger-field to trigger whatever workflow you need. This would > happen immediately after the record has been commited to the database, so you > do not need to wait for an escalation. > > Best Regards - Misi, RRR AB, http://www.rrr.se <http://www.rrr.se/> (ARSList > MVP 2011) > > Ask the Remedy Licensing Experts (Best R.O.I. Award at WWRUG10/11/12/13) > * RRR|License - Not enough Remedy licenses? Save money by optimizing. > * RRR|Log - Performance issues or elusive bugs? Analyze your Remedy logs > Find these products, and many free tools and utilities, at http://rrr.se > <http://rrr.se/> > > > > > October 13, 2017 1:53 PM, "Rick Cook" <remedyr...@gmail.com > <mailto:%22Rick%20Cook%22%20<remedyr...@gmail.com>>> wrote: > ** > Randeep, yes, all requests flow THROUGH AR Server, but not all are generated > directly BY it. Outside products would likely use a plug-in server thread, > which creates the competition with direct AR Server calls for the Next ID > calls. > Thomas, Notify already runs in Phase 3 - there is no "later phase". Run Order > can be used within that phase to set an order of operation. > Rick Cook > On Thu, Oct 12, 2017 at 11:07 PM, Randeep Atwal <ratwals...@gmail.com > <mailto:ratwals...@gmail.com>> wrote: > > ** > Other idea(s) > Idea 1 > For just the Request ID instead of looping a table field, you can include it > statically in the subject and/or body line of the email. Since notify actions > run after the database commit occurs. You lose the template niceties for this > one field, but I think it's manageable since all notifications need a > reference ticket usually, and having it in the same format is realistic. > 2 Create a new field for Incident ID - separate from the system generated > Request ID (FieldID 1) Since you are talking about using Request ID I guess > you are not using the BMC ITSM, app, and this is a custom app. But there is > nothing to stop you creating push field filter workflow that creates a unique > Incident Number in phase 1 filter processing that would be available. You > would create a form that does nothing but generate numbers, and use $LASTID$ > to get the number This would likely be painful to retrofit if you already > have lots of references to the request id all over the place. > On Thu, Oct 12, 2017 at 10:43 PM, Thomas Miskiewicz <tmisk...@gmail.com > <mailto:tmisk...@gmail.com>> wrote: > ** > Randeep, we don’t like the out of the box email templates so we’ve build our > own app. In that Workflow I loop through a table field to replace variables > of a template with the ticket data. Overwriting the filter phases means I > don’t have access to the Request ID when I need to send the notification. > Ticket $Request ID$ has been created ends up being Ticket has been created. > Answering your question we arrive at another problem in BMC Remedy: no > control over filter phases for the user. Why cannot I postpone Notify to a > later phase on demand? > It looks like I got two options left: > 1. Set block size to 1 > 2. Instead of sending that email immediately push it to a staging form and > run an escalation to send emails after the holy grail Request-ID is finally > there. > 3. Any other ideas? > > On 13. Oct 2017, at 04:08, Randeep Atwal <ratwals...@gmail.com > <mailto:ratwals...@gmail.com>> wrote: >> ** >> Rick, everything that generates NextID's must come through an ARSystem >> server so I don't know what you mean when you say 'If you have multiple >> outside entities creating large number of records at once' >> All requests go through the AR Server. >> I would theorize that you may have other factors in play once you remove the >> NextID bottleneck by using chunks of 100. Something to bear in mind is that >> by chunking NextID's, you cause the scalability of the system to go up (i.e. >> more records per second getting created) - but the per record response time >> under high load is likely to go down (due to the system being under heavy >> load, other downstream constraints such as CPU/Disk Speed start to appear, >> where they would not appear if the NextID bottleneck was in place) It >> effectively acts as a throttle. So your results could be easily >> misinterpreted. >> I would think a way to confirm this is to generate parallel load from a high >> number of worker threads, and time how long it took to reach the same number >> of records created with 1 or 100 for the NextID chunk size. Then compare the >> times. Anyway, we are off on a tangent from the original topic >> Thomas, I am actually curious as to why you want to know a nextid. What >> Abhijeet said explains why it doesn't make sense to ask for it, but often in >> workflow scenarios, where you want to generate something unique and >> refer/tie back to something else. you are better off using >> Application-Generate-GUID [" GUIDPrefix" ] >> On Thu, Oct 12, 2017 at 5:27 PM, Rick Cook <remedyr...@gmail.com >> <mailto:remedyr...@gmail.com>> wrote: >> ** >> Abhijeet, my results were repeated and conclusive. Here is the only logical >> explanation for my findings that makes sense: >> There is a time cost to the DB call for Entry IDs. The cost increases >> incrementally the more that are requested at once. The thought is that 100 >> individual requests will take substantially more time than retrieving 100 >> IDs in one request. That thought has been proven to be correct - it's why >> the feature was added. However, the difference in time was tested against a >> system that had multiple sources (NMS) attempting to grab multiple Entry IDs >> at the same time, not a normal system without those multiple outside >> requests, because it was the first environment that was reporting the >> problem with performance. >> On a system where the volume of IDs is high enough to cause a system >> bottleneck at the DB ID request, which requires multiple simultaneous >> requests from different sources, that bottleneck costs more additional time >> than is lost by the increased time it takes to request multiple IDs at one >> time. However, on a system that is not bound by the Next ID calls to the DB, >> or has only a single source (AR System) requesting IDs, there is no >> advantage gained by the multiple requests, because the time "gained" by >> having a cached ID is negligible - too small to even notice. And, as my >> testing proved (to my surprise), there was an increasing net cost to system >> performance as the number of IDs requested in a single call grew. This must >> be because the time it takes to gather, say, 100 records in one call is >> actually *higher* than it is to do 100 individual calls - IF AR System is >> the only source of those calls. The simple correlation is that if AR System >> is the only thing generating new Request ID requests to the DB, you don't >> need, and will not benefit from, a number larger than 1. If you have >> multiple outside entities creating large number of records at once, you very >> well may benefit from it. >> My tests that showed decreasing performance as the Next Id block grew were >> creating about 1.5 million records, but, and this is important - all were >> from the same source - AR System workflow. There were no other simultaneous >> demands on the table, and few on the system. Therefore, the system of >> generating one ID at a time had a cumulatively lower transaction time than >> it did when it had to wait for multiples to be retrieved and then allocated >> individually. The BMC Engineer, who I know to be very smart and experienced >> with Remedy, had no explanation for my results. I believe this to be that >> BMC didn't test against a control (normal) system, and therefore had no data >> on its effect on them. >> Why then, they chose to recommend that setting to all customers, is a >> mystery to me. >> Rick Cook >> On Thu, Oct 12, 2017 at 4:56 PM, Gadgil, Abhijeet <abhijeet_gad...@bmc.com >> <mailto:abhijeet_gad...@bmc.com>> wrote: >> ** >> Rick, I do not think that is accurate. >> >> Logically, if the block size is 100 then the server will access the DB once >> to retrieve the next block id every 100 records. If it is 1, then the server >> goes to the DB for every record. >> >> Later cannot be faster. >> >> Further, to answer the original question, returning the next id in an API >> call would mean preventing creation of ids by anyone other than the caller >> until the id has actually been used -- otherwise the information might be >> obsolete before the client receives it. That is the reason for not exposing >> it via an API >> >> Regards, >> >> Abhijeet >> >> From: Action Request System discussion list(ARSList) >> [mailto:arslist@ARSLIST.ORG <mailto:arslist@ARSLIST.ORG>] On Behalf Of Rick >> Cook >> Sent: 13 October 2017 02:12 >> To: arslist@ARSLIST.ORG <mailto:arslist@ARSLIST.ORG> >> Subject: Re: What's the NextId? >> >> ** >> >> Here's the skinny on that. I got this from the engineer who built that >> feature, btw. >> >> The problem was that system performance was being constricted around the >> action of getting the NextId for a record when multiple sources (say, >> Netcool and HPOV) were throwing tons of requests at the (Incident) form at >> the same time. The process of getting each Next Entry ID in individual DB >> calls was bottlenecking the process of creating the records. So that's why >> BMC came up with a way to pre-allocate those in bulk, so that only every N >> times (whatever the number is set to) would an actual call to the DB to get >> Next IDs be necessary. The transaction time to retrieve 1 or 100 wasn't much >> different, and those customers with multiple programs requiring many >> simultaneous record creations saw a marked performance increase. It was, and >> is, a good feature add. >> >> So (then a miracle occurs) and BMC announces that this particular corner >> case had a solution that everyone should benefit from, and announced that >> the number should be 100 for *all* customers. I tested this back in 7.6.04 >> against a RH server, with settings at 1, 10, 100, and 1000, and found that >> performance was actually NEGATIVELY affected the higher the number was set. >> It wasn't a huge difference (10%~), but it was a clear, repeatable one for >> which BMC's engineer had no explanation. It is why I have always advocated >> that unless a customer has the specific set of circumstances that caused the >> feature to be beneficial, there is no real benefit to setting the number >> larger than 1. And there are minor drawbacks to doing so, the current >> subject being one of them. >> >> Every time I ask someone from BMC to justify a larger number to the average >> customer, they repeat the party line, unaware of the history behind the >> feature. I will continue to tilt at this windmill until someone at BMC shows >> me some performance testing numbers that justify this setting for the entire >> customer base. >> >> Rick >> >> On Oct 12, 2017 13:30, "Thomas Miskiewicz" <tmisk...@gmail.com >> <mailto:tmisk...@gmail.com>> wrote: >> >> ** >> >> i.e. there is no hack to find out the nextID before it actually gets >> submitted? >> >> Apart from that, I really don’t understand why BMC makes such a fuss around >> the nextID. Why can’t they just provide a special command GET-NEXTID? >> >> Thomas >> >> On Oct 12, 2017, at 10:26 PM, LJ LongWing <lj.longw...@gmail.com >> <mailto:lj.longw...@gmail.com>> wrote: >> >> ** >> >> There are no interfaces that I'm aware of to ask a specific server what the >> next id it will hand out for a specific form is >> >> On Thu, Oct 12, 2017 at 2:14 PM, Thomas Miskiewicz <tmisk...@gmail.com >> <mailto:tmisk...@gmail.com>> wrote: >> >> Hello List, >> >> with NextID Block size being set to 100 —> is it possible the find out using >> the API which will be the next Request-ID that the server will assign to a >> request? Or what other options do I have to find out? >> >> >> --Thomas >> >> _______________________________________________________________________________ >> UNSUBSCRIBE or access ARSlist Archives at www.arslist.org >> <http://www.arslist.org/> >> "Where the Answers Are, and have been for 20 years" >> >> _ARSlist: "Where the Answers Are" and have been for 20 years_ >> >> _ARSlist: "Where the Answers Are" and have been for 20 years_ >> >> _ARSlist: "Where the Answers Are" and have been for 20 years_ >> >> _ARSlist: "Where the Answers Are" and have been for 20 years_ >> _ARSlist: "Where the Answers Are" and have been for 20 years_ >> _ARSlist: "Where the Answers Are" and have been for 20 years_ > > _ARSlist: "Where the Answers Are" and have been for 20 years_ > _ARSlist: "Where the Answers Are" and have been for 20 years_ > _ARSlist: "Where the Answers Are" and have been for 20 years_ > _ARSlist: "Where the Answers Are" and have been for 20 years_ _______________________________________________________________________________ UNSUBSCRIBE or access ARSlist Archives at www.arslist.org "Where the Answers Are, and have been for 20 years"