8000字長文:拆解Oracle產品架構,以OMS為例
做B端產品時,多研究行業內頂級產品的案例,可以快速提升自己的產品設計、架構能力。比如這篇文章,我們拆解了Oracle的產品架構,帶大家體驗一下世界級B端產品是如何設計的。
很多同學給我說:每次遇到設計難題,都會想一想Oracle是怎么設計的,然后就會找到答案。
是的,這就是學習Oracle的意義:提升產品架構能力,讓最復雜的產品設計也變得So Easy。
今天,我們就來拆解Oracle系統OMS(訂單管理)模塊的功能架構,讓大家體驗一下世界級B端產品是怎么設計的。
01 OMS產品核心架構
考慮到篇幅有限,本文無意就一個完整的OMS產品架構進行闡述,而是圍繞“銷售管理”業務,對銷售訂單相關模塊進行重點闡述,涉及范圍如下圖:
具體闡述如下:
1)組織架構與權限管理
主要包括OMS產品涉及到的組織架構設計,以及相關角色、員工賬號的功能和數據權限設計。
2)商品管理
重點闡述商品的相關屬性,具體包括信息類屬性、業務控制類屬性。
3)價格管理
價格管理可以分解為三個核心要素,分別是:
- 對誰定價(which):一般是根據具體商品定價,但也有公司是根據商品分類定價。比如分類為“A型圓珠筆”的商品,統一一個價格。
- 誰可以享受該價格(who):是所有客戶享受統一價格?還是不同客戶享受不同價格?
- 價格如何調整(how):折扣和促銷如何處理?運費等附加費用如何處理?
在產品設計時,需要考慮不同類型客戶匹配不同價格。以及不同條件下,不同客戶可以享受到不同的折扣。
4)客戶管理
具體包括客戶分類,也包括以客戶分類為基礎的“信用管控”。還會涉及在集團架構下,多業務線共用客戶信息的問題。
5)銷售管理
涉及多種銷售履行模式。本文涉及的模式包括:
- 按庫存銷售
- 以銷定采
- 內部交易
6)發貨管理
不同規模、不同類型的企業在發貨模式上可能存在較大差異。
比如,小企業會傾向于最簡單的一步式發貨:系統先出庫,打印出庫單,然后根據出庫單提貨聯去倉庫提貨。而大企業的發貨模式則會相對復雜。
除了企業規模,業務類型也會影響發貨模式。比如,外貿發貨的流程和內貿發貨就存在很大差異。
02 批發部的OMS產品架構
我們首先從一個小規模的批發部說起。
批發部的典型特點,就是在一個較小的區域從事商貿批發工作。他們的年銷售額往往介于幾百萬到幾千萬之間,利潤也頗為微薄。因此在銷售管理上,除了盡可能擴大銷售額,剩下的重心就放在如何提升業務效率上。
在批發部OMS系統的設計上,要非常注重功能的可用性,以及操作的高效率。
具體如下:
1)組織架構與權限管理
批發部往往只有一個銷售部門,因此在數據安全性上,并沒有太多要求。只需要按照職能分配好功能權限。比如:銷售人員分配銷售訂單和收款功能,倉庫管理人員分配發貨功能,財務人員分配記賬功能,確保他們不會越權操作即可。
因此,權限設計非常簡單:將相關功能分配給相應角色即可。比如銷售訂單功能分配給銷售人員角色;再將銷售人員角色分配給相關用戶即可。示意圖如下:
2)商品管理
批發部的商品管理,主要用于信息記錄和查找。比如,記錄商品的規格和圖片,以便于銷售人員查找和確認。
在設計商品管理時,除了標準的商品屬性比如編碼、名稱、規格等等,還需要考慮不同批發部業務的特殊性。
比如,對于食品類業務,可能需要增加“口味”屬性,對于衣服類業務,可能需要增加“尺碼”屬性等,不一而足。因此,需要設計“自定義屬性”字段功能,讓客戶自行決定應該增加哪些商品屬性。如下圖所示:
3)價格管理
對于大部分批發部來說,往往只有單一價格。而對于其中部分商貿公司,他們可能允許業務人員自行修改價格——只要在公司限制的范圍內即可。
價格管理邏輯如下圖:
但是對于另一部分商貿公司來說,由于他們的批發業務做得很大,以至于發展了分銷層級,就需要按照不同類型的客戶分別定價。
比如一級分銷商和二級分銷商由于采購規模不同,就需要匹配不同的價格。對于此類商貿公司,他們管理往往比較規范,有較為嚴格的價格規則,不允許業務人員隨意調整價格。
價格管理邏輯如圖所示:
因此,在設計批發部OMS系統時,既需要支持標準價格,也需要支持分類價格。考慮到不同企業有不同的價格調整策略,因此可以增加一個企業級配置項:是否允許調整銷售價格。如圖所示:
4)客戶管理
和商品信息一樣,批發部的客戶信息也主要用于記錄和查找。但是,對于具備一定規模的商貿公司來說,對客戶進行分類是很有必要的。
一方面,客戶分類本身是重要的客戶信息,比如我們可能需要知道中型超市類客戶有多少家、便利店類客戶有多少家,以便于我們評估市場拓展潛力。
另一方面,我們也需要根據客戶分類執行不同的業務策略。比如,不同級別的分銷客戶,可能適用不同的銷售價格(分類價格)。
因此,在設計商貿公司OMS系統時,我們需要設計相對簡單的客戶信息頁面,并且搭配客戶分類定義等基礎配置頁面。
5)銷售管理
典型的批發部往往從事“低買高賣”業務。而且由于他們的一個重要職能就是幫廠商分擔庫存和資金壓力,因此他們往往會批量購入商品,再零散進行銷售。這就是銷售管理模式中最典型的一種:按庫存銷售。
“按庫存銷售”模式的銷售訂單設計相對簡單,首先要有訂單管理頁面,然后需要管理銷售訂單的狀態:一旦銷售訂單確認生效,即自動更新其狀態為“待發貨”。
對于“待發貨”的銷售訂單,需要將銷售訂單信息同步到“發貨管理”模塊,以便行政人員或者倉庫人員進行后續的發貨操作。
6)發貨管理
對于小型商貿公司,非常注重效率,對流程的規范性相對不太關注(實際上,公司老板和老板娘可能親自處理具體業務)。因此,系統的發貨操作往往非常簡單。
典型的操作流程是:行政人員確認訂單可以發貨后,直接在OMS系統對貨物進行“出庫操作”,沖減系統庫存現有量,并打印“出庫單”。出庫單的其中一聯,交給提貨人員,再到倉庫去領取實物。
雖然這種操作方式因為“系統先出庫,實物后出庫”,會導致事實上的“賬實不符”,但是由于業務相對簡單,僅涉及很少的環節和人員,因此這種差異往往是可以容忍的。發貨流程如圖所示:
因此,對于小型商貿公司使用的發貨管理,往往只需要根據有效銷售訂單的“未發貨”明細數據,生成發貨管理頁面的“待發貨”數據,方便行政人員進行“出庫操作”并生成出庫單。如圖所示:
細心的朋友可能注意到:“發貨操作”是在單獨的“發貨管理”頁面進行操作,而沒有直接在“銷售訂單”頁面進行操作。這么設計主要是考慮到系統的延展性。如果直接在“銷售訂單”頁面進行發貨操作,可能會面臨以下問題:
在大部分比較規范的企業,“銷售訂單錄入”與“發貨操作”是兩個角色的職責:訂單管理員和發貨專員。前者只能建訂單,后者只能發貨,如果用同一個頁面,會導致權限和交互設計過于復雜。
在進行“發貨操作”時,我們可能會進行拆行,甚至多個訂單的商品合并成一個發貨單發貨。但是這些操作只能影響發貨明細,不能同步把訂單行也進行拆行和合并(在某些情況下)。考慮到這一點,也有必要單獨做一個發貨頁面。
缺乏架構能力的產品經理,有可能在這個細節犯錯,導致后續出現更復雜的業務時,整個邏輯和交互不得不重構。這對于已經熟悉原有邏輯和交互的老客戶來說,是不可接受的。
針對批發部的OMS系統整體架構如下:
03 全國性商貿公司的OMS產品架構
不同于區域性批發部,規模更大的商貿公司會進行跨區域、多品牌、多模式的經營。比如代理多個省份、多個品牌的分銷工作,甚至會拓展“代銷業務”:不同于按庫存銷售,只有當接到客戶的正式訂單后,才向供應商發起采購。
全國性商貿公司仍然非常強調業務效率,但是由于組織和業務都更為復雜,他們不得不進行更為規范化、也更為精細化的管理。
因此,在OMS系統設計上,除了注重功能的可用性和高效率以外,還需要支持更為復雜的組織和業務管理。具體包括:
1)組織架構與權限管理
全國性商貿公司由于在多個省份同時開展業務,為保持一線操作的靈活性,往往會授予分公司相對獨立的權限。
比如,不同分公司可能會授予不同商品的銷售權限。再比如,由于各個省份面臨的競爭程度有差異,因此他們需要有獨立的定價權,以及獨立制定促銷政策的權力。
更重要的是,各分公司之間的數據應該是嚴格屏蔽的。一方面是為了避免無謂的誤操作,另一方面也是防止一線隨意查看整個公司的經營數據,這會無謂的增加業務風險和管理難度。
因此,OMS系統的權限設計需要具備部門的概念:當員工被分配給某個部門以后,他就默認擁有了這個部門的數據權限。
當然,這里還有一些細節的設計,比如:父部門是否應該擁有子部門的數據權限?上級主管是否默認擁有下屬的數據權限?一般情況下,答案都應該為“是”。
2)商品管理
全國性商貿公司的商品管理,除了最基本的信息記錄和查找作用,還必須具備一定業務控制能力和多組織管理能力。
比如,通過在組織層增加“是否可銷售”的商品屬性,就可以指定某個分公司是否可以銷售某商品。這種場景的出現,既可能是由于商貿公司沒有在某些省份分銷商品的許可,也可能是由于物流、服務等因素,暫時不便于在某些地區銷售。
因此,全國性商貿公司OMS系統的商品管理,需要具備更強的管控能力。如圖所示:
3)價格管理
對于全國性商貿公司來說,由于供貨能力更強,開始有能力服務于大型連鎖超市。
和便利店以及單體超市相比,連鎖超市擁有更強的出貨能力,但相應的也對商貿公司提出了更高的要求。比較典型的一點要求就是獨家銷售協議,而其中核心條款之一就是獨家銷售價格。
因此,對于全國性商貿公司OMS系統,可能需要設計銷售協議管理功能,至少也要有協議價格功能,即針對單一客戶的定價。
除了價格,由于商貿公司可能放權給各分公司制定促銷政策,因此,還需要支持各分公司自行制定促銷方案。而且,這些促銷方案也需要遵循統一的數據權限,即各分公司之間嚴格屏蔽。
OMS價格與促銷管理功能如圖所示:
4)客戶管理
全國性商貿公司面對采購量更大、付款條件更為苛刻的客戶,除了基本的客戶信息管理、客戶分類功能外,還需要更為強大的客戶管理功能。
比較典型的就是信用管理:即商貿公司根據客戶的實力和信用記錄,給予一定的賒銷額度。只要客戶的本次訂單金額或發貨金額沒有超過“可用的賒銷額度”,就可以正常提貨。
信用管理的邏輯比較簡單:
可用的賒銷額度=預分配的賒銷額度+預收賬款-應付賬款-外部風險
其中,“預收賬款”主要包括客戶支付的預收款,在某些情況下,也可能包括客戶的承兌匯票(類似于商業白條)。“應付賬款”除了之前的欠款,也可能包括一定期間內的待發貨訂單,以及已發貨未結算訂單。
“外部風險”相對復雜,主要是一些外部事件可能導致的客戶信用受損。比如客戶將預付款單據抵押給了銀行,那么可能就需要適當沖減客戶的部分“可用賒銷額度”。
5)銷售管理
全國性商貿公司可能仍然以“按庫存銷售”為主,但是會開始嘗試“以銷定采”類業務。具體又可以分為兩種模式:
- 采購發運
- 一件代發
所謂采購發運,是指在收到客戶的正式訂單以后,商貿公司根據客戶訂單生成采購訂單,并下達給供應商。供應商根據采購訂單備貨,發貨給商貿公司,商貿公司再發貨給客戶。
為什么會有采購發運的業務呢?主要是這一類商品銷售量不穩定,如果提前購入,會占用商貿公司寶貴的資金和庫存。商貿公司收到貨以后,往往會連同客戶需要的其他商品,一并打包后發給客戶。
采購發運流程如圖所示:
一件代發和采購發運流程比較相似,但是供應商在收到商貿公司的訂單后,會直接發貨給商貿公司的客戶。和采購發運相比,一件代發無疑減少了發貨環節,不過,這往往也反映出,商貿公司只是一個純粹的“代銷角色”,供應商實際上可以直接和客戶發生交易。
在微商體系中,“一件代發”業務比較常見,畢竟微商的核心競爭力是銷售渠道,他們只需要專注于獲取客戶訂單即可。
一件代發流程如圖所示
6)發貨管理
和批發部相比,雖然全國性商貿公司仍然非常注重效率,但是業務范圍的拓展也讓發貨流程變得更加復雜。比如,商貿公司可能與物流公司展開合作,由物流公司將貨物運送給客戶。典型的發貨流程如下:
- 行政人員根據發貨計劃制作“運單”,并提交給物流公司
- 物流公司司機根據“運單”到倉庫提貨
- 倉庫人員根據實際出庫商品,進行“發貨”操作,并生成“出庫單”
- 物流公司司機將貨物送達客戶,并返回客戶簽收的“出庫單”
針對全國性商貿公司的OMS系統整體架構如下:
04 集團型公司的OMS產品架構
商貿公司如果能進一步向供應鏈延伸,建立自己的生產制造體系,那么此時它將來到一個全新的階段:集團化經營。
當然,實事求是的說,商貿公司向上整合的案例并不多見,更多的是制造型企業向下延伸銷售渠道。不管哪一種情況,由于內部供應鏈的存在,企業管理將會面臨新的挑戰,OMS系統的架構也必須能夠支撐更加精細和全面的業務管理。具體包括:
1)組織架構與權限管理
與全國性商貿公司相比,集團型公司更為復雜的管理需求來自集團管控與協作。
比如,張總作為集團副總,他在管理集團行政工作的同時,兼任了軟件分公司的負責人。如果OMS系統只有商貿公司版“按組織屏蔽數據”的能力,那么就會面臨一個兩難:到底要不要給張總開放銷售和財務功能呢?
如果開放,張總就可以管理軟件分公司的相關業務,但是他也因此能看到整個集團的銷售和財務數據(因為他屬于集團組織,又擁有銷售和財務功能權限),這顯然是不可以接受的。
這種“在不同組織擔任不同職位”的場景出現,就使得集團型OMS系統在數據權限方面需要具備更精細的管理能力。即可以把不同類型的數據權限分開,從而實現只分配給某個角色“一個組織部分數據權限”的能力。如圖所示:
2)商品管理
在商品管理層面,除了信息屬性和一般的業務控制屬性,OMS系統還必須具備更精細化的業務控制屬性。
比如,某酸奶商品在某銷售公司組織至少應該具有兩種業務屬性:可銷售與可采購。前者允許該銷售公司在系統內銷售該商品,后者允許該銷售公司在系統內向集團制造企業或外部供應商采購該商品。但是,在制造公司組織,該商品就不應該具有“可采購”的屬性,而應該具有“可生產”的屬性,以允許制造企業在系統內為該商品建立生產工單。
類似的精細化管理場景還包括:天津分公司和重慶分公司都會向北京制造廠進行采購,但是由于物理距離的巨大差異,兩者的采購時長是明顯不同的。為了更加合理的規劃采購計劃,避免庫存缺失和積壓,需要為該商品在“天津分公司”和“重慶分公司”這兩個組織維護不同的“采購提前期”數據。
3)價格管理
在價格管理方面,集團型公司開始發揮集團優勢。比如,由集團本部和全國大型連鎖簽署價格協議,從而一次性鎖定巨額銷售收入。
由于在全國性商貿OMS系統中,價格數據實際上是分組織進行管理的——A分公司的價格只能用于A公司的客戶,B公司的價格只能用于B公司的客戶——因此,在集團型OMS系統中,需要跳出這個限制,實現“全局價格協議”功能。
只要某客戶與集團簽訂過了全局價格協議,那么在任何分公司,只要是針對該客戶的銷售訂單,都會統一引用該價格協議。
實際上,類似的場景也出現在采購管理系統。
比如某快遞公司為了控制墨水筆成本,由集團與墨水筆廠商統一簽訂價格協議,墨水筆廠商則直接把貨發給各地分公司。憑借著集中采購的數量優勢,不但提高了墨水筆的質量,也因此降低了采購價格。由于此類場景不屬于OMS系統,本文就不再詳細闡述。
4)客戶管理
集團型公司往往還有一個特點,那就是擁有多條業務線。比如,某房地產公司既有新樓盤銷售業務,也有老樓盤物業服務。
多業務線會帶來一個“煩惱”,那就是各業務線可能會重復建立客戶檔案,以至于在集團層面,無法清晰的描繪客戶畫像,也無法準確的統計客戶數量。
那么,集團型OMS系統如何解決這個問題呢?
解決方案之一,是在“客戶層”和“地址層”之間,加一個“賬戶層”。
當某一個分公司新建客戶時,系統通過數據校驗,可以提醒分公司操作人員“已經存在該客戶信息”。這樣,操作人員就只需要在該客戶信息下方,添加一個“賬戶層”信息,而不用再添加一個重復的客戶。同時,“賬戶層”信息是根據分公司權限隔離的,這樣既保證了不會重復建立客戶信息檔案,也保證了分公司之間的客戶數據嚴格屏蔽。
架構如圖所示:
值得一提的是,這種“合理分層”的能力,是B端產品架構能力的重要體現。
比如,有經驗的HR產品經理,就會把人員信息分為“人員層”和“分配層”兩個層次。人員基本信息比如員工號、年齡等在“人員層”統一管理,但是職位信息則在“分配層”進行管理。
這樣,一方面可以處理“一個員工多個崗位”的需求,另一方面也可以實現更精細化的數據權限:這位員工的多位上級,只能看到自己所管理的那個“分配”(即職位)的相關信息。
5)銷售管理
如果集團型企業進行了“垂直一體化”:既包含銷售型公司,又包含生產型公司。這就帶來了一個新的管理需求:內部交易。
你可能會認為:既然是一家公司,何必采用“交易”這么復雜的業務形式?簡單做一個庫存調撥不就好了嗎?
關鍵在于,集團型公司為了嚴格區分各分公司的責權利,從而適當的考核和激勵各分公司管理層,這些分公司往往都是獨立核算的——因此即便是集團內部公司的采購,仍然要“親兄弟、明算賬”。
和“正?!钡牟少?、交易業務不同,由于內部交易流程的雙方使用的是同一套系統,因此采購和銷售流程,以及財務核算流程,都可以更順暢的進行協作。
比如,當作為采購方的分公司發起內部申請后,作為銷售方的分公司就會自動生成對應的內部銷售訂單;而當內部銷售訂單發貨以后,內部采購申請就會自動進入“可接收”狀態。相關的財務數據和單據,也都可以自動化的生成。
流程如圖所示:
Oracle系統內部交易流程示例
6)發貨管理
對于集團型企業來說,已經可以接受更為復雜的訂單。
客戶可能定制一批商品,并且要求按特定的時間點分批發貨。這就對集團型公司的供應鏈能力提出了更高的要求。
比如,某位海外客戶定制了300輛特種車,并要求分別于1月1號、1月11號和1月21號各交付100輛。交貨方式是FOB,即企業只需要把貨物在指定的裝運港裝船,并完成相關單據交付,即可視為交貨。
對于負責發貨的銷售公司來說,往往需要安排專人跟蹤訂單,以完成整個復雜的發貨流程。流程(示例)如下:
- 跟單人員在OMS系統創建“發貨計劃編號”,將本次計劃發貨的銷售訂單明細都關聯到該“發貨計劃編號”。
- 確認車輛入庫后,跟單人員根據“發貨計劃編號”發放銷售訂單,生成“出庫申請”。
- 物流人員根據“發貨申請”進行裝柜并出庫,在OMS中操作“完成出庫申請”,系統將發貨商品從物流部倉庫轉移到“在途庫”
- 貨物按FOB條款裝船后,跟單人員根據海關提供的報關白聯,在OMS中操作“發貨確認”。系統從“在途庫”中減少對應商品庫存,并生成財務核算數據。
至此,一次發貨操作完成。
針對集團型公司的OMS系統整體架構如下(僅列示差異化部分):
05 總結
回顧本文,什么是好的產品架構?其中一個最核心的標準,就是能夠滿足不同企業在不同發展階段的個性化需求。
實際上,如果不做標準化產品,就并不需要太強的產品架構能力。因為只需要模仿客戶的現有流程,進行簡單的線上化就好了。但是由此帶來的問題就是:投入巨大成本研發的系統,僅僅只是一個“一次性用品”。
紛享銷客PaaS平臺總負責人健鵬曾經做客產品星球直播分享,他說道:SaaS公司很容易受到大項目的誘惑。這些大項目不但金額高,還有示范效應。但是SaaS公司必須認識到:這樣的項目需要占用大量的研發資源,而且由于無法復用,最后很可能還要面臨虧損。
另一個中國細分賽道頭部SaaS公司的客戶成功副總裁也給我說過:一個千萬級的大項目,最后一核算,發現研發和交付成本超過三千萬。所以做定制化項目,真的要考慮清楚。
就以本文的發貨流程為例,批發部、全國性商貿公司和集團型公司的發貨流程存在較大差異,但在實際場景中,一個公司可能同時出現其中2種,甚至3種發貨流程。或者在早期是比較簡單的發貨流程,到后期發展為比較復雜的發貨流程。
因此,好的SaaS產品,一定會兼顧系統的簡潔性和靈活性,即通過標準化功能加上一定的配置項,滿足各種差異化的發貨管理需求——不僅僅是滿足更多企業的需求,也是能夠和客戶一起成長,不至于當客戶發展壯大、業務變得更復雜以后,我們反而面臨被拋棄的命運。
實際上,很多單純強調輕薄、易用的SaaS應用——比如部分無代碼SaaS——就會面臨這種窘境。
那么,如何突破這種窘境?
一方面我們要深入業務應用,把產品做厚,形成粘性和護城河;更重要的是,我們要一開始就注重產品架構,這樣才能越走越輕松,跟上客戶的成長步伐。
而如何提升產品經理的產品架構能力?我很認同紛享銷客PaaS平臺總負責人健鵬的觀點,那就是要多研究國外頂級B端產品,比如:SAP、Oracle、Salesforce。少研究國內BAT偏C端的產品,因為他們過于輕薄。
本文由人人都是產品經理作者【ToB老人家】,微信公眾號:【ToB老人家】,原創/授權 發布于人人都是產品經理,未經許可,禁止轉載。
題圖來自Unsplash,基于 CC0 協議。
- 目前還沒評論,等你發揮!