Friday, February 23, 2007

529 Plans By State

How to Properly Delete Accounts and other Entities

Deleting top level entities such as Accounts and Contacts is a tricky proposition in Siebel. If one is not careful, orphaned records can be left behind. For example, an Account has 0, 1 or many addresses. If an Account is deleted, the Addresses may be left behind. Across time, bad deletes impact data integrity.
Fortunately, there are options. Following Siebel Best Practices, I recommend that you utilize the Status of "Marked for Deletion" on Accounts. Update the Predefined Queries to Exclude Accounts with Status = Marked for Deletion. That way, as soon as an Account is Marked for Deletion, it will disappear upon data refresh.
One can use backend EIM jobs to properly remove the entities on batch and preserve data integrity.
If the customer desires to limit which users can mark accounts for deletion, I recommend using State Model and restricting the transition to the Status of "Marked for Deletion" to positions identified by the customer.
Affected Siebel Versions: ALL To Date

Thursday, February 22, 2007

Resolving Transaction Router Issues After Truncating the Transaction Log

FROM SIEBEL SUPPORT WEB
========================
Service Request #: 38-974910551
Area: Siebel Remote
Product Release: V6 (Siebel 2000-Enterprise)
Version: 6.0.1.38 [2998]
Database: Microsoft SQL Server 2000 SP 2
Application Server OS: Microsoft Windows 2000 Advanced Server SP 2
Database Server OS: Microsoft Windows 2000 Advanced Server SP 2
Status: Resolved
GMT Date Opened: 04/07/2003 07:32:37
Abstract: Transactions not getting routed to mobile clients
Description:
Mobile Clients are not getting any Transactions routed to them.

The customer historically had Siebel Remote disabled through setting the Docking Transaction Logging System Preference to FALSE but had recently added a number of mobile users to the Enterprise. They re-enabled transaction logging within the Enterprise by setting the parameter to TRUE but having done this noted that none of the transactions which were being logged within the Enterprise were being sent out to the userbase.

The first step in this scenario was to make a review of the log files being produced by the two components involved in the routing of transactions, the Transaction Processor and Transaction Router. When a review of the Transaction Processor log was made it was identified that the component was repeatedly issuing DELETE statements against the master transaction log table (S_DOCK_TXN_LOG) :

SQL SQL 4 2003-04-08 21:06:10 2003-04-08 21:06:10 Statement:
SQL SQL 4 2003-04-08 21:06:10
delete from dbo.S_DOCK_TXN_LOG
where TXN_ID = {fn convert(?, SQL_NUMERIC)}
SQL SQL 4 2003-04-08 21:06:10 01:1962729
SQL SQL 4 2003-04-08 21:06:10 Parse and Execution Time (only)
[SQL01] Total Rows: 1 Total Time Parse: 0s Execute: 0s Avg Time: 0s
SQL SQL 4 2003-04-08 21:06:10

After examining this statement and the various routing details available through the Siebel Remote Administration screens it was identified that the transactions which were being generated by the Enterprise had a lower TXN_ID than those which had historically been routed. The Transaction Processor maintains a 'LOWSCANMARK' value which indicates the earliest TXN_ID value which is needed by the Enterprise and therefore deletes anything below this value. When new transactions are generated the system sets the TXN_ID to the next value from an object which differs for various databases. In the case of Oracle the TXN_ID is generated from a sequence object S_DOCK_TXN_LOG_S, whilst in the case of Microsoft SQL Server and DB2 the TXN_ID is based on an IDENTITY column.

At some point in time the TXN_ID column's value (created automatically on Insert as this was a Microsoft SQL Server environment and therefore an IDENTITY column) had been reset leading to new transactions having a value below the LOWSCANMARK. These were therefore removed immediately by the Transaction Processor.

In order to resolve this behavior it was necessary to reset the value of the TXN_ID column. This process differs for each database management system. In this case it was necesary to reset the IDENTITY column to a value higher than the LOWSCANMARK.

Please run the following query to determine the LOWSCANMARK values for Transaction Processors in your Siebel Enterprise :

select n.name, ds.NODE_ID "Processor node id", substr(addtl_info, 1, 50) "Low Scan Mark Value" from s_dock_status ds, s_node n
where ds.type='ROUTE'
and ds.local_flg='Y'
and ds.node_id = n.row_id
and n.node_type_cd='TXNPROC';

Having identified the LOWSCANMARKS please ensure that the value is higher than these in the steps below. In order to resolve this behavior in a Microsoft SQL Server environment please follow the steps outlined below :

1) Have all of the mobile clients synchronize with the Server to download any outstanding transactions
2) Wait until all %SIEBEL_SERVER_ROOT%\DOCKING\\Inbox directories are empty, indicating all transactions have been applied to the Server
3) Shutdown the Siebel Enterprise to ensure that new data is not written into the transaction log
4) Run a DBCC CHECKIDENT(S_DOCK_TXN_LOG,NORESEED). This will return the current value of the IDENTITY column and the max value from the table. Make a note of these
5) Run a DBCC CHECKIDENT(S_DOCK_TXN_LOG,RESEED,)
6) Restart the Siebel Enterprise but at the moment restrict login to yourself
7) Re-extract the mobile users
8) Have them initialize and pickup the new extract
9) Check that newly created transactions in S_DOCK_TXN_LOG have a TXN_ID of >=. These should then be written out to .dx files in the \TXNPROC directory
10) Enterprise should then be fully available.


Keywords : CHECKIDENT, IDENTITY, RESEED, TxnProc, Processor, routing, clients, LOWSCANMARK

Wednesday, February 21, 2007

Our Socialist Tax System

Normally, I just forward good emails along, but today I want to post this for everyone to see. I think what is being said here is spot on. There's no liberal or conservative bias. Just honest, simple truth. With the media slant today, both right and left, a little truth is what we need. This post does start with a parable from the bible. I encourage you not to read this as a bias. Many sources from Buddha, to the Bible, and even the Koran offer rules and parables for daily living and society.
Educate yourself:
"We seem to have an overabundance of people nowadays who have a high sense of entitlement - that somebody else, the government, i.e., we taxpayers, owe them. Whenever a tax cut is announced, they come out of the woodwork complaining about the "rich getting richer". We just need to remind them of the parable of the talents. The one that buried his talent was called slothful and wicked. His talent was taken away from him and given to the one that had ten (the "richest" one, so to speak). Jesus did not say it directly, but the implication in that parable is that he sided with the industrious ones and chided the slothful, fearful one.
Anyway this is a great explanation of our tax system.
Sometimes politicians, journalists and others exclaim; "It's just a tax cut for the rich!" and it is just accepted to be fact, without questioning it. But what does that really mean?
Just in case you are not completely clear on this issue, the following might help. Let's put tax cuts in terms everyone can understand.
Suppose that every day, ten men go out for beer and the bill for all ten comes to $100. If they paid their bill the way we pay our taxes, it would go something like this:
The first four men (the poorest) would pay nothing.
The fifth would pay $1.
The sixth would pay $3.
The seventh would pay $7.
The eighth would pay $12.
The ninth would pay $18.
The tenth man (the richest) would pay $59.
So, that's what they decided to do.
The ten men drank in the bar every day and seemed quite happy with the arrangement, until on day, the owner threw them a curve. "Since you are all such good customers," he said, "I'm going to reduce the cost of your daily beer by $20."Drinks for the ten now cost just $80.
The group still wanted to pay their bill the way we pay our taxes so the first four men were unaffected. They would still drink for free. But what about the other six men - the paying customers? How could they divide the $20 windfall so that everyone would get his 'fair share?' They realized that $20 divided by six is $3.33. But if they subtracted that from everybody's share, then the fifth man and the sixth man would each end up being paid to drink his beer. So, the bar owner suggested that it would be fair to reduce each man's bill by roughly the same amount, and he proceeded to work out the amounts each should pay.
And so:
The fifth man, like the first four, now paid nothing (100% savings).
The sixth now paid $2 instead of $3 (33%savings).
The seventh now pay $5 instead of $7 (28%savings).
The eighth now paid $9 instead of $12 (25% savings).
The ninth now paid $14 instead of $18 (22% savings).
The tenth now paid $49 instead of $59 (16% savings).
Each of the six was better off than before. And the first four continued to drink for free. But once outside the restaurant, the men began to compare their savings."I only got a dollar out of the $20,"declared the sixth man. He pointed to the tenth man," but he got $10!" "Yeah, that's right," exclaimed the fifth man. "I only saved a dollar, too. It's unfair that he got ten times more than I!" "That's true!!" shouted the seventh man. "Why should he get $10 back when I got only two? The wealthy get all the breaks!" "Wait a minute," yelled the first four men in unison. "We didn't get anything at all. The system exploits the poor!"
The nine men surrounded the tenth and beat him up.
The next night the tenth man didn't show up for drinks, so the nine sat down and had beers without him. But when it came time to pay the bill, they discovered something important. They didn't have enough money between all of them for even half of the bill!
And that, boys and girls, journalists and college professors, is how our tax system works. The people who pay the highest taxes get the most benefit from a tax reduction. Tax them too much, attack them for being wealthy, and they just may not show up anymore. In fact, they might start drinking overseas where the atmosphere is somewhat friendlier."

Original Email from:
David R. Kamerschen, PhD
Professor of Economics
University of Georgia

Saturday, February 17, 2007

Women Take Heed

Women: Learn your place. Review this educational video for more training. Please share with a friend, you know you'd want them to do the same for you.


Friday, February 9, 2007

The Amazing Egg Flip

Here's something cool... watch as the Amazing Danny Kam attempts to
flip 4, yes 4 eggs at the same time...



Thursday, February 8, 2007

Sad Little Saleen

I know, I know... but still this thing had me laughing from the time I saw it on the PGBT (Pres. George Bush Turnpike), to going N on Dallas Tollway, until I got off at Spring Creek. Seriously... do you need the speed that bad? To funny. Wish I could have gotten to video faster. It was this Saleen Ford Focus play dodge, duck, dive, and dodge with a new Corvette up Tollway.
This is all I could get:

How to Setup a Blog to a Sub-domain

1) Log in to the control panel for your registrar. In this case, GoDaddy.com. Go to the domain for which you are going to have a blog.



2) Now go to Total DNS Control to modify the CNAMEs.


3) Add a new CNAME for your Domain. In this case, the CNAME “scott” will be added to Beckworth.org. The “Points to Host Name” is set to ghs.google.com.




4) Now go to Blogger and setup an Account. If you have a gmail account, then setting up an account is easy. Once you do that click on a link to Create a New Blog.




5) Choose a template:




6) Blog creation confirmation screen:




7) Click on the Start Posting Link. Then in the new screen, click the Settings and then Publishing Links.




8) Above you see current publishing settings. Now click the Custom Domain link.




9) In the above, see how I have typed scott.beckworth.org as the domain? Press Save Settings. Now you will get a confirmation screen. That’s it!




10) Now I will go to scott.beckworth.org:




11) Under “Permissions” back at Blogger, I will add Scott as an Admin. I will have to wait for him to reply before I can make him the admin.



In the meantime, I will attempt to make this word document a post on his blog!

Wednesday, February 7, 2007

Best File Sharing Web Site

My friend "E," has a pulse on the absolute best of 'Net around. I haven't figured out how he manages to stay on top of such an always changing environment, but he just does. I've been to BestSharing, ShareIt, etc. but they are all cheesey and slow. Plus if you want to email the file to someone, the URL is 5 miles long and they recipient has to jump through hoops.



No longer, try www.senduit.com This web site literally has 2 pages. One page for the uploads (the home page) and a second page for downloads. The url is super short. Drawbacks? I could only see one: 100 MB file limit. So what, right? Split the file and be happy.



Here's a screenshot of the upload:



Here's the download URL:

And here's actual download:

Notice how simple it all is. You can see their business model based on Ad Impressions.



Way to go senduit.com and great find E.

Aggregating Your Gmail Accounts

Let's say that you have several domains and that you were smart enough to use Google Apps for Your Domain (GAFYD). Invariably, you end up with at least one account for each domain. What a hassel, right? Well, when you use email from GAFYD, you are essentially using gmail. With that in mind, you can easily aggregate all your accounts into one. You can still store the mail at each account and you will be able to send as, and more importantly reply as, each account. Let's review how it's done.

First you want to set up your "Send Mail As" Setting in the Account from which you want to do all the checking. This is from Google Help: http://mail.google.com/support/bin/answer.py?answer=22370

How do I use a different From address to send mail?

If you'd like your outgoing Gmail messages to display another one of your email addresses in the 'From:' field (instead of your Gmail address), just follow these easy steps:
  1. Log in to your Gmail account.
  2. Click Settings along the top of any page, and then select the Accounts tab.
  3. Click Add another email address in the Send mail as section.
  4. Enter your full name in the Name field, and the email address you'd like to send messages from in the Email address field.

    *Keep in mind that each time someone replies to a message you send using a custom 'From:' address, the reply will be delivered to the 'From:' address rather than your Gmail address. If you'd like replies to be delivered to another account, you'll need to enter a 'reply-to' address. Just click Specify a different reply-to address to enter this information.

  5. Click Next Step >> and then click Send Verification to complete the process. Gmail will send a verification message to your other email address to confirm that you'd like to add it to your Gmail account. You'll need to click the link in that message, or enter the confirmation code in the Accounts section of your Gmail account, to complete the process. Once you've verified that you'd like to add the address to your account, you can start sending messages using your custom 'From:' address.

NEXT, you'll want to set up a filter. This is a piece that Google doesn't tell you about. Since you are going to leave the email in your other accounts, you will want to be able to easily identify and delete email from those account that is in your main Gmail (aggregate) account. That way, you don't fill up your main gmail account.

Here's the Google Help instructions on setting up a filter. Read after for my recommendations. The orginal help is at: http://mail.google.com/support/bin/answer.py?answer=6579

How do I set up filters?

Gmail's filters allow you to manage the flow of incoming messages. Using filters, you can automatically label, archive, delete, star, or forward your mail, based on any combination of keywords, sender, recipients, and more.

To create a filter:

  1. Click Create a filter (next to the Search the Web button at the top of any Gmail page).
  2. Enter your filter criteria in the appropriate field(s).
  3. Click Test Search to see which messages currently in your account match your filter terms. You can update your criteria and run another test search, or click Next Step.
  4. Select one or more actions from the list. These actions will be applied to messages matching your filter criteria in the order in which the actions are listed -- for example, you could choose to Forward matching messages to a specific email address, then Delete the messages.
  5. If you'd like to apply this filter to messages already in your account, select the Also apply filter to x conversations below checkbox.
  6. Click Create Filter.

To edit or delete existing filters:

  1. Click Settings (at the top-right of any Gmail page).
  2. Click Filters.
  3. Find the filter you'd like to change and click its edit link, or click delete to remove the filter.
  4. If you're editing the filter, enter the updated criteria for the filter in the appropriate fields, and click Next Step.
  5. Update any actions and click Update Filter.

MY RECOMMENDATION is that the Filter criteria is on the "To:" you should set that to one of the addresses in your "send mail as." Then, as the action, apply a label. The Label can be the email address as well. Keep it simple.

Consider doing the same with your POP Accounts. As a last little tip, if you want to aggregate your Yahoo and Hotmail accounts, simply set them to be checked via POP!

Enjoy

Friday, February 2, 2007

Best Banana Pudding Ever

Hands down, the best banana pudding ever. A couple of tips: beat whipping cream just until it makes little peaks that stand on their own - don't make butter. Also, buy the mini nilla wafers and put a smiley face on top. Kids, young and old, will love it.

  • 1 can of eagle brand milk
  • 1.5 cups cold water
  • 1 small package of vanilla instant pudding
  • 2 cups of whipping cream (not cool whip)
  • Vanilla Wafers... the little ones
  • 2 - 3 bananas depending on size

Mix water, milk and pudding together with a wire whisk. Then refrigerate for 10 minutes or so. While waiting, beat the whipping cream. Then cut your bananas the same thickness as the nilla wafers. Then fold whipping cream into pudding. Now you have 3 things... wafers, nanas, pudding/whipping cream mix. Layer cookies, nanas, pudding . 2 or 3 times. Put extra cookies on top for the hell of it.

Enjoy.

Recipe Mexican Lasagna

Yep. This one is great. You have to be an absolute idiot to mess it up. Also, buy a gimme foil pan, do all the assembly, then cook on site. The first time I had this, my friends wife was all bed rest and couldn't cook for him. I know, you'd think he would cook. Listen, his job (as he told me) is make money and eat... or something like that. He does BBQ, but day to day, that's not his deal. So we had this. A couple of months later, my brother and his wife lost her father. I brought this over amd they were very pleased. Your loved ones will be, too.

  • 1 lb. lean ground beef
  • 1/2 cup chopped onion
  • 1/2 cup chopped green pepper
  • 2-1/2 cups Herdez Salsa (or some other thick and yummy salsa)
  • 1 can (11 oz.) whole kernel corn, drained
  • 1 tsp. chili powder
  • 1 tsp. ground cumin
  • 12 corn tortillas (6 inch), divided
  • 1 container (16 oz.) BREAKSTONE'S or KNUDSEN Cottage Cheese
  • 1 cup KRAFT Shredded Sharp Cheddar Cheese
  • 1 can (2-1/4 oz.) sliced pitted ripe olives, drained



PREHEAT oven to 375°F. Brown meat in large skillet on medium heat; drain. Return meat to skillet. Add onions and peppers; cook until crisp-tender, stirring occasionally. Add salsa, corn and seasonings; mix well.

LAYER one third of the meat mixture and one half each of the tortillas and cottage cheese in 13x9-inch baking dish. Repeat layers; cover with remaining meat sauce. Sprinkle with Cheddar cheese and olives.

BAKE 30 min. or until heated through.

Corn Pudding

OK. This is the bomb. I've had awesome feedback from everyone who has eaten or made this. Today, a colleague told me he made it Thanksgiving, Christmas, and took some to his friend who's wife is recovering from surgery.

Note that if your slow cooker cooks from just the bottom, it may take more time. If your cooker hits it from all sides, do it on high for about 2 hours, low for 2 hours, then keep warm until ready.

  • 1 package (8 oz) cream cheese, softened
  • 2 eggs, beaten
  • 1/3 cup sugar
  • 2 1/3 cups fresh or frozen sweet corn
  • 1 can (16 oz) cream style corn
  • 1 package (8 1/2 oz) corn bread muffin mix
  • 1 cup milk
  • 2 tbsp. butter or margarine, melted
  • 1 tsp. salt
  • 1/4 tsp. ground nutmeg

Lightly grease slow cooker. In mixing bowl, blend cream cheese, eggs and sugar. Add remaining ingredients and mix well. Transfer to slow cooker. Cover and cook on high 3-4 hours. Serve.

Makes 10-12 servings.

Exercises for Scoliosis

I wish I could remember the web site from wence all this came. There were some groovy video to instruct. Only a couple need instruction. Google for 'Exercises for Scoliosis' to find more. I'll update with progress as to how this is making my back feel.

Leg & Arm Extensions

Start with your hips right over the stability ball. With one toe down, extend your left hand up, keeping your right fingertip palm down, while lifting your right leg up. Hold for a count of three and then switch sides. Continue for 3 sets of 10, taking thirty to sixty seconds in between each set.

Back Extension

Start with your stomach on top of the ball and you knees on the mat. You will want to fall forward over the ball in a relaxed position. From there you will come up to the point where your back feels as though it is parallel with the ball. Your hands and arms should be raised and come straight out so they are also parallel with the ball. Hold this position for a count of 5. Continue for a set of 10.

Triceps Raise

Sitting on the ball, with your feet flat on the mat, square yourself your spine is perfectly straight. Take a weight in your right hand, drop that hand behind your head and use your left hand as a brace to keep your elbow right beside you head. Pivot around your elbow joint lifting your right hand above your head, as you squeeze the back of your arm. Then lower back down. You will want to switch between arms as you continue for 3 sets of 10 on each side.

Bent-Over Raise

Working with lighter weights, start by sitting on the ball and then bend over so that your back becomes like a table and you can wrap your arms around the middle of your thighs. Pick up the light hand weights and put them on your hands. You should have soft elbows but almost an extended arm. Bring you arms straight up and to your sides, so that they are almost parallel with the ground. Then bring them back down.

An alternative to the light weights is no weight at all. You will want to continue this exercise for 3 sets of 10.

Standing Raise

This exercise is very similar to the bent-over raise. Working with light weights in a standing position bring the weights straight up and to your sides. You will want to point your little finger towards the ceiling. Be sure to keep you back straight the entire time and bring your arms up so that they are parallel to the ground. Continue for 3 sets of 10.

Upright Row

From a standing position, start with your arms down in front of you, your palms should be facing your legs with your weights in your hands. Begin by pulling your arms straight up your body so that your elbows are a little higher than your hands. Then bring your hands back down. It is important to emphasis a pause at the bottom. Continue for 3 sets of 10.

One-Arm Row

Leaning on the stability ball with your left hand, take a heavier weight or both lighter weights into your right hand. With a flat back, row your arm up, keeping your elbow bent, so that your elbow points to the ceiling. Concentrate on squeezing your shoulder blades together when your elbow gets to the top, and then release. You will want to switch between arms as you continue for 3 sets of 10 on each side.

The Waffles of Liege

A Quick Intro

This is a little recipe I researched and have cooked a couple of times to perfect. Some background to get you in the know when you serve these to your pals. There are 2 basic waffles in Belgium. The waffles of Brussels and the waffles of Liege. Those from Brussels are the ones we think of when we hear "Belgian Waffles." Fruit, whip cream, etc. The waffles of Liege are a lesser known, but more commonly eaten waffle... at least in Belgium.

Eat Like a BelgianI like to tell people that Liege Waffles are basically the Belgian donut. They are hand-held, sweet, require no syrup, and are good hot or cold. They're more dense than their cousin from Brussels, and frankly, I like them better. Cook them at night for an easy desert, and save the rest for breakfast as you walk out the door or when you get to the office.

The Recipe


  • 4 oz. (one stick) butter
  • 1/2 cup sugar
  • 2 eggs
  • 1 teaspoon vanilla
  • 1 cup flour
  • 3/4 teaspoon baking powder
  • Some raw sugar or other kind of large granulated sugar (vanilla, cinnamon, etc.)


Cooking Instructions


  • Melt butter in microwave but just barely.
  • Mix in sugar, then mix in eggs (seriously - if the butter is too hot the eggs will cook), then add the vanilla. Make sure this is all mixed well. You should use a whisk not a fork. Forks are for eating not for cooking.
  • Now, add the flour a half cup at a time. Finally, add the baking powder.
  • Plug in the waffle iron and let the batter rest. It's very important to give the batter time to rest.
  • Sprinkle raw sugar on the batter sitting in the bowl.
  • Coat the iron with some non-stick spray for the first waffle
  • Put a plop in the middle (sprinkle side down) but not enough to fill up the iron... just enough to press out to a little irregular square when you close the lid.
  • Finally, sprinkle a little more raw sugar on top and close the iron.
  • Cook.


Enjoy immediately or cool on a wire rack. Don't store in bags, etc. until they are completely cool.

Disable the Automatic Trailing Wildcard

Reference Siebel Supportweb for more information:

FAQ 2256: How Can You Disable the Automatic Trailing Wildcard in a Query?

To Disable Automatic Trailing Wildcard for the Current Query Only
Any user can disable this feature for a particular query by entering the equal sign (=) in front of the query criteria.
For example, when querying for accounts, if you want to find the exact match for the "3Com" account, enter "=3Com" as your query criteria in the account name field.
To Disable Automatic Trailing Wildcard for All Views in the Application
In the .cfg file used to run the application, such as uagent.cfg for the Siebel Call Center application, add the following line in the [SWE] section:
AutomaticTrailingWildcards = FALSE