Despite knowing AX enough to get around, it's still thoroughly confusing to me. I have a background in Visual Studio C#, and I could always figure out where a particular segment of code was performing the unexpected behavior, but after a year and a half of AX 2012, it's still a mystery.
There's a legacy system that is not getting POs sent from AX whenever a PO Line is cancelled; my objective is to change AX to guarantee that cancelled lines are sent back to this legacy system.
I need to modify the behavior after PO lines are canceled. I know that users cancel the line by going to Procurement and Sourcing => Common -> Purchase orders => All purchase orders. They Request Change on a PO, then under the Purchase Order Lines section, they navigate to Update Line => Deliver Remainder; doing a Personalize on this form shows that the form is called PurchUpdateRemain, a Foundation form. I hit the Cancel Line button, then confirm the change.
I know that a workflow is triggered on this, and I've completed the whole process of approving the change, but no AIF service is called according to the trace I ran on it, so I'm confused as to what AIF service should handle it.
My question is: How do I find where a file should be sent out in AX? AX does not seem to give any indication as to what logic should be called after a line is cancelled. If I could just see the whole flow of the code like I could in Visual Studio, I could determine where I need to make my change in AX, but I've not yet figured out how I can possibly do that. Any tips? I'm at my wits end here.
A lot of it is just knowledge gained from experience. Pretty much figuring out where to look. Putting a breakpoint in and tracing the code and stepping into methods is often the best way.
Here's a stack trace that shows where the status is changing so you can figure out where to put your code. I cut off line #'s because my code is customized and they wouldn't line up.
Hopefully this won't be too late.
Check the class PurchCancel, in the run method you can see the process of how a purchase order is being cancelled.
I'm getting some very strange behavior in DTM. When our page loads (from a local instance of the website) we get the expected call going out with the proper dev report suite. When a custom link call is made from that page, for some reason DTM sends it with a production report suite. If I look in Adobe Analytics for the custom link name reported under the prod RSI, it does not show up in there.
Any ideas on what is going on and how I can fix this issue?
This is my shot in the dark based on what you have said, and it is based on the assumption that your statements are true (e.g. you aren't seeing pink elephants, that the request was indeed showing your prod rsid in the proper portion of the request url, that you did in fact check your prod rsid after an acceptable amount of time has past, no segment or other filter shenanigans, etc..: in short, that you do know how to accurately perform the basic QA song and dance).
Under that assumption, the below is a scenario that can plausibly reproduce what you are describing. I could be partially right or totally off for your specific situation, but there's really no way for me to know for sure without having access to your DTM instance.
The Scenario
Long story short is it sounds like you have a blend of custom code and DTM automatic settings enabled, and DTM is overriding and/or not caring about your custom code for link tracking.
More specifically, it sounds to me like you have AA implemented as a tool in DTM, and in the config settings, you have your production and staging rsids specified in the text fields.
Then in the General section, you either do NOT have values specified for Tracking Server and Tracking Server Secure, or else they are set to the wrong values.
Then, in the Library Management section, you have either selected "Managed by Adobe" in which case DTM takes care of the library, or else you have selected "Custom" and you are adding the library yourself AND you have NOT checked "Set report suites using custom code below".
Then, somewhere in DTM (e.g. the Library Management > Custom code box, or Customize Page Code codebox) you have code that pops rsid stuff (e.g. s.account, s_account, dynamicAccountList stuff), and possibly also trackingServer and trackingServerSecure.
Finally, you (like most other people, because DTM's double script include for staging vs. prod is.. dumb) just use the prod script include on your page, and either use the debug/staging mode or rely on whatever rsid routing logic you've setup to route to dev.
So.. when the page is first loaded, DTM loads the AA library and it sets variables and stuff based on what you specified in the tool config. During this time, it is also popping any custom code blocks you have in the tool config, which may or may not override what you have specified in the tool config fields, depending on what you enabled. Then after that, it pops stuff you have in page load rules (if any), etc..
But then comes the link click.. As I have mentioned in other posts on SO, DTM has this caveat (IMO bug) about how it references the AA object after the initial page load/AA request: basically, it doesn't. Instead, it makes use of internal methods (the main one being a .getS() method) to create a new instance of the AA object, based on whatever things you have configured in the tool config section. Well here's the rub.. it does NOT account for or execute any custom coding you have done in code boxes in the tool config section.
So that basically happens whenever an event based or direct call rule is triggered, and it effectively screws you. Why does DTM do this? I do not know. IMO Adobe needs to change this feature caveat bug. Either they should refactor DTM to execute the code boxes, OR they could, you know.. just reference the original AA object created, like any normal script would do..
But in any case..
So for example, my theory here is that page loads fine, points to dev rsid based on your setup. But then you click a link and an event triggers, and DTM makes a new AA object not caring about your custom code, so all it has to go on is what you have in the tool's config fields.
Since DTM doesn't actually have any rules around the prod vs. dev rsids you specify in those fields (you have to write custom code in the custom code boxes - that DTM ignores!), it just pops the prod rsid, because that's the script include you have on your page.
Then as far as not seeing the data actually show up in your prod rsid: again, since DTM ignores what you set in your custom code boxes, it's defaulting to what is specified in the trackingServer fields in the tool config, and my assumption here is they are either blank or wrong (you should be able to look at the request url to adobe to verify this). This theory is because you said the prod rsid is right, and you see a request being made. So the next culprit would be wrong tracking server specified.
So, that is my theory of what's going on. Maybe it's all right, maybe it's some right, hopefully it may point you in the right direction at least.
Edit:
If you can confirm that this is indeed how you have things setup, then you will naturally ask "Okay, well what do I do about that?". As I have said in a lot of my other SO answers.. basically, your only option is to uncheck all the settings that make DTM automate AA, and in all your rules, keep the AA section disabled and whatever AA vars you wanna set, set them yourself and make the s.t() or s.tl() call yourself in a 3rd party script code box, so that it continues to reference and pop based off the originally instantiated AA object.
Update
Based on your comments below, okay so yeah.. that sounds like what I described, and accounts for prod rsid popping. As for data not showing up in report.. so if you are certain tracking server is set correct (the request url looks good) then this isn't a DTM issue. Here are some other explanations for why the data wouldn't show up:
Are you sure the request is being sent to your prod rsid? I don't know what you are looking at to verify this, but this is where you should be looking: In the request URL to AA: "http://[trackingServer value]/b/ss/[s.account value]/1..."
Click request isn't making it to Omniture. Verify in a packet sniffer that the request is actually made and that you are getting a 200 OK or NS_Binding_Aborted response.
You aren't waiting long enough to check for the data. Even basic hit data and looking at "real time" reports takes a little bit of time to show up.
You have a segment/filter active that's not jiving with the data you are trying to look at. Make sure that you don't have anything applied. Or, if you are using those things to find your data (and aren't seeing it), ensure that you are correctly applying it.
You recently created the rsid and the "go live" date hasn't passed yet. Data will not show up in the report suite until up to 24 hours after the specified "go live" date.
You have a vista rule in place that's affecting data showing up. Some companies have a vista rule in place for a number of reasons and there are a million ways it could affect data (e.g. routing to a different report suite). For shits and grins, check your dev (or other rsids) to see if your data showed up there. Even if that doesn't make sense, at least it's a step forward.
You have a bots / ip exclusion rule in place that's catching data from your location.
The data sent in from the link click isn't relevant to the report. For example, maybe you are looking at e.g. prop10 report and prop10 isn't actually sent in the click request.
I know a lot of these are basic things to check, and no doubt you've checked, but check again. Have someone else check for you to be sure. I'm not questioning g your abilities here, but even the best of coders forget to cross their t's and dot their i's sometimes, and manage to miss obvious things. If you are sure about all of these then contact Adobe ClientCare because I really can't think of anything else that wouldn't involve an issue with Adobe's backend.
I ran into a similar problem with my implementation. Essentially what I did was set the s.account variable directly inside the doPlugins, so it would be set on all tracking calls. I wrote specifics here also: DTM Tracking Account
This is no longer necessary to keep in forum for lack of poor format nor statistical data keeping.
When the graph says it's running it doesn't really mean any activity is taking place, it just means the graph object told the filters to run and set its "state" variable to "running". However if any filter is stuck for any reason and doesn't send or receive the data everything freezes but the graph state remains "running". Some editors like GraphEditPlus can show states of each particular filter in the graph, so if some of them report to be stopped or paused while some others are still "running" you will see this. In most cases however you'll just see all filters "running" and won't know which of them is stuck unless you insert sample grabbers between them and tell GraphEditPlus to show grabbed samples in real time, this is a good way to understand what's really going on.
In Eclipse, using IBM Jazz for source control, I have a default task with state 'In Progress', that's assigned to me.
In the 'Check-in and Deliver' wizard, in the 2nd wizard-pane ('Associate Work Item') sometimes this task is displayed immediately, and other times it is not. In the latter case it only appears when I type a matching search criterium
How can I make sure that my default task appears in this 2nd wizard-pane immediately, without the need to type a search criterium?
This sounds like a defect - and worth raising on jazz.net. Be sure to specify what version of RTC you are using.
However, there is an easier way to do what you want. At any point you can drag the work item to the bottom line of the Eclipse UI (you may see "no work item" or similar text in the area you need to drag the work item. This then becomes the default work item your code is associated with. You will no longer have to use the Associate work item.
Foe example, in RTC v4.0.1 - this part of the help explains this idea in more detail:
https://pic.dhe.ibm.com/infocenter/clmhelp/v4r0m1/topic/com.ibm.team.scm.doc/topics/t_scm_eclipse_workitems_working.html
This function has been part of RTC since v1 so will work regardless of what version you are using.
Hope that helps
I have some terribly written ASP.NET code that is just not working right (go figure).
I'm charged with maintaining and bug fixing this code, but I can barely make head or high water of it
Unfortunately I don't have the time to rewrite it.
If someone could help this would be great:
(the code): given to you here (some minimal obfuscation necessary):
http://mastergeektheater.com/issues.txt
What it's supposed to do:
Receives an order from a shopping cart application, and creates a table of textboxes based on the quantity of said object ordered.
Once the whole thing is validated (submit_Click()), then it reveals a div with further instructions and grays out the input fields so you can still see what was entered, but can't affect anymore. Emails are sent to each inputted email address.
What it actually does:
Receives the order, and correctly displays the inputs. On Submit, all of the "required field validators fire - if they are Vaild, then the comparison validators fire. SOMEWHERE AROUND HERE, it all goes south."
All of the input areas in the table except the first user disappear. if the comparisons success, then it postsback, and the first user is there (greyed out) and the other users are gone. if the comparisons fail, then it doesn't successfully postback, and stays on the input form, but all of the input fields except the first user still disappear
I know this is a little too specific to be a really well formed Stack Overflow question, but I've tried to break it down to things I think were wrong and I asked other questions that were more specific to try to fix it. Unfortunately, it hasn't worked. The code got better, but the whole thing is still broken. At this point I'm desperate.
If anyone could help, it would be a huge lifesaver. Thanks in advance for all of you who pour through this terrible code (and terrible question) for even a minute...
I guess the problem could be due to this line.
Session["quantity"] =(null != Request["quantity1"]) ? Request["quantity1"].ToString() : "1";
Do you have a field (hidden/input) named quantity1 on the form?
Is it being passed to querystring or as part of form item collection?
It will be 1 (when the form posts back to itself) & hence the loop will only run once.