Tuesday, February 24, 2009

Blogging and the freedom of expression?

While wikipedia explains what could be the freedom of expression, India, the "largest-democracy" seems like is unable to handle the truth; the Indian court holds 19 years old boy for exercising the right of freedom of expression on his web blog.

On the other hand it really gets controversial when what could be the limit the freedom of expression should be exercised; and a fine line between hurting poeples' feelings and handling the truth. Well, for you to decide!

Thursday, February 19, 2009

Corrupt MAPI32.DLL or MSMAPI32.DLL?

For some reason, today, installed this MS Word 2007; and zap...! My MS Outlook 2003 stopped working. I was continuously getting this error
Cannot start Microsoft Office Outlook. MAPI32.DLL is corrupt or the wrong version. This could have been caused by installing messaging software. Please reinstall Outlook


After almost a day's worth of trying different things from google comments/pointers(from installing to reinstalling to reparing to installing 2007 and then uninstalling 2007/etc); even there is a fix called fixmapi.exe in \Windows\System32\FixMapi.exe provided by Microsoft that didn't work at all. But well... finally I am able to get it to run. I am posting this so it would of help if in future I or someone like me encounter similar lucky issues, I would say (0:


1.Rename MSMAPI32.DLL to MSMAPI32.BAK in folder C:\Program Files\Common Files\System\Msmapi\1033
2.Start Outlook 2003.

Tuesday, February 17, 2009

Understanding ISO8583 Message Type

Understanding ISO8583 Message Type

The following visual "reveal"(I would say) the meaning and composition of an ISO8583 message type. First bit tells the version of the ISO8583, second defines the class, third is for function to be performed(request/response/etc), and the last one shows origin. See following fig-1.


FIG 1: Message type definitions of each bit.

Here(Mitug) is a resource that helped me a lot to get started, that was referred to me by my friend Syed Kamran. In some places Mitug website doesn't work, atleast a couple of my friends from different locations of the world map reported the website is not opening the page. So for friends who are unable to open the same, rightclick and save as this [PDF] layman's guide to understanding the ISO8583 financial transaction messages.


Monday, February 16, 2009

USPS & Mailing SCM Industry: Introduction

USPS & Mailing SCM Industry: Introduction

I was thinking about the rag’ra (pain) I had when I started learning about a domain that was entirely new me. United States mailing supply chain industry has a very complex business process. And it would take several years for a newbie to understanding the ups and downs by leaps and bounds of this industry, in specific United States Postal Services aka USPS.

Since I was hired to develop a solution that could ease the mailing industry business process, and help large and small mailers as well as consolidators. Software that would provide the ease of scheduling appointments with USPS with a click of a mouse; which I delivered gracefully.

The day I left Assurety Consulting, I decided to add my 5 pints and document all of my mailing industry knowledge that I learned while developing solution, so that it could be helpful to someone who is in need.

The reason business is so complex is its obscurity. You find almost no information how the mailing supply chain management business work in United States. You sure will need a seasoned “he” or “she” having more than 15 years of experience to guide you through the process; and wait, sometimes the seasoned-ones also stop and think and discuss and then reveals the business process. And when you get to learn these things, you find a lot of loops and holes along with a full throttle/burst of ideas/suggestions/fixes that sometimes are, again, bottle-necked by the process that this business industry follows for requesting a change.

Although the process followed by MTAC for the change request is not bad; but what lacks is the interaction with small mailers/consolidators. They could, I believe, play a vital role to ease the business process and their requirements.

I have been through the FAST Certification process several times; and we found a great deal of misleading in documentation and actual implementation while conducting USPS FAST CAT tests for TM v2.*. We even compiled a list of issues and non conformance and handed over the FAST.

I shall write more on the mailing industry as I get time and share more of my knowledge and experience with the industry.

Monday, February 9, 2009

Banking Industry - Default Account Marking Business Process

Card Default Account Marking Business Process

This is for those who had problems understanding a generic default account marking business process. I had a problem understanding the same, so I came up with a visual that helped a lot.

Business rules:
Rule 1:
At any time only 1 account can be marked as "O"
Rule 2:
If there is a "O" type account in one category then no "Y" type account is required in that category
Rule 3:
If there is a "Y" type account in one category then all other accounts should be of "N" type.



Following is the simple code for the above flow.

private void ApplyRulesEx(DataTable dtAtmCards)
{
//Pseudo:
//STEP 1: Demark old account status to N
//STEP 2: Mark the new account status to O or Y
// 

bool bStatus = false;

try
{
string strRequestCategory = m_strCategory;//"10";//
string strRequestAccountNumber = m_strAccountNumber;//"0949011001576";//
string strRequestMarkAs = m_strFlagToBeMarked; //"Overall Default";// //mark as O, overall default

for (int nRowNumber = 0; nRowNumber < dtAtmCards.Rows.Count; nRowNumber++) 
{ 
//1. Parse through each db record, get the status and category 
//2. if dbCategory = requestCategory) then mark all O and Y's as N 
//3. Else, its a different category, so mark all O as Y. 
// make it default for that type only 
//4. Send 

string dbAccountStatus = dtAtmCards.Rows[nRowNumber]["Default_Account"].ToString(); 
if (dbAccountStatus.Equals("")) dbAccountStatus = "Non Default"; 
string dbAccountNumber = dtAtmCards.Rows[nRowNumber]["Account_No"].ToString(); 
string dbAccountCategory = dtAtmCards.Rows[nRowNumber]["Account_Type"].ToString(); 

if (dbAccountCategory == strRequestCategory) 
{ 
if (dbAccountNumber == strRequestAccountNumber) 
{ 
//the request account status change is same as the current overall default account. 
//Lets change that directly. Only one call to phoenix. 
//this means, that the requested account number and category is same as 
//the db account number and category, so, no need to send any "N" statuses, 
//lets do nothing. and break; 

CLogger.getInstance().Log("Try marking account: [" + dbAccountNumber + ":" + dbAccountCategory + "] as: [" + strRequestMarkAs + "]", System.Diagnostics.TraceLevel.Info); 
bStatus = MarkAs(strRequestMarkAs, dbAccountCategory, dbAccountNumber); 
} 

else 
{ 
//2. if dbCategory = requestCategory) then mark all O and Y's as N 
//means, the requested category is same as the this account's category, 
//so this means if the current db status is overall or yes, 
//we need to make it N 

if (dbAccountStatus == AccountStatuses.Overall || dbAccountStatus == AccountStatuses.Yes) 
{ 
//Make it "N", which means No. 
CLogger.getInstance().Log("Try marking account: [" + dbAccountNumber + ":" + dbAccountCategory + "] as: [" + AccountStatuses.No.ToString().Substring(0, 1).ToString() + "]", System.Diagnostics.TraceLevel.Info); 
bStatus = MarkAs(AccountStatuses.No.ToString().Substring(0, 1), dbAccountCategory, dbAccountNumber); 
} 
} 
} 
else 
{ 
//3. else, its a different category, so mark all O as Y. 
// make it default for that type only 
if (dbAccountStatus == AccountStatuses.Overall) 
{ 
//Change any overall status from Overall to Yes, send Y. Static/hardcoded. 
//TODO: Put Y in app.config for ready change. 
CLogger.getInstance().Log("Try marking account: [" + dbAccountNumber + ":" + dbAccountCategory + "] as: [" + "Y" + "]", System.Diagnostics.TraceLevel.Info); 
bStatus = MarkAs("Y", dbAccountCategory, dbAccountNumber); 
} 
} 
} 
} 
catch (Exception exc) 
{ 
CLogger.getInstance().Error("CAccountHandler", "ApplyRules", exc.Message); 
} 
} 

Hope this helps.

Mailing Industry Supply Chain Management Business Process [Exposed]

USPS/Mailing Industry Supply Chain Management Business Process [Exposed]

The supply chain management in United States has the following business process, that incorporates United States Postal Services(USPS), and small/medium/large mailers/consolidators. This is to help understand the SCM business process that is too complex, and requires alot of thoughts and ideas.

Related Posts

Popular Posts