Category: Knowledge Base

  • bGraph for Business Process Management

    Introduction

    While in article Build a Business Process Management System – Stage of System Building we have defined that the 1st stage of building a system is Modeling, in article Build a Business Process Management System – BFs-WAITER Pivot Table we have further named the content or directions that we should included in the Modeling stage as BFs-WAITER.

    No matter how comprehensive the model can reflect the intricacies of the real world, we should have a tool to effectively transform the model to an executable system with a human interface, namely bGraph in Diamond Digital Marketing Group. Before we dive into the functionality of the bGraph, in order to sharpen the effectiveness of the it, it is always a good practice to enumerate the problem patterns that we encountered when using traditional tools.


    Problem Patterns in Modeling Stage of BPM Building

    Polymorphism in communication

    In the very beginning of a Modeling Stage, the Business Analyst (or Consultant, whatever you name it) will conduct an interview to the stakeholders of the target company in order to collect the information relating to the target business process. Any kind of documentation collection, verbal description, or even on front line field observation is carried out by the Business Analyst to be familiar with the target business process.

    After the Business Analyst finished the interview, he/she should spend time on organising the data into information and pass it to the System Analyst (and his/her programmer team) and bring the BPM System Building stage to Stage 2 (Standardization). 

    However, different target businesses, different Business Analysts or different clients, will always use different wording or language to describe the same concept. For example, while the client will refer to the product they are selling as Product, Business Analyst will name the Product as SKU. Another example is that the wording Last Name is a synonym of Surname, which can be used interchangeably.

    On the contrary, Business Analyst and Client will use the same wording to refer to different business concepts. One of a typical example is the term “Client“. In a manufacturing industrial chain, no matter if you are the Manufacturer, Distributor or the Retailer ,you will always name your downstream as “Client”. During a BPM System Interview, a  Business Analyst needs to pay double attention to figure out who (Manufacturer, Distributor or Retailer) the term “Client” is referred to. As a professional Business Analyst, we will name them as the Brand, the Merchant , the Retailer and the End User respectively in order to uniquely identify them.

    This polymorphism in communication not only occurs between the Client and Business Analyst, but also the Business Analyst and the Programmers. The more different wordings are used , the more resistance will be derived during the communication. 

    Therefore , a communication protocol which can synchronise the wording is necessary.


    Duplicated Analysis Wordload with Different Clients

    No matter which industry , country or business model the client is in, a CRM system will always share some common properties and features. 

    For example, the client will expect a standard CRM to have a Contact module which at least has First Name and Last Name as the properties of the object Contact.

    As a Business Analyst , in a BPM System Interview, you may not want to waste both you and your client’s time to go through what common properties a CRM System should have, which those common properties may properly went through many times in the previous similar project.

    On top of it, it is a must for a CRM to have a Country field for the users to fill in the nationality of the client. As a Business Analyst, you may not want to go through the comprehensive list of countries again and again in different projects.

    In this sense, it will be a great time saver if we can have a CRM System Building Template which comprises all the common properties of  a standard CRM.


    No Trigger On Searching Similar Functions in Previous Project.

    Even though you (as a Business Analyst) are driven by public-spiritedness that you already encapsulated a comprehensive Country list as an array for next project use, how can the other Business Analyst , or even the future yourself, remember or realize that you have already created the Country List before?

    Even worse, the concept Countrycan and will occur not only in CRM , but also almost any kinds of system like Project Management System, Eshop or Booking system. What will make (i.e. trigger) the programmer who is going to build a Booking system think that he can refer to the previously built CRM system to find out the Country List? If he/she cannot realize that a Country list already existed in some other project blueprint , he/she may probably will spend time to do it again, what duplicated the cost of development.

    If the next Business Analyst does not realize that you have already done this before, he will not search for the Country List. There is always a gap between searching for the solution and the solution itself.

    Unique Wordload with Different Client

    Although there are many properties in common in  a CRM system, there are different properties too. For example, while a trading company may expect a Contact is defined as a Company or Organisation which should have Company Name field, a Beauty salon may expect all their Contact is an individual which should have First Name and Last Name field. 

    It is necessary for us (Diamond Digital Marketing Group) to have a system which stores all the common and differences of building different systems for different clients.


    Streaming (vs Batch) BPM Building Process

    To continue the example of CRM system building, as a Business Analyst, even though you have carefully listened to your client and clearly defined the common and different fields of the target CRM system after the 1st interview, it is very unlikely that you can hit a home run to gather 100% of the expected features and properties of the target CRM system in the 1st interview. While a system building is a lengthy project which always lasts for months or even years, the business environment is probably changed from time to time during the target CRM system building period, which will also affect the features and properties of the target CRM system.

    Imagine a scenario as below:

    In Day 1 the Business Analyst suggested the field First Name and Last Name to be included in the Contact Module of the target CRM system. In the very next Day 2 , the programmers have already kicked off the program coding workload and created a Table in the Database , as well as the First Name and Last Name Field in the user interface. 

    However, in Day 3 due to a new Marketing Manager (a “she”) on board from the client side, she perceived that the fields Maiden Name and Middle Name are common sense and should also be added into the Contact Module. While she passed this request to our Business Analyst, and then our Business Analyst passed this request to the programmers on Day 5 by directly appending 2 New Columns Maiden Name and Middle Name in the CRM system Building Blueprint Spreadsheet. 

    This behavior will make the programmers confused because (if you have paid attention to our story) the programmers had  already completed the program coding workload in Day 2, how can they realize that 2 new columns are appended to the CRM system blueprint spreadsheet which they had just brought to coding?

    Even though you may suggest that the Business Analyst can notice the programmers after they had done any adjustment in the blueprint spreadsheet, due to the fact that the specification of the blueprint is in fact under a streaming status which can be and will be changed from time to time, it will be impossible for the programmers to build the system based on a ever changing blueprint. Do you expect the programmers to click if there is any modification in the blueprint spreadsheet every 1 hour?

    In this sense, a streaming oriented system blueprint is necessary for the communication  between the Business Analyst and the Programmers, instead of a traditional system building blueprint which only reflects an instantaneous time spot. 

    This streaming oriented communication mechanism not only satisfies the modification need during the development status, under a DevOps concept, but also in the future after the system is brought to production due to the fact that the system is a living organism which is dynamic to the ever changing business environment. The traditional Batch (or Versioning) oriented can not satisfy in this sense.


    Mobility of the System Building

    As an experienced Business Analyst , you can imagine that no matter how you ask your client to submit an expected new field or new feature of a system via a submission form, the client may probably not follow your instruction and simply send that expected new field to you via email or even WhatsApp.

    After you receive the request from the client, instead of only simply forwarding the request to the programmer to handle, as a responsible and professional Business Analyst , it is our duty to validate whether or not the new request is a valid request (most of the time the request is invalid).

    For example, if the Client complains in the Contact module of a CRM that the field Sex is missing in the Form in the user interface,  you should first of all go to the project blueprint to check whether the field Sex should be included in the blueprint. If the Sex field can be found in the blueprint but not in the Form in the user interface, then you should contact the programmer to fix it up. But in the real world, most of the time after you conduct the checking, you will realize that the field Sex is in fact named as Gender in the Form in the user interface of the Contact module. 

    Can you imagine this kind of back and forth checking and non productive communication is the main cause of eroding the time on production.

    Think about if you are handling 10 BPM system building projects on hand , how can you quickly open a system (if there is any!) in your mobile device to check whether the complaint from one client is valid or not? If the complaint is valid , how can you quickly send an instruction to the programmer to fix the bug, provided that you are not seated in front of the desktop but instead on the way travelling to the next client meeting?

    If you find the complaint is valid and is a critical path of the project which if you don’t fix up the bug immediately the error will cascade to the next node of the critical path of the project which in turn derives an irreversible catastro, you cannot afford to notify the programmer after you finished the meeting. 

    A powerful steaming BPM building system is necessary for catering all the mobility needs of the communication.


  • File Naming Convention

    File Naming Convention

    Definition

    File – referring to any kinds of formats of computer file. (e.g. JPEG / PNG / PDF)

    Naming Convention – referring to the company practice and standard when naming a file.


    What Problem Patterns File Naming Convention Solve

    Differentiate the Target File from other File

    The Function of a File Name is to uniquely identify a specific File from its counterparts. By uniquely naming the File, you can save both you, your teammate and your client HUNDREDS of hours in now and future during:

    Communication

    The more generic the file name you are naming, the more time in the future you need to spend on adding properties to uniquely identify the target file.

    For example, when you want to tell (or type) the client to find the Report in the Email, you can imagine there will be thousands of file names with Report shown in the storage pool. Afterwards, you have to tell the client the Report created on Oct 16 2024, and then a few, and then you keep adding property to describe the file name until there is one and only one result (i.e. unique) show up.

    No matter you speak or type, both you and the audience take times. The less you speak or type, the more time you save.

    Searching

    Same logic , if you can simple telling the client / teammate / future yourself the unique number of the File Name, your (now and future) life will be much more easy.

    In fact, the time in Communication and Searching accounts for at least 50% in a working life, while Production time (i.e. the time you really put on creating the output) just accounts for 30%. (the remaining 20% is time or correcting error)


    Step By Step on File Naming Convention

    Identify the Parameters 

    For example, If a teammate wants to send a Ads Budget Record to its client, the following  parameters should be carried out: 

    File Name ParametersDescriptionExample
    Teamwork Task# (TMT)The 8-digit Task# of Teamwork.com1#42919323
    Client AliasThe short name you used to mention your client in daily lifeNike (instead of Nike Asia Ltd)
    File TitleThe topic of the file contentSalesReport
    VersionVersion in terms of YYYYMMDD20240525
    StatusApproval or Production StatusApproved

    The final example outcome will be as below:

    #42919323_NikeSalesReport@20240525_Approved


    Sytnax


    No Spacing

    We will trim (i.e. delete) all spacing between each world in the file name. This is because when you are using the system not in UTF-8 encoding system, the file name will use the string %20 to replace the space. For example

    Nike%20Inc

    In case you really want to separate 2 words inside the file name, you can put a _ between the 2 words.

    Nike_Inc


    Pascal Case

    Camel CasenikeInc
    Pascal Case (Default)NikeInc

    We will pick Pascal Case in DDM Group.


    Teamwork Task#

    Teamwork Task# is option. It will be applied only if you are working in / for Diamond Digital Marketing Group (DDM)

    Don’t forget to add the # as the prefix of the file.

    In the long-run, you can communicate and searching easily by simply inserting the teamwork task# when you are working for the same task in teamwork.com interface.

    In case there is no Teamwork Task#, unique ID from any kinds of systems will be an good alternative.


    Client Aias

    There are quite a few types of name which you can use to mention to your client , for example:


    File Title

    File title should be semantically describing the content of the file, especially in the image or video files, for example:

    Bad Example:

    IMAGE_203204242

    Good Example:

    NIKE_REVOLUTION_7_BLACK

    How details should be the file name depends on if whether the description can uniquely identify the file from others.


    Version

    Do NOT use following words to apply on versioning

    Final – You will never know the file is a final version or not. If your client revised your Final  version, your Final Version will become Final Final , which makes the version naming meaningless.

    v2 – You / your teammate / future yourself / your client, can NEVER remember what is the previous version number before he/she names the file.

    Therefore, using the Dateas the version name will be the most feasbile and easiest way. If Date (YYYYMMDD) is not enought to uniquely identify the file because you have modified the file few times in the same day, you can append Time at the Date to make it become YYMMDD_HHMM .


    Approval Status

    You may need following types of Status to identify the file:

    Approval Status – [Approved / Rejected]

    Sign Status – [Signed]

    Production Status – [Template / Instance]


    1. Only if you are working with / for Diamond Digital Marketing Group. ↩︎
  • Assign Shopify Collaborator Access Rights

    Assign Shopify Collaborator Access Rights

    Prerequisite

    1. Assignee (e.g. an Digital Marketing Agency) decides which Shopify Partner (i.e. its registering email) a/c is used to request for the permission from the Shopify Store Owner.
    2. Collaborator request code created by Shopify Store Owner.
    3. URL of the Shopify Store
    4. Agree the Permissionof the Collaborator Account between Digital Marketing Agency and the Shopify Store Owner. You can find the permission in Shopify Staff Permission article or in the Permission session below.

    Step By Step


    As an Shopify Store Owner or Admin

    1. https://shopify.com
    2. Users
    3. Security
    4. Collaborators
    5. Genearte new code
    1. Accept request1

    As an Collaborator (Assignee)

    1. https://partners.shopify.com/
    2. Stores > Add store
    3. Request access to a store
    4. <<Store URL >>
    5. <<Collaborator request code>>2
    6. Permission = Select all3

    Permssions

    1. General
      • Home
      • Order
        • Manage orders information
        • Edit orders
          • Apply discounts
        • Set payment terms
        • Charge vaulted card
        • Charge credit card
        • Export orders
        • Mark order as paid
        • Capture payments
        • Fulfill and ship
        • Buy shipping labels
        • Return orders
        • Refund orders
        • Cancel orders
        • Delete orders
        • Manage abandoned checkouts
    2. Draft orders
      • Create and edit draft orders
        • Apply discounts
      • Set payment terms
      • Charge credit card
      • Charge vaulted card
      • Mark draft orders as paid
      • Export draft orders
      • Delete draft orders
    3. Products
      • View product cost
      • Create and edit products
        • Edit product cost
        • Edit product price
      • Manage Inventory
      • Export products
      • Delete products
    4. Gift cards
      • Create and edit
      • Deactivate
      • Export gift cards
    5. Customers
      • Erase customer personal data
      • Request customer data
      • Export customers
      • Merge customers
    6. Reports
    7. Dashboards
    8. Marketing
    9. Discounts
    10. Metaobject definitions
      • View definitions
      • Create and edit definitions
      • Delete definitions
    11. Metaobject entries
      • View entries
      • Create and edit entries
      • Delete entries
    12. Manage and install apps and channels
      • Add, delete, and access any installed apps or channels
      • Approve app charges
    13. View files
      • Create files
      • Edit files
      • Delete files
    14. Online store
      • Themes
      • Edit theme code
    15. Blog posts and pages
    16. Search and navigation
    17. Domains
      • Transfer domain to another Shopify store
    18. Administration
      • Manage settings
      • Checkout
      • Locations
      • Edit permissions
        • Add and remove staff
        • Manage collaborator requests
      • External login services
      • Revoke access tokens for other users
      • View apps developed by staff and collaborators
        • Develop apps
        • Enable app development
      • Manage policies
      • Manage taxes settings
      • Manage delivery settings
    19. Finance
      • View billing details
        • Edit billing payment methods and pay invoices
      • Manage plan
      • Manage app billing
      • View Shopify Payments payouts
      • Manage other payment settings

    1. Request access to a store

    Status will be Access pending until the Shopify Store Owner accept the request.

    1. Requested approved Email4
    1. https://partners.shopify.com
    2. Stores > Log in

    1. Do this step after the assignee have sent you request ↩︎
    2. Ask Shopify Owner to provide to you ↩︎
    3. ↩︎
    4. Sent from [email protected] to Collaborator’s Email address. ↩︎
  • Checking Existing Google Tracking Code in a Website

    Definition

    Google Tracking Code is referring to any kinds of tracking code snippet which is published under Google Digital Asset’s umbrella. Google Digital Assets with tracking code snippet normally covers the Google Analytics, Google Tag Manager, Google Ads and Google Marketing Platform.


    What Problem Patterns it solve

    Avoid duplication Digital Assets creation

    Due to the staff and digital marketing agency turnover, the Google Digital Assets may probably already be created by ex-staff , ex-marketing agency, or even other staff in another department. Due to lack of information system, the created Google Digital Assets may not be known by current digital marketing staff (or even the boss), which leads to a Google Digital Assets duplication on creation. It is therefore suggested to check if there are any Google Digital Assets already created and installed in the website before next creation.

    Moreover, the Google Digital Assets should always be linked up with each other. For example, if the GA4 account is already linked up with the Google Ads account, the Google Ads account will malfunction if a totally new GA4 account is used.

    Don’t underestimate the consequence of creating a new Google Digital Assets because clients always had no idea whether they already created the Google Digital Assets or not. If you help create the new Digital Assets without checking the existing one, and at the end of the day after the client realises that they already have an existing Google Digital Assets on hand, they will definitely request to consolidate all data into 1 account. It may take double time and effort to investigate and consolidate them into one.

    Avoid duplication Digital Assets installation

    Occasionally the Google Digital Assets which are not owned by the company and are owned by the digital marketing agency will be also installed in the company’s website. From checking the existing installed checking code we can find out if there are any other Google Digital Assets owned by others that are up and running.


    When to check the existing Google Tracking Code

    1. Before creating a new Google Analytics 4 (GA4) account
    2. Before installing an existing Google Analytics 4 (GA4) account
    3. Before creating a new Google Tag Manager (GTM) account
    4. Before installing an existing Google Tag Manager (GTM) account
    5. Before creating a new Google Ads account
    6. Before installing an existing Google Ads account
    7. Before creating a new Google Marketing Platform account
    8. Before installing an existing Google Marketing Platform account

    Step by Step Guideline on how to check the existing Google Tracking Code in a website.


    Prerequisite

    Google Chrome Browser Installed

    1. Download Google Chrome Browser

    Google Chrome Extension – (Deprecated) Tag Assistant For Conversion Installed

    1. Visit Google Chrome Web Store
    2. Search (Deprecated) Tag AssistantFor Conversion
    3. Add to Chrome1


    Step By Step

    1. Visit target website in the Google Chrome Browser
    2. google chrome extension list button
    3. (Deprecated) Tag Assistant For Conversion
    1. Although in the page it suggested that the extension may soon no longer be supported because it doesn’t follow best practices for Chrome extensions, it still the best and fatest way to check out the Google Tracking Code in a website.
      ↩︎
    2. Don’t mix up the Google Ads Account ID (e.g. 424-994-4344) with the Conversion ID (e.g AW-809912345). They are using in different scenario and serving different purpose. You have no way to lookup the Google Ads Account ID to Conversion ID (or vice versa) until you logged into the Google Ads Account for checking. ↩︎
    1. Start
    2. Modal box shown in the right bottom of the screen.
    1. google chrome extension list button
    2. (Deprecated) Tag Assistant For Conversion (press again)

    Compared with Step#2 which the Deprecaed tag assistant for conversion Explorer mode is empty , you can now see each Google Tracking Code records shown in the pop up modal.


    How to interpret the records inside the Explorer mode

    Although the existing Google Tracking Code of different Google Digital Assets are shown, they do not explicitly what the Tracking Code is really referring to. Below are the lookup table which intrepret the result shown in the Explorer mode of the Chrome Extension (Deprecated) Tag Assistant For Conversion Installed.

    Digital Assets TypeText shown in (Deprecated) Tag Assistant For Conversion (Example Metric ID)Metrics Name
    Google Analytics 3Google Analytics account UA-114848777-1 was found on the pageUniversal Analytics property ID
    Google Analytics 4A Global Site Tag was found with account “G-PSW1MY7HB4”Measurement ID
    Google AdsA Global Site Tag was found with account “GT-OADWGVWD”Ads Google Tag ID
    Google AdsA Global Site Tag was found with account “AW-809912345” , OR

    Google Ads remarketing event detected for “AW-809912345”
    Conversion ID2
    Google AdsA Google Ads conversion was detected: AW-972720999/EH2jCKeYtLAVPDSU6s8DConversion ID / Conversion Label
    Google Tag ManagerA Google Tag Manager tag was found with account “GTM-B4CS4G8M”Google Tag Manager Container ID
    Campaign Manager 360A Global Site Tag was found with account “DC-4121888”Floodlight Google Tag ID
    Lookup Table between Google Digital Assets and Metric Name

    When you see the Metrics ID shown in the Google Chrome Extension(Deprecated) Tag Assistant For Conversion, although you can sure that there are associated Google Digital Assets installed in the target website, you will have no idea whether these Googe Digital Assets are owned by the website’s owner or it’s digital marketing agency. Depending on the different scenario you should act differently:

    If the Google Digital Assets are

    1. Owned by 3rd party + Client don’t have access rights – Remove the old (existing) Tracking Code of the Google Digital Assets and create a new Digital Assets and install into the target website.
    2. Owned by 3rd party + Client have access rights – Ask whether the client wants to use the existing one or create a new one.
    3. Owned by Client + Client have access rights – Use the existing one
    4. Clients have no idea whether they are owned by the Client, nor do the Client have the access rights – Ask Client to ask ex and current staff. If in turn the login and password cannot be found, the new Digital Assets should be created and installed, and meanwhile remove the old (existing) one.
  • How to Comment in Teamwork.com

    How to Comment in Teamwork.com

    Definition

    Comment in Teamwork.com can be used to response any Task , SubTask or Milestone by either assignee (i.e. collaborator) or the assignor (i.e. Project Manager) of the Task.


    How Comment in Teamwork.com looks like


    What Problem Patterns the Comment solved

    Accessability

    Not only can you use the Teamwork.com interface to place the comment, but also you can place the comment via replying by their mobile phone the comment email sent to the collaborator registered email address, which is good for the collaborator who is not always stuck to the computer.

    Task Instruction Optimisation

    All the Task Comments will be reviewed by the assignor. In case the assignee had left a feedback in the Task Comment that for some reasons he/she could not execute the task, for example, due to the lack of Login Password Credential provided in the Task Input, the assignor will update the Task Instruction Framework Template such that the same type of Task can be carried out smoothly next time. 

    In this sense, the Task Comment is acting as a media of nurturing the positive loop of optimising the quality of Task Instruction.

    As a Knowledge Repository in DDM’s Group

    Knowledge Repository means a knowledge library which stores both the theory and execution experience of carrying out a task. No matter the experience is successful or failure , they are both valuable as a failure experience can eliminate a trial and error testing of a specific task. 

    While all these theories and experiences are stored in the comment, the Knowledge Repository in DDM Group will crawl the Task comments so that the teammates can refer to this Knowledge Repository when they face the same type of task.


    Guideline on how to Comment in Teamwork.com

    While you can write whatever content you want in the comment, there are some little tricks for you to communicate well.

    Mention a specific Collaborator

    Please always mention a specific collaborator that you want him to read the comment, otherwise all the collaborators inside the loop can and will read the comment and they will be disappointed because the comment is irrelevant to some of the collaborators.

    You can mention a particular collaborator by simplying typing in the comment box like the example in below:

    @Tom

    If you want to mention the whole Company, you can type in the comment box like the example in below:

    @DDM1


    Replying previous Comment

    Unfortunately there is no nested comment in teamwork.com. (i.e. you cannot comment the comment). As an alternative, you can create a new comment and refer the previous comment that you want to reply

    1. Visit the comment that you want to reply
    2. Copy Link

    You will copy the link like below:

    https://diamonddm.teamwork.com/#tasks/21835467?c=20415136

    21835467 is the Task# , while 20415136 is the Comment# (i.e. c=)

    1. Copy the Comment URL into a new comment
    2. Press Icon Black Quote in the Comment URL

    Or alternatively you can simply copy and paste the referring text and add a Icon Black Quote as a blockquote so that the reader will understand that the Comment under the quote below will be the reply of the quoted Comment.

    Please be reminded that you should NOT blockquote the new comment you just added. You should only blockquote the text in previous commnet. Otherwise , the reader will have no idea on which paragraph is quoted from the previous comment, and which pargraph is newly written by you.


    Answering Output Request

    If the purpose of leaving the comment is for answering the request from the Output session in the Task Instruction, following rules should be complied:

    1. The number of answers should always match the number of output requests in the [Output] Session. I.e. If there is 2 Output Requests in the [Output] Session in the Task Instruction, you should always reply 2 answers in the comment.
    1. ALWAYS write the Output# (referring to the Output# in the [Output] Session in Task Instruction) PAIRING with the associated answer in the comment.2

    Output#2

    The answer of output#2 is that ……


    Comment which can only be read by DDM Group internally

    Occasionally you may want to place comment only to your teammate and don’t want your client to read that comment. You can easily do this by

    1. Privacy > Set Privacy
    2. Tick (or untick) anyone you want (or not want)

    Leave Comment via Email Reply

    Sometimes when you cannot access the Teamwork.com interface or you are outside and only have a mobile phone on hand, you can leave the Comment to the task by simply replying the Email sent from Teamwork.com regarding a specific Task.

    After you have replied the comment by sending an reply email via your Email Interface, your reply can automatically be shown in the Comment of the associated Task inside the Teamwork.com interface.


    Reply the Comment with Cap Screen or Image

    Besides attaching image files via File Attachment, you can simply directly copy and paste the cap screen or image into the Comment Box via the Teamwork.com Interface.

    DO NOT forget to wait until you can see the uploading bar shows 100% before you press Save Comment.


    Conclusion

    After you have placed the comment , as a good citizen please always type (and only type) the #Task + Comment # (e.g. #28929393c20392733) in the associated Project Whatsapp Group and mention (e.g. @Tom) the recipient that you have already placed a Comment in Teamwork to remind him/her to read the Comment.

    Good Practice of the conversation in Whatsapp message on reminding the reipcient will be as below:

    @Tom

    #28929393c20392733

    2024 Sales Report

    Please always be reminded that Whatsapp Group is acting as a reminder only. Therefore, only 3 components are supposed to be shown in the reminder Whatsapp Message:

    1. Group Participant that you want to mention
    2. #Task + Comment#
    3. Identifiable Task Topic

    Always encourge the participants to check the details via Teamwork.com Interface.


    1. Provided that DDM is the target company that you want to mention as a whole. ↩︎
    2. Imagine if there is 10 Output requests in the Output session and you didn’t enumerate which Output# you answered in the comment, how can the Assignor know which Output# you have done and which you have not? ↩︎
  • Inviting Collaborator to Join Project Management System

    Inviting Collaborator to Join Project Management System

    Definition

    Project Management System

    In DDM Group, we will adapt teamwork.com as the Project Management System, which is used by tens of thousands of orangisation in the world.


    Whom to Invite

    Administrator

    Supervisors or Project Managers in DDM Group will be invited as Administrator.

    Standard User

    Any non Administrator teammates but own an domain email address under DDM Group will be invited as Standard User.

    Collaborator

    Any Vendor , Partner or Client of DDM Group will be invited as Collaborator


    Step by Step – Inviting Collaborator to join Teamwork.com

    Invite users

    1. Invite users
    2. Add details
    3. Who would you like to invite?
      • <<First Name>>
      • <<Last Name>>
      • <<Email Address>>
    4. Which company should they belong to?
    5. Add a new company
      • <<Company Legal Name>>
    6. <<Standard user || Collaborator>>
    7. Choose projects
    8. <<Project Name>>1
    9. Send invite
    10. Send invite to one person2
    11. Wait Inviting User to accept the Email Invitation
    1. Received Inviation accepted Email.

    Invitation Accepted By User

    1. Login User Email 3
    2. Received the Email sent from [email protected].4
    1. Get Started5
    2. Start collaborating with your team today
      • Role = Team Member
      • I would like to receive news about Teamwork products, services, and events.
      • By signing up, you agree to the storing of your data. Privacy Statement.
    3. Create a password
    4. Finish Sign up
    1. Completed
    2. Please save the password somewhere safe for future login.

    People Configuration

    Configuration should be carried out for the People (i.e. the User) after that People is created.

    1. diamonddm.teamwork.com/app/people/people
    2. <<TEAMMATE_FULLNAME>>
    3. Permissions
    Permission Tab Configuration

    Permission Tab Configuration

    1. Preferences
    Permission Tab Configuration

    Teamwork.com APP Installation

    For mobility please also install the APP version of the Teamwork.com 

    1. Google Play Store
    2. Apple App Store

    Footnotes

    1. Do NOT tick the Compan Name. Tick the Project Name instead. ↩︎
    2. An email will be sent from [email protected] to the inviting users. ↩︎
    3. Email inbox of Inviting User ↩︎
    4. Email Title = You’ve been added by <<Administrator>> to collaborate on Diamond Digital Marketing (HK) Ltd ↩︎
    5. Once the user clicked the Get Started button, a new tab of the browser will be openned and the User will be brought to https://diamonddm.teamwork.com/launchpad/login/projects ↩︎
  • Access Rights – DDM Github Profile

    Definition

    Github

    GitHub is a web based platform that provides hosting for software development and version control using Git. It’s widely used for code collaboration, allowing developers to work together on projects, track changes, and manage different versions of their code. GitHub also offers features like project management, code review, and issue tracking, making it a popular choice for both individual developers and large organisations.

    DDM Github Profile

    DDM Github Profile is the Profile (account) owned by DDM


    What Problems Github Solves

    Imagine if there are 5 people is coding for a same webpage in the same time directly in the production environment.

    Software Development Collaboration


    Prerequisite of Assigning Access Rights of Github Personal

    1. The assignee (i.e. Collaborator) should have their Github Personal Profile Name ready. For example

    https://github.com/<<GITHUB_PERSONAL_PROFILE_NAME>>


    Step By Step – Assigning Access Rights of Github Personal Repository

    As a Owner

    1. GitHub
    2. Repositories
    3. <<TARGET_REPOSITORIES>>
    4. Settings > General > Access
    5. Collaborators > Manage access
    6. Add people
    7. <<GITHUB_PERSONAL_PROFILE_NAME>>
    8. Add
  • Add Another Admin in your Meta Business Suite Account

    As an Asignor (Existing Business Admin)

    As an Assignee (New Business Admin)

  • Build a Business Process Management System – Meta System Square

    Introduction

    Recall the article Build a Business Process Management System – System Index Concepts that there are 3 system index levels including System, Meta System and Meta System2 , this article is go to discuss the Meta System2 level.


    Problems in Relational Database

    To understand why there is a need in Meta System2, it should start by going through the problem patterns that we faced when using relational database to build the Business Process Management System.

    Recall the article Relationship between Human Learning and Data Structure , Relational Database is the database which is built on top of the relational data structure. For decades, even nowsaday it is the most common and popular way for us to build any the Business Process Management System, which works fine.

    But work fine does means there is no problem, it only means limited by technology, we can do nothing in old days and so we used to embrace with the problems in the relational database. And it’s new to review the problems.


    Let’s start the story with a typical business case – an Invoicing System.

    In the simplified model of an Invoicing System, at least there are 4 Tables inside the relational database :

    1. Sales Invoice
    2. Sales Invoice Order Line
    3. Product
    4. Client

    Each of the Tables will have some simple basic Properties as below:


    Sales Invoice Table’s Properties

    1. Sales Invoice #
    2. Invoice Date
    3. Total Invoice Amount
    4. Payment Due Date
    5. Client#

    Sales Invoice Order Line Table’s Properties

    1. Sales Invoice Order Line #
    2. Sales Invoice #
    3. Product Item Quantity
    4. Product Item Unit
    5. Product Item Unit Price
    6. Product Item Sub Total
    7. Product Item Name

    Product

    1. Product#
    2. Product Name
    3. Product Description
    4. Product Unit

    Client

    1. Cilent#
    2. Client Name
    3. Client Address
    4. Client Phone Number

    The Properties in the above 4 Tables are good enough for us to build a simple but functional Invoicing System. It work properly and smoothly until one day your shop is going to expand your business line from retail to wholesale. You want to have a Quotation Function on top of the Invoicing System in order to cater the request for quotation from the wholesale client.

    As an experienced system engineer like you , your intuitive thinking is that you simply add a Sales Quotation Table in your relational database. Yes it is.

    However, due to the fact that instead of an system engineer , you are also the boss of the business that you cannot stay in front of the laptop and open the No-Code platform to expand the current Invoicing System, the only way you can do is to use your mobile phone to enumerate the Properties and the metadata of the Properties (i.e. We called it Table Schema) which a Sales Quotation should have.

    After 10 hours of work, you are exhausted. You want to postpone the Sales Quotation Table expansion project to the weekend which you think to be less busy. Of course, instead of 1 weekend, the task is delayed to 4 weekends , which the wholesale order is overwhelming and you spend most of the time on tackling the back and forth of the wholesale order.

    It is ironic that while the main purpose of your business is to make profit, the overwhelming amount of the incoming sales order exactly fit your business purpose, and at the same time also is the main reason that you cannot expand your business due to the fact that these incoming sales order burnt out all your development time.  

    Of course this is a happy problem. Whether you want to overcome it or not depends on your level of ambition. If in case you are ambitous that you are not satified with the current scale and want to scale up to national level, you should have built the system to systemise and automate the workflow.


    Co-ordination in Business Process Management System Development

    Rather than the pursuit of perfectionism, due to the fact that your new wholesale business line thrives, therefore you compromise and believe that you can afford to hire a system engineer to do the hands-on coding tasks for you, and you focus on designing the blueprint of the system instead.

    When the system engineer – Anna is on board, you are excited to share to him the mighty vision of your retail and wholesale business, which he showed his support to you by asking you to provide him the blueprint and documentation the current system that you have built, so that he don’t need to reinvent the wheel.

    As you don’t want to cool down the enthusiasm of Anna, you finger crossed to provide him the blueprint within a week, which in turn for sure failed the promise again due to the fact that the wholesale incoming new business is overwhelming , as said before.

    Thinking of Building Meta System

    As expected , after Anna quit for a week, you review yourself and realise that Anna did not do anything wrong. The bottleneck of building a system is now shifting from the hands-on coding task to designing the blueprint of the system. Even a seasoned system engineer cannot acquire the knowledge domain of your industry comprehensively like you do. It is not reasonble for you to expect that the system engineer can grow the blueprint from scratch, at least not in a system engineer whom the salary you can afford.

    To summarize your failure , you deduced the problem pattern of building a system:

    1. A person can go fast, but a team can go far.
    2. If you want a team, you should place communication in 1st prority.
    3. Communication protocol is the prerequisite of communication.
    4. How to fetch the expertise of your knowledge domain from your brian, and fit them into the communication protocol is the key to speeding up.

    Having concluded these widsom in expense of your failure, you relieved and transformed. You start reading the books on how to build a meta system. And thanks to Diamond Digital Marketing Group, you figured out the BFs-WAITER Pivot Table is exactly what you are seeking for.

    After 6 months reading and practising, you master the essense of BFs-WATIER Pivot Table. You have identified much more concepts than the Invoicing System you built before. You enumerate some of the concetps as below:


    Entity

    1. Retail Client
    2. Wholesale Client
    3. Cashier
    4. Salesperson
    5. Book-keeper
    6. Shipping Agent
    7. Vendor

    Business Rules

    1. Tiered Pricing base on wholesale’s membership role
    2. Bundled Pricing to bundle the product with low stock turnover
    3. Role based discount rules based on Retail Client

    Workflow

    1. Issue Sales Quotation
    2. Sales Quotation signed back from Client
    3. Convert Sales Quotation into Sales Invoice
    4. Shipping to Client

    Information Flow

    1. Sales Invoice
    2. Blank Sales Quotation
    3. Paymenet Receipt
    4. Signed Quotation
    5. Delivery Note
    6. Thank You Email

    The Tables that are needed to be created in your relational database increase exponentially due to your ability of modelling your business process, which is a good sign.

    After your turn you enumerate all the concepts and turn them into Tables, you finally realise that there are more than 50 Tables that you should creating. Below are extract of the Tables and its extracted Properties lists below:

    1. SalesInvoice
    2. SalesQuotation
    3. SalesInvoiceOrderLine
    4. SalesQuotationOrderLine
    5. Client
    6. ClientsStaff
    7. ClientAddress
    8. ClientPhone
    9. ClientBank
    10. ClientCreditLine
    11. Product
    12. Vendor
    13. Vendor Staff
      • JobTitle
        • BDM
        • COO
        • CEO
        • MD
      • Salutation
        • Mr.
        • Ms.
      • Gender
        • M
        • F
    14. Vendor Address
    15. Vendor Bank
    16. Vendor Phone
    17. Vendor Credit Line
    18. Country
    19. District
    20. Zip Code

    Based on the extract of the Table Lists, you address the pattern that:

    1 Table = 1 Business Object

    Table is in fact an business object. Each Table represents 1 Business Object.

    Object to Property = 1 to 1 Relationship

    Each Property (i.e. Column) of an Object (i.e. Table) has a 1 to 1 relationship with the Object (i.e. Table) itself.

    When to create a new Table

    Whenever there is a 1 to Many relationships between the Object and the Property, a new Tables should be created. For example while 1 Person only have 1 Last Name, the Property LastName is 1 to 1 relationshiop between the object Person, which make the Property LastName can stay in the same Table Person. (i.e. Person.LastName)

    However , while 1 Person has Many Phone Number, a new Object Phone Number is identified and a associated new child Table PhoneNumber should be created in order to link up with the parent Table Person.

    Number of Tables increased when Business Object increased

    The relational database is weak on recording the relationships among Objects. Every time if I want to record a 1 to Many relationship , a new child Table should be created, which means that the workload of operating inside the Database will be increased.

    If there are 1,000 business objects are needed to be recorded, it means 1,000 Tables should be created. The Entity Relationship Diagram for these 1,000 Tables will be like a maze which leads the system engineer get lost very soon.

    Moreover, if there is a new system engineer onboard, it is really hard for him/her to check if the Tables that he/she want to build already existed, due to the fact that every single person may use different name to name the Table. For example, If your colleage created a Table Entity, you may have no idea what it is and you probably will create another Table called Person, which in fact is referring to the same business object.

    There is a demand on a Table of Table to record the hierarchical relationship among business objects (i.e. Tables). You start feeling the birth of system of system (i.e. Meta System2)

    Number of SQL Statement increased when Business Object increased

    On top of that , as a system engineer, you realise that you need to rewrite the SQL statement whenever a new Table is referred. For example, when you want to enumerate all the Phone Number from All Person, you should write the SQL statement in below:

    SELECT Person.Name, PhoneNumber.Number
    FROM Person
    JOIN PhoneNumber ON Person.PersonID = PhoneNumber.PersonID;

    If there are 1,000 relationships among 1,000 Tables, you may need to write 1,000 SQL statements like this because the Table Name inside each SQL statement will be different.

    Challenge on recording objects with hierarchical relationship by Relational Database.

    Even worse, what if you want to record a hierarchical relationship among Objects which the relationship chains have no start and no end?

    For example, if I want to record the categories of the products.

Diamond Digital Marketing Group